인프라 시스템 구성요소
하드웨어
- 가장 low-level에 위치
- 서버 장비 본체나 데이터를 저장하기 위한 스토리지, 전원 장치 등
- 온프레미스 시스템은 여러 대의 서버 장비로 구성
- 클라우드는 인스턴스의 하드웨어 성능을 필요에 따라 선택
- 하드웨어를 설치하는 데이터 센터의 설비(건물, 공조, 보안 설비, 소화 설비 등)도 포함
- 데이터 센터, 냉각시설, 서버 등
CPU(Central Processing Unit; 중앙 처리 장치)
- 컴퓨터에서 기억, 해석, 연산, 제어라는 4대 주요 기능을 관할하는 장치
- 직렬 처리에 최적화 된 소수의 코어로 구성
- 성능: 코어와 캐시에 영향
- 그래픽을 처리하는 데 특화덴 프로세서
- 병렬 처리에 최적화 된 작고 많은 코어로 구성
- 딥러닝이나 수치해석 등, 대량의 데이터를 고속으로 처리하는 데 활용
GPU 컴퓨팅 방식: 연산이 많이 필요한 부분을 GPU에 넘기고, 나머지 코드만을 CPU에서 처리하는 방식
RAM(Random Access Memory; 주기억장치)
- 사용자가 자유롭게 내용을 읽고 쓰고 지울 수 있는 기억장치
- 컴퓨터 전원이 유지되는 내내 CPU 연산 및 동작에 필요한 모든 내용이 RAM에 저장
- 성능: 데이터 용량과 전송 속도에 비례
- 데이터 용량: 크기에 성능 비례
- 전송 속도: 고속에 성능 비례
- 서버용으로는 주로 전력 소모가 적고, 오류 처리가 탑재되어 있는 것으로 선정
데이터 스토리지
- 데이터(애플리케이션, 네트워크 프로토콜, 문서, 미디어, 주소록, 사용자 기본 설정 등을 구성하는 세부 데이터인 디지털 정보)를 실제로 수집하고 보관하는 곳
- HDD, SSD 등
- 속도가 가장 느려 용량이나 읽기, 쓰기 속도가 시스템 전체의 속도에 영향을 주는 경우가 다수 존재
IT에서 가장 중요한 것은 데이터이며, 이런 데이터가 손실되면 안되기 때문에 대부분 고가용성을 위해 이중화 또는 다중화로 구성한다.
고가용성(High Availability): 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질
이중화(Redundancy) or 다중화: 이중화란 같은 장비 또는 시스템이 장애가 나는 것을 대비해 같은 모듈을 2개(또는 그 이상) 준비하는 것
AWS의 이중화(다중 AZ 배포)
<img src=/static/img/Study/Infra/con-multi-AZ.png width=400px>
- AWS의 RDS를 같은 Region 내 다른 가용 영역에 분산해서 이중화를 구성
- 같은 지역이라도 데이터가 나뉘어져 있어서 Master에서 문제가 생기면 Slave에서 이를 복구하여 데이터를 유지
기타 하드웨어
- UPS(Uninterruptible Power Supply; 무정전 전원 공급 장치)
- KVM 스위치
- 서버 랙
네트워크
- 사용자가 원격으로 접근할 수 있도록 서버를 연결하는 도구
- 라우터, 스위치, 방화벽, 인터넷과의 통신, 네트워크 장비 및 케이블 배선, 액세스 포인트(Access Point, AP) 등
방화벽
방화벽
보안을 위해 내부 네트워크와 외부 네트워크의 통신을 제어하고 불필요한 통신을 차단하는 것
- 패킷필터형
- 통과하는 패킷을 포트 번호나 IP 주소를 바탕으로 필터링
- 애플리케이션 게이트웨이형(프록시서버)
- 애플리케이션 프로토콜 레벨에서 외부와의 통신을 제어하는 방식
- 세션에 포함되어 있는 정보를 검사하기 위해서 기존 세션을 종료하고 새로운 세션 생성
- 속도는 느리지만 많은 검사 수행 가능
네트워크 주소
MAC 주소(물리 주소/이더넷 주소)
- 48비트 주소 할당
- 앞 24bit: 네트워크 부품의 제조 업체를 식별
- 뒤 24bit: 각 제조 업체가 중복되지 않도록 할당
- 16진수로 표기하며, 2byte씩 구분
IP 주소
- 인터넷 or 인트라넷 같은 네트워크에 연결된 장비에 할당하는 주소
구분 | IPv4 | IPv6 |
---|---|---|
주소 길이 | 32bit | 128bit |
표시 방법 | 8bit씩 4부분 10진수(0~255)로 표시 | 16bit 8부분 16진수(0000~FFFF)로 표시 |
주소 개수 | $(2^8)^4$ $\approx$ $43$ 억 | $2^{16} * 2^8$ $\approx$ $43$ 억 $^4$ |
주소 예시 | 203.252.53.55 | 2002:0221:ABCD:DCBA:0000:0000:FFFF:4002 |
주소할당 방식 | A, B, C, D 등의 클래스 단위 비순차 할당 | 네트워크 규모, 단말기 수에 따라 순차 할당 |
브로드캐스트 주소 | 있음 | 없음 (로컬 범위 내에서 모든 노드에 대한 멀티 캐스트 주소 사용) |
헤더 크기 | 가변 | 고정 |
QoS 제공 | 미흡 | 제공 |
보안 | IP Sec 프로토콜 별도 설치 | IP Sec 자체 지원 |
서비스 품질 | 제한적 품질 보장 (Type of Service에 의한 서비스 품질 일부 지원) | 확장된 품질 보장 (트래픽 클래스, 플로우 레이블에 의한 서비스 품질 지원) |
Plug & Play | 불가 (DHCP 이용 시 가능) | 가능 |
IPv6 특징
- 주소공간 확장
- 주소 공간을 128bit로 확장하여 IPv4의 주소 부족 문제를 해결
- IP 주소를 절약하기 위한 NAT(Network Address Translation)와 같은 주소변환 기술 불필요
- 새로운 헤더 포맷
- 헤더를 고정 길이로 변경
- 패킷 단편화(fragmentation) 관련 필드 제거
- 체크섬(checksum) 필드 제거
- 서비스 향상
- 헤더 내의 플로우레이블(Flow Label) 필드를 이용하여 트래픽을 효과적으로 분류할 수 있는 기능 제공
- 보안 기능
- IPv4에서 IPSec이라는 부가적 기능(add-on)을 요구
- 프로토콜 내에 보안 관련 기능을 탑재할 수 있도록 설계
- 확장 헤더를 통하여 네트워크 계층에서의 종단간 암호화를 제공
- 주소 자동 설정
- 로컬 IPv6 주소를 LAN 상의 MAC 주소와 라우터가 제공하는 네트워크 prefix에 결합하여 IP주소를 자동으로 생성
- 이동형 컴퓨터의 경우 어느 곳에서든 네트워크와 연결을 설정하면 자동으로 포워딩 주소를 설정 가능
OSI 모델
OSI 모델
국제 표준화 기구(International Organization for Standardization; IOS)에서 만든 컴퓨터의 통신 기능을 계층 구조로 나눈 모델
- 네트워크 계층을 시각화하여 특정 네트워킹 시스템에서 일어나는 일에 대해 이해 가능
- 총 7계층으로 구성
- 데이터가 네트워크로 진입할때는 위층에서 진입
- 네트워크에서 데이터를 수신할 때는 아래층에서 진입
프로토콜: 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식(언어, 방법 등)을 정의하는 규칙 체계
1. 물리 계층(Physical Layer)
- 전송 케이블이 직접 연결되는 계층(케이블을 통해 전송하는 기능)
- 전압과 전류의 값을 할당하거나 케이블, 커넥터의 모양 등 통신 장비의 물리적 전기적 특성을 규정
- Ex) LAN 케이블로 사용되는 트웨스트 페어 케이블(STP/UTP)이나 이더넷(Ethernet) 규격인 100BASE-T 또는 IEEE802.11 시리즈의 무선 통신 등
2. 데이터 링크 계층(Data Link Layer)
- 동일한 네트워크에서 인접한 두 시스템(노드) 간의 통신을 규정
- 물리 계층이 잘 동작하는지 확인하는 역할
- MAC 주소를 기반으로 동작
- 네트워크 계층에서 데이터 패킷을 받아들여 MAC 주소와 각종 제어 정보를 추가
- 데이터 단위: 프레임(frame)
L2 스위치 장비: 데이터 링크 계층에서 동작하며, 통신하고 싶은 노드가 어떤 포트와 연결되어 있는지를 MAC 주소로 판단하고 패킷을 전송하는 장비
3. 네트워크 계층(Network Layer)
- 서로 다른 네트워크 간 통신을 위한 규정
- 특정 서버로 가능 경로를 효율적으로 처리하는 라우팅(routing) 기능 존재
- IP 주소를 기반으로 동작
- 송신지에서 최종 수신지까지 데이터를 안전하게 전달하는 역할
- 제어 기법 제공
- 흐름 제어: 수신자가 혀용할 수 있는 만큼의 데이터만 보내도록 패킷 양 조절
- 오류 제어: 전송 중 분실되는 패킷을 감지하고 재전송을 요구
- 혼잡 제어: 인터넷 공간에 너무 많은 데이터그램이 존재하거나, 데이터그램이 처리 성능을 넘어서는 것을 방지
- 데이터 단위: 패킷(packet)
데이터그램: IP의 전송 단위
L3 스위치 or 라우터: 컴퓨터 네트워크 간에 데이터 패킷을 전송하는 네트워크 장치
라우팅: 네트워크에서 경로를 선택하는 프로세스
4. 전송계층(Transport Layer)
- 데이터 전송을 제어
- 데이터의 용량, 속도, 목적지 등을 처리
- 데이터 전송: 세션 계층에서 보낸 메시지를 세그먼트로 나누고 각 세그먼트의 순서 번호를 기록하여 네트워크 계층으로 전달
- 데이터 수신: 세그먼트를 조립하여 전송 오류의 검출이나 재전송을 규정
- 대표 프로토콜: TCP, UDP
5. 세션 계층(Session Layer)
- 애플리케이션 간 연결을 유지 및 해제하는 역할
- 커넥션 확립 타이밍이나 데이터 전송 타이밍 등을 규정
6. 프레젠테이션 계층(Presentation Layer)
- 데이터를 애플리케이션이 이해할 수 있도록 변환
- 데이터의 저장 형식, 압축, 문자 인코딩 등을 변환
- 데이터를 안전하게 전송하기 위해 암호화, 복호화 처리
7. 응용 계층(Application Layer)
- 최상위 계층
- 웹 브라우저 등 사용자가 직접 사용하는 애플리케이션
운영체제
- 하드웨어와 네트워크 장비를 제어하기 위한 기본적인 소프트웨어
- 클라이언트 OS : 사용자가 사용하기 쉽도록 하는데 초점
(Windows, macOS 등) - 서버 OS : 시스템을 빠르고 안정적으로 실행하는데 초점
(Linux, Unix, Windows Server 등)
리눅스
리눅스
Linux Torvalds가 개발한 Unix 호환 서버 OS
- 퍼블릭 클라우드 워크로드 90%, 세계 스마트폰의 82%, 임베디드 기기의 62%, 슈퍼컴퓨터 시장의 99% 점유율 보유
- 데스크톱 OS로 시작했으나, 서버나 모바일용으로 더욱 많이 쓰임
커널(Kernel)
OS의 코어가 되는 부분으로, 메모리 관리, 파일 시스템, 프로세스 관리, 디바이스 제어의 역할
메모리 관리
- 프로세스에 필요한 메모리를 할당 및 해제
- Swap을 통한 가상 메모리 영역 생성
Swap: 메모리가 부족하여 하드디스크와 같은 보조기억장치에 가상 메모리 영역을 만들어 사용하는 기법
프로세스 관리
- 프로세스 식별을 위해 PID(Process ID)를 붙여서 관리
- 각 프로세스에 필요한 자원을 효율적으로 할당
프로세스: 프로그램 파일에 쓰여있는 내용을 읽어서 메모리상에 처리하는데, 이때 실행 된 프로그램
디바이스 제어
- 디바이스 드라이버라는 소프트웨어를 통해 CPU, 메모리, 디스크, IO 등의 하드웨어를 제어
쉘(Shell)
- CLI의 한 종류
쉘 종류
|이름|특징| |-|-| |bash|명령 이력, 디렉토리 스택, 명령이나 파일명의 자동 완성 기능 등을 지원하는 쉘.
대부분의 Linux 시스템이나 macOS(OS X)에 표준으로 탑재되어 있다.| |csh|C 언어와 비슷한 쉘. BSD 계열 OS에서 주로 사용한다.| |tcsh|csh 를 개선한 버전으로 명령이나 파일명 등의 자동완성 기능 지원.| |zsh|bash 와 호환성이 있고 고속으로 동작하는 쉘.|
파일 시스템
파일에 이름을 붙여서 저장 위치를 표현하는 체계(파일 관리 시스템)
미들웨어
- 서버 상에서 서버가 특정 역할을 하도록 기능을 제공하는 소프트웨어