시스템과 인프라 기초 지식

5 minute read

시스템 기반의 기초 지식

시스템 기반이란 애플리케이션을 가동시키기 위해 필요한 하드웨어나 OS, 미들웨어 등과 같은 인프라
하드웨어
시스템 기반을 구성하는 물리적인 요소로서 서버 장비 본체나 데이터를 저장하기 위한 스토리지, 전원 장치 등
네트워크
원격에서 Access할 수 있도록 서버들을 연결하기 위한 요구사항.
라우터, 스위치, 방화벽 등과 같은 네트워크 장비나 그것들을 연결하기 위한 케이블 배선 등도 포함
OS
하드웨어나 네트워크 장비를 제어하기 위한 기본 Software로 하드웨어의 리소스나 프로세스를 관리
미들웨어
양 쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트 웨어
표준화된 인터페이스 제공 가능, 다양한 환경 지원, 분산된 업무를 동시 처리 등 사용했을 경우 이점이 많다.

온프레미스(on-premises)
자사에서 데이터 센터를 보유하고 시스템 구축부터 운용까지를 모두 수행하는 형태
초기 시스템 투자에 드는 비용 부담이 크며, 시스템 가동 후의 운용에 드는 비용도 시스템 이용량과 상관없이 일정 금액을 부담해야 한다.
다음과 같은 상황에서 사용

  • 높은 가용성이 요구되는 시스템
  • 기밀성이 높은 데이터를 다루는 시스템
  • 특수한 요구사항이 있는 시스템

클라우드
인터넷을 경유하여 불트정 다수 혹은 특정 기업 그룹에게만 제공되는 서비스
서버나 네트워크 등 인프라와 관련된 초기 투자가 필요 없다.
다음과 같은 상황에서 사용

  • 트래픽의 변동이 많은 시스템
  • 재해 대책으로 해외에 백업을 구축하고 싶은 시스템
  • 서비스를 빨리 제공하고 싶은 시스템



하드웨어와 네트워크 기초 지식

CPU
프로그램의 설계나 처리 등을 수행하는 전자회로 부품. 코어수가 ㅇ많을 수록 연산을 동시에 처리 가능
메모리
CPU가 직접 Access할 수 있는 기억장치
메모리는 기억영역 이므로 데이터 용량이 크거나 데이터의 전송 속도가 고속일수록 고성능이지만, 서버용으로는 전력 소모가 적고 오류 처리가 탑재되어 있는 것을 선택
스토리지
데이터베이스에 기록하는 데이터 등과 같은 영구적인 데이터를 저장하는 디바이스로, 보조 기억장치라고도 한다.
MAC 주소
네트워크 인터페이스 카드나 무선 LAN 칩과 같은 네트워크 부품에 물리적으로 할당되는 48비트 주소
IP 주소
인터넷이나 인트라넷과 같은 네트워크에 연결된 컴퓨터나 네트워크 장비에 할당되는 식별 번호
OSI 7계층

국제 표준화기구(ISO)가 책정한, 컴퓨터의 통신 기능을 계층구조로 나눈 개념 모델
응용 계층
웹의 HTTP나 메일 전송을 하는 SMTP 등과 같은 애플리케이션에 특화된 프로토콜
표현 계층
데이터의 저장 형식이나 압축, 문자 인코딩과 같은 데이터의 표현 형식을 규정
세션 계층
케넥션 확립 타이밍이나 데이터 전송 타이밍을 규정한다.
전송 계층
데이터의 전송을 제어, 전송 오류의 검출이나 재전송을 규정한다.
네트워크 계층
서로 다른 네트워크 간에 통신을 하기 위한 규정
데이터 링크 계층
동알한 네트워크 안에 있는 노드 간의 통신을 규정
물리 계층
통신 장비의 물리적 및 전기적 특성을 규정

방화벽
내부 네트워크와 외부와의 통신을 제어하고, 내부 네트워크의 안전을 유지하기 위한 기술

  • 패킷 필터형: 통과하는 패킷을 포트번호나 IP 주소를 바탕으로 필터링 하는 방법
  • 애플리케이션 게이트 웨이형: 애플리케이션 프로토콜 레벨에서 외부와의 통신을 대체 제어



OS(Linux) 기초 지식

Linux
보안에 뛰어나며 안정적으로 작돈된다는 특징을 갖고 있기 때문에 각종 서버에서 널리이용되고 있다.
x86뿐만 아니라 다른 여러 플렛폼에서도 작동
오픈소스이므로 누구나 수정 밍 재배포 할 수 있다.

Linux 커널
OS의 코어가 되는 부분을 의미한다. 메모리 관리, 파일 시스템, 프로세스 관리, 디바이스 제어 등 OS로서 하드웨어나 어플리케이션 소프트 웨어를 제어하기 위한 기본적 기능을 갖고 있는 소프트 웨어

  • 디바이스 관리: 하드웨어를 디바이스 드라이버라는 소프트 웨어를 이용하여 제어
  • 프로세스 관리: Linux 커널은 프로세스에 PID라는 식별자를 붙여 관리하고 CPU를 효율적으로 할당하는 역할을 한다.
  • 메모리 관리
  • 프로그램/데이터를 물리 메모리에 효율적으로 할당 및 실행이 끝난 프로세스가 사용하던 메모리 영역을 해제.
  • 메모리에는 용량의 제한이 있으므로 메모리의 물리적인 욜량을 초과하는 프로그램/데이터를 전개할 때는 하드디스크와 같은 보조기억장치에 가상 메모리 영영(Swap)을 만든다.
  • Linux 커널을 조작하기 위해서 Shell을 사용한다.
    Shell의 종류
이름 특징
bash 명령 이력, 디렛토기 스택, 명령 변환 기능, 명령이나 파일명의 자동보안 기능 등을 지원하는 고기능 쉔
csh C언어와 매우 비슷한 쉘로, BSD 계열 OS에서 주로 이용
tcsh csh를 개선한 버전으로 명령이나 파일명 등의 자동보안 기능을 갖고 있다.
zsh bash와 호환성이 있는 쉘로, 고속으로 작동하는 것이 특징


Linux 파일 시스템
파일 시스템은 Linux에서 하드디스크나 USB 메모리, CD, DVD 등과 같은 데이터에 엑세스하기 위한 장치
Linux 커널은 VFS(Virtual File System: 가상 파일 시스템)라는 장치를 사용하여 데이터에 대한 투과 액세스를 가능하게 하고 있다
Linux의 주요 파일 시스템

이름 설명
ext2 Linux운영체제에서 널리 이용되던 파일 시스템
ext3 Linux 커널 2.4.16부터 사용 가능
ext4 확장 기능을 사용하지 않는 경우에 한해 ext3으로 마운트할 수 있다.
tmpfs Unix 계열 OS에서 임시 파일을 위한 장치
UnionFS 여러 개의 디렉토리를 겹처서 하나의 디렉토리로 취급할 수 있는 파일 시스템
ISO-9660 CD-ROM의 파일 시스템
NFS Unix에서 이용하는 분산 파일 시스템 및 그 프로토콜


Linux 디렉토리 구성
디렉토리 목록은 FHS(Filesystem Hierarchy Standard)라는 규격에 의해 표준화 되어 있다. 현재 대부분의 주요 배포판은 이 FHS를 바탕으로 디렉토리를 구성

이름 설명
/bin 기본 커맨드를 저장하는 디렉토리. 특권 사용자, 일반 사용자 모두 이용하는 명령들이 배치
/boot OS의 시작에 필요한 파일을 배치하는 디렉토리
/dev 하드디스크, 키보드, 디바이스 파일을 저장하는 디렉토리
/etc OS나 애플리케이션이 작동하는 데 필요한 설정 파일이 저장되어 있는 디렉토리
/home 일반 사용자의 홈 디렉토리. 시스템 이용자가 자유ㄹㅂ게 사용할 수 있는 디렉토리.
/proc 커널이나 프로세스에 관한 정보가 저장되어 있는 디렉토리
/sbin 시스템 관리용 마운트가 저장되어 있는 디렉토리
/tmp 일시적으로 사용하는 파일 등을 저장하는 임시 디렉토리. 서버를 재시작하면 사라져 버린다.
/usr 각종 프로그램이나 커널 소스가 저장되는 디렉토리
/var 시스템의 가동과 함께 변화하는 파일을 놓아두는 디렉토리


Linux 보안 기능

  • 계정에 대한 권한 설정
    Linux에서는 시스템을 이용할 수 있는 사용자 계정에 권한을 설정할 수 있다. 권한은 시스템 전체를 관리할 수 있는 특권 사용자인 ‘root’와 그 외의 일반 사용자가 있다.
  • 네트워크 필터링을 사용한 보안 기능
    Linux에서는 네트워크를 경유하여 멀티유저가 이용하는 것을 전제로 한 OS이기 때문에 네트워크 관려 기능이 풍부하다.
  • iptables: 패킷 필터링 및 네트워크 주소 변환(NAT)
  • 패킷 필터링: 패킷이 헤더 부분을 보고 조건과 일치하면 설정한 액션을 수행하는 것
  • SELinux: Permission에는 ‘오너’, ‘그룹’, ‘기타’ 에 대해 각각 ‘읽기’, ‘쓰기’, ‘실행’허가를 설정할 수 있다.



미들웨어 기초 지식

미들웨어란 OS와 업무 처리를 수행하는 애플리케이션 사이에 들어가는 소프트웨어
웹 서버/ 웹 애플리케이션 서버
웹 서버란 클라이언트의 브라우저가 보내온 HTTP 요청을 받아, 웹 콘텐츠(HTML, CSS 등)를 응답으로 변환하거나 다른 서버사이드 프로그램을 호출하는 기능을 갖고 있는 서버
ex) Apache, Internet, Nginx
데이터 베이스 서버
시스템이 생성하는 다양한 데이터를 관리하기 위한 미들웨어
데이터의 검색, 등록, 변경, 삭제와 같은 기본 기능 외에, 트랜잭션 처리 등도 포함
ex) MySQL, PostgreSQL, Oracle Database
NoSQL
RDBMS와는 다른 새로운 방식을 통틀어 일컫는 말
병렬분산처리나 유연한 스키마 설정 등이 특징으로, 주요 방식으로는 KVS나 Document 지향 데이터 베이스, XML 데이터 베이스등이 존재
ex) Redis, MongoDB, Apache Cassandra
시스템 감시 툴
시스템을 안정적으로 가동시키기 위해 시스템이 어떤 상태로 가동되고 있는지를 감시하기 위한 툴
ex) Zabbix, Datadog, Mackerel

인프라 구성 관리 기초 지식

인프라 구성 관리
인프라를 구성하는 하드웨어, 네트워크, OS, 미들웨어, 애플리케이션의 구성 정보를 관리하고 적절한 상태로 유지하는 작업
기존 인프라 구성은 온프라미스 환경에서 인프라를 구성하여 구성관리를 하면서 오래 계속 사용하였다.
현재는 클라우드 시스템의 등장과 다양한 분산 기술 덕분에 인프라의 구축방법이 필요하면 구축하고 불필요하면 폐기할 수 있게 변하였다.
또한 최근에는 프로그램 코드에 적혀 있는 내용대로 자동으로 설정을 해주는 장치를 도입하여, 그 프로그램을 누가 실행해도 똑같은 상태의 인프라 환경을 구축할 수 있는 환경을 도입한다.
이와 같이 인프라의 구성을 코드로 관리해 가는 것을 Infrastructure as Code라고 하며 Docker에서는 Dockerfile이라는 파일에 인프라의 구성 정보를 구성할 수 있다.
ex) Vagrant, Chef, Kubernetess



참조: 완벽한 IT 인프라 구축을 위한 Docker
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Categories:

Updated:

Leave a comment