개발 직무에 관련 없이 실무에서 꼭 알아야 하는 IT 인프라 전반에 대해서 아주 기초적인 수준을 다룸
정확히 알지는 못하더라도 현업 업무에서의 소통을 위해 최소한 개념 정도는 알아가기
서버와 클라이언트는 네트워크를 통해 통신과 데이터를 주고 받는다.
클라이언트는 서버에 요청을 통해 정보를 확인하거나 서비스를 이용하는 장치이다.
서버는 클라이언트에게 요청 받은 정보나 서비스를 제공하는 장치이다.
서버는 언제든지 클라이언트의 요청을 받을 수 있도록 항상 대기하고 있어야 한다.
웹 서비스를 위한 서버에는 다양한 종류가 있다.
웹 서버 : 네트워크를 통해 클라이언트와 직접 연결된 서버이며, 정적 콘텐츠를 클라이언트에 전달한다.
애플리케이션 서버 : 동적 콘텐츠를 전달하는 역할을 한다. 클라이언트와 직접 연결되어있지 않고, 웹 서버나 리버스 프록시 서버로부터 요청을 전달받아 응답한다.
DB 서버 : 데이터베이스를 구동하는 서버로, 애플리케이션의 정보를 저장 및 운영한다.
리버스 프록시 서버 : 한번의 여러 클라이언트가 웹 서버를 이용하고, 다수의 서버가 존재할 때, 요청을 적절히 분배하여 효율적으로 데이터를 주고 받을 수 있도록 한다. 이러한 역할을 부하 분산이라고 한다.
포워드 프록시(캐시) 서버 : 미리 데이터를 저장해두었다가 같은 데이터에 대한 요청이 왔을 때 캐시서버에서 곧바로 데이터를 전달한다.
이렇게 생긴 서버 컴퓨터를 랙에 층층이 꽂아 사용하는 형태의 서버이다.
각 서버 컴퓨터의 높이에 따라 1U, 2U, 3U... 식으로 표기하는데, 여기서 U는 서버 컴퓨터의 높이를 말하며 약 1.75인치이다.
일반적으로 높이가 클 수록 내부에 더 많은 컴퓨터 부품을 탑재할 수 있어 더 좋은 성능을 보인다.
더 얇고 케이스가 없는 형태의 서버 컴퓨터를 촘촘히 배치한 형태의 서버이다.
일반 데스크톱 PC와 유사한 형태의 서버로 일반적으로 크기는 훨씬 크다.
냉각이 용이하고 공간이 넓어 고성능이 필요한 서버 컴퓨터에서 주로 사용한다.
2m 이상의 대형 서버컴퓨터로, 주로 대규모 서버 인프라 구축에 사용한다.
은행의 메인 서버, 군사 서버 컴퓨터와 같이 막대한 연산량이 필요하고 동시에 많은 사람이 사용하는 서버를 구축하는 곳에 사용한다.
메인프레임의 경량화 형태로 금융권 및 대기업에서 많이 사용한다.
소형 서버컴퓨터로 현재 가장 보편적으로 많이 사용하는 유형이다.
서버는 서버OS라는 서버를 위한 별도의 운영체제를 사용한다.
그 중에서도 웹서버를 위한 전용 OS나, 파일 서버를 위한 OS, 이메일 서버를 위한 OS 등 용도에 따라 OS가 다양하게 나뉜다.
네트워크는 말 그대로 그물처럼 연결된 상태를 뜻한다.
기존 메인프레임 하나로 처리하던 것을 여러 대의 단말기로 나누어 처리하기 위해 서로를 전화선으로 연결한 것이 네트워크의 시작이다.
즉 수많은 기기 들이 유무선으로 연결된 것이 네트워크이다.
과거에 모뎀에서 사용하던 방식으로 데이터 교환을 위해 1:1로 연결된 회선을 통해 두 단말기 사이에 데이터를 교환한다.
사용하는 내내 회선을 점유하기 때문에 한번에 여러 단말기가 연결될 수 없었다.
전송하는 데이터 일부에 문제가 생기면 전체 데이터가 제대로 전송되지 않을 위험이 있다.
데이터를 패킷(packet)이라는 작은 단위로 나누고 헤더(header)를 붙여 정보를 교환하는 방식이다.
패킷이 전송하고자 하는 데이터이고, 헤더는 송수신 포트 번호, 데이터 시작위치 등 데이터를 올바르게 전송하고 보안을 위한 여러 메타데이터로 구성되어 있다.
같은 회선을 다른 사용자와 함께 사용할 수 있으며, 패킷이 손상되어도 손상된 패킷만 재전송하면 된다는 장점이 있다.
네트워크 프로토콜은 패킷을 전송하기 위한 규칙을 말한다.
예를들어 HTTP(Hypertext Transfer Protocol)는 웹서버와 웹브라우저가 패킷을 교환할 때 사용하는 프로토콜이다. HTTPS는 여기에 암호화(secret)를 더해 보안을 강화한 프로토콜이다.
DNS, FTP, UDP 등 다양한 프로토콜이 존재한다.
기기 사이에서 주고 받는 데이터는 각 계층별로 처리가 된다.
한 계층의 처리가 완료되면 다음 계층으로 임무를 전달하는 방식으로 순차적 처리가 이루어진다.
OSI 참조 모델은 네트워크 프로토콜이 통신하는 구조를 7계층으로 구분한 모델이다.
송신측에서는 상위 계층에서 하위 계층으로 순차적 처리를 하며 전송할 비트를 만들고, 수신측에서는 하위 계층에서 상위 계층으로 순차적 처리를 하여 전송받은 비트를 원본 데이터로 만든다.
각각의 계층을 L1, L2, L3,..., L7로 표기하며 현업에서는 L5, L6을 제외한 5계층을 주로 사용한다.
계층별 프로토콜에 따라 데이터를 송수신하는 기기이다.
각 계층별로 동작하는 기기가 다르지만, 상위 계층에서 동작하는 기기는 하위 계층에서도 동작할 수 있다.
PC나 서버를 네트워크에 연결해주는 하드웨어이다.
흔히 말하는 랜카드가 NIC에 해당한다.
NIC는 2계층에 해당하는 신호 처리도 담당하므로, L2 역할을 하는 기기라고도 할 수 있다.
전달받은 패킷(비트)의 복사본을 연결된 다른 모든 기기에 전송한다.
분산되는 만큼 회선의 대역폭이 감소한다는 단점이 있다.
패킷을 전파로 바꾸어 송출하는 기기이다.
공유기 등 유선과 무선의 다리역할을 하는 기기가 이에 해당한다.
MAC Adress는 네트워크 상에서 각 기기를 구별 및 식별하기 위해 사용하는 물리적 주소이다.
주로 NIC에 내장되어있고, 헤더를 통해 MAC Address를 전송하여 어떤 기기에서 송신된 주소인지, 어떤 기기로 전송되어야 하는지 등을 식별할 수 있다.
단말기가 보낸 패킷(프레임)의 헤더에 있는 MAC Address를 통해 같은 네트워크의 다른 단말기로 패킷을 전송한다.
여기서 같은 네트워크란 물리적으로 같은 위치에 있는 네트워크를 말한다.
서로 다른 네트워크에 있는 컴퓨터들을 구별 및 식별하기 위해 사용하는 논리적 주소이다.
네트워크 기기가 구동되는 OS에서 주소를 부여한다.
크게 범용(Public) IP 주소와 사설(Private) IP 주소로 나뉜다.
범용 아이피 주소는 외부 네트워크와 통신하기 위해 사용한다.
사설 아이피 주소는 같은 네트워크 안에서 통신하기 위해 사용한다.
사설 아이피 주소가 필요한 이유는 일반적인 기업 환경에서는 제한 된 수의 범용 아이피 주소로 수많은 단말기의 통신이 이루어져야하기 때문이다. 각 단말기들은 보안상의 이유로 서로 독립적이어야 하므로 사설 아이피 주소를 사용한다.
다른 네트워크에 있는 다른 단말기와 패킷을 주고 받기(라우팅) 위해 사용한다.
데이터 전송에 네트워크 IP를 이용한다.
라우터에 L2 스위치를 추가한 형태의 네트워크 기기이다.
MAC Address와 Routing 주소를 모두 처리할 수 있어 여러 단말기를 연결하여 라우팅 및 패킷 전송을 할 수 있다.
IP 주소와 포트 번호를 참조하여 서버로 전송되는 트래픽을 분산하는 로드 밸런싱 기기이다.
로드 밸런싱이란 트래픽을 여러 서버로 분산 전송해 한 서버에 걸리는 부하를 줄이는 것이다. 여기서 트래픽이란 단위 시간 당 네트워크 장치에 흐르는 데이터 양을 말한다. 트래픽이 하드웨어가 수용 가능한 영역을 넘어서게 되면 장애가 발생할 수 있다.
IP 주소와 포트 번호를 참고해 미리 정의된 보안 정책에 따라 트래픽 송수신을 차단/허용하는 기기이다. 데이터 헤더에 기록된 IP 주소와 포트 번호가 방화벽 정책에 등록이 되어있을 때에만 통신이 이루어진다.
가장 기본적이면서도 보안을 위해 중요한 기기이다.
IP주소, 포트번호에 더해 애플리케이션 콘텐츠 정보(URL, 파일명, 문자열 등)를 참조해서 로드 밸런싱을 수행하는 기기이다.
기존 L4 스위치의 기능에 콘텐츠에 따라 분산하는 기능을 더한 형태이다.
클라이언트와 서버 사이에 교환되는 데이터를 L7 레벨에서 검사하고 조치하여 웹 어플리케이션 서버를 안전하게 보호하는 기기이다.
대표적으로 3가지의 보안 기능이 있다.
근거리 통신망으로 물리적으로 가까운 거리 등 한정된 범위의 네트워크
클라이언트 기기와 L2 스위치로 구성된다.
원거리 통신망으로 물리적인 거리가 매우 떨어진 곳의 네트워크를 연결한다.
모든 컴퓨터를 하나의 통신망으로 연결하고자 하여 무수히 많은 WAN으로 구성한 것이 바로 인터넷이다.
인터넷에 연결된 컴퓨터끼리 정보를 공유할 수 있는 공간이 World Wide Web이다.
LAN 환경을 라우터로 연결한 것이 하나의 WAN을 구성한다.
인터넷 상에서 가상의 전용선을 만들어 통신할 수 있게하는 기술
두 단말기를 Peer to Peer(1:1)로 연결한 뒤 이 구간의 통신을 암호화 한다.
이렇게 여러 단말기를 VPN으로 연결하면 일종의 전용 WAN을 구성할 수 있다.
기업 외부에서 기업 내부 어플리케이션을 이용하거나 보안에 민감한 데이터를 다룰 때 VPN을 사용하여 안전하게 접속이 가능하다.
또한 인터넷의 수많은 라우터들을 거치지 않아도 되므로 속도가 빠르고 보안성이 높다는 장점이 있ㄷ.
문자 그대로 비무장지대라는 뜻으로, 외부 네트워크와 내부 네트워크의 중간 지점이다.
외부 네트워크에 있는 해커의 공격으로부터 기업의 중요한 서버 및 클라이언트를 보호하기 위해 사용한다.
외부에서 방화벽을 뚫고 내부로 침입해서 DMZ에 접속하게 되어 기업 전용 WAN 또는 LAN에는 접근하지 못하도록 만든다.
반면에 내부 망에서 외부 망으로는 쉽게 접근할 수 있어, 기업 내부에서 외부망을 연결해 이용해야 할 때 사용된다.
스토리지는 저장장치를 다수 장착한 대용량의 고속 저장 장비를 말한다.
서버 및 클라이언트와 네트워크로 연결하여 사용하며, 데이터 저장 뿐만 아니라 데이터의 공유 목적으로도 사용된다.
데이터 관리 및 보호를 위한 별도의 소프트웨어를 스토리지에 탑재하여 운영한다.
RAID는 여러 디스크 중 일부에 데이터를 중복 저장하는 기술이다.
RAID에 대해 정리한 내용은 이 게시글에 있다.
말 그대로 단순히 디스크를 묶어 놓은 것을 말한다.
여러개의 디시크를 묶어 용량은 늘어나지만 성능에는 아무 영향이 없다.
일반적으로 개별 디스크보다 더 큰 용량의 데이터를 저장해야할 때 사용한다.
또한 기존 스토리지의 용량이 한계에 달했을 때 디스크를 늘릴 수 없을 경우 새 스토리지 하드웨어를 JBOD 식으로 추가해 연결하는 방법을 사용할 수 있다.
서버와 클라이언트를 전용 케이블을 통해 직접 연결한 스토리지이다.
전송 속도가 가장 빠르고, 서버에 설치된 파일 시스템을 직접 이용해 관리가 가능하다.
데스크톱 PC에서 외장 하드디스크를 사용하는 것과 유사하다.
서버와 클라이언트를 네트워크를 통해 연결한 스토리지로, 연결을 위한 스위치가 필요하다.
기기간 데이터 공유를 위한 파일 서버 용도로 주로 사용된다.
파일 관리 주체가 서버인 DAS와 달리 NAS는 스토리지에 설치된 전용 OS를 사용한다. NAS 자체가 저장공간에 CPU와 RAM까지 갖춘 하나의 서버 컴퓨터이기 때문에 스토리지 외 다양한 서버 용도로도 사용할 수 있다.
스위치를 거쳐야 하므로 규모가 커질수록 데이터 전송속도가 느려진다는 단점이 있다.
NAS의 속도를 보완하기 위해 나온 방법으로, UTP 케이블 대신 광케이블을 사용해 훨씬 더 빠른 속도로 데이터를 송수신하는 고성능 스토리지이다.
스토리지 단독으로는 데이터를 저장하는 역할만 수행하고, 서버를 통해 읽기-쓰기가 가능하다 (서버 종속성)
데이터를 블록 형태로 저장하여 블록 스트로지라고도 한다.
윈도우의 파일 시스템처럼 데이터를 파일과 폴더로 이루어진 계층 구조에 저장한다.
데이터 양이 늘어날수록 성능이 떨어진다는 단점이 있다.
NAS에서 주로 사용하는 유형이다.
데이터를 일정한 크기의 블록으로 나누어 저장한다.
각 블록은 독립적이기 때문에 하나의 파일을 여러 블록으로 쪼개어 여러 디스크에 분산 저장할 수 어 읽기/쓰기 성능에 유리하다.
대규모 트랜젝션 등 규모가 큰 정형 데이터 처리에 주로 활용한다.
SAN에서 주로 사용하는 유형이다.
데이터를 오브젝트(객체)라는 개별 데이터 단위로 분산 저장한다.
오브젝트는 데이터의 실제 주소, 파일 종류, 작성일, 작성 기기 등이 포함되어 있으며 전체 파일에 접근하지 않아도 메타데이터를 통해 신속한 검색이 가능하다.
비정형 데이터 저장에 알맞아 퍼블릭 클라우드에서 주로 활용한다.
단 오브젝트의 수정이 불가능해 정형 데이터에서는 불리하다.
텍스트 형태의 데이터를 말한다.
미리 정해놓은 형식과 구조에 따라 고정된 필드에 저장한다.
사진, 음성, 동영상, PDF 파일 처럼 그냥 열어서 수정할 수 없는 데이터이다.
미리 정의된 구조 역시 없다.
백업은 데이터를 임시로 다른 장치에 저장하여 문제가 있을 때 복구 할 수 있도록 준비하는 것이다.
전체 데이터를 백업하는 풀 백업(Full Backup)과, 기존 데이터에서 새롭게 추가된 부분만 백업하는 증분 백업이 있다(Incremental Backup).
일반적으로 긴 주기를 갖고 풀 백업을 실시하고, 훨씬 짧은 주기로 증분 백업을 실시하는 등 병행하여 사용한다
백업의 종류 중 하나로 특정 시점의 스토리지에 저장된 파일을 포착해 보관하는 기술이다.
백업된 파일을 가리키는 스냅샷 포인터를 통해 백업 파일에 접근해 복구가 가능하다.
스냅샷에도 크게 두 가지 종류가 있다.
파일에 쓰기 작업이 발생했을 때
1. 쓰기 작업 전 해당 파일을 새로운 스냅샷 공간에 복사한 후 스냅샷 포인터가 가리키도록 한다.
2. 쓰기 작업을 실시한다.
총 2번의 쓰기 작업이 필요하다 (복사도 쓰기 작업이므로)
파일에 쓰기 작업이 발생했을 때
1. 스냅샷 포인터가 현재 파일을 가리키도록 한다.
2. 새로운 공간을 만들어 쓰기 작업이 된 새로운 파일을 작성한다.
총 1번의 쓰기 작업만 있으면 되어 Copy-on-write보다 성능면에서 유리하다.
온프레미스는 기업이 자체 시설에서 보유하고 직접 유지관리하는 프라이빗 데이터 센터를 말한다.
3 Tier 아키텍처는 애플리케이션 운영환경을 컴퓨팅(서버)과 스토리지 그리고 이를 연결하는 네트워크로 구성한 전통적인 아키텍처를 말한다.
올프레미스와 애플리케이션을 연결하기 위한 아키텍처이다.
가상화는 하드웨어의 물리적인 성능을 최대한 효율적으로 사용하기 위한 기술이다.
일반적으로 서버는 안정성을 위해 서버 자원의 일부만을 사용하고, 대부분의 자원을 유휴 자원으로 남겨놓는다.
이는 사실 하드웨어적인 효율이 많이 떨어지는 방법이기 때문에 가상화를 사용해서 유휴 자원을 보다 효율적으로 사용하기 위한 기술이다.
Hypervisor라는 가상 머신(Vitual Machine)을 생성하여 각 가상머신마다 개별적인 OS를 운영하는 기술이다.
서버의 컴퓨터 자원을 여러개로 쪼개 각각 어플리케이션을 사용할 수 있다.
서버에서 클라이언트에 업무 환경을 제공하는 기술이다. 이 때, 클라이언트에서 작업한 파일은 모두 서버에만 저장된다.
주로 보안상의 이유로 클라이언트에 데이터가 남으면 안될 때 데스크탑 가상화를 이용한다.
다수의 물리적 네트워크를 하나의 가상 네트워크로 구성해 사용하는 기술이다.
각각의 네트워크 하드웨어가 제공하는 네트워크들을 모두 별도로 관리하는 것보다 이들 위에 가상 네트워크를 하나 쌓아 하나의 네트워크처럼 취급하여 관리하는 것이 효율적인 이점이 많아 사용한다.
물리 서버의 스토리지와 디스크를 하나의 가상 스토리지 풀로 묶어서 하나의 디스크처럼 사용하는 기술이다.
클라이언트에서는 마치 하나의 디스크처럼 접근할 수 있어 사용이 용이하다.
3 Tier 아키텍처에서 컴퓨팅(서버)와 스토리지 네트워크를 전체를 가상화시켜서 단일 시스템으로 운영하는 방식을 말한다.
각 단일 시스템은 네트워크를 통해 연결되므로 결과적으로 2 Tier 아키텍처가 된다.
기존 3 Tier 아키텍처는 규모가 커질 수록 VM 상의 어플리케이션 서버와 스위치, 컨트롤러, 스토리지 등 많은 단계를 거쳐야해 병목 현상이 발생한다. 이로 인해 자원을 늘려도 성능은 선형적으로 증가하지 않는 문제점이 있었다.
하지만 HCI를 통해 스토리지와 서버를 붙여 놓음을 통해 거쳐야 하는 장비를 줄이고 가상화를 통해 마치 하나의 거대한 스토리지 풀처럼 사용하여 분산 처리를 용이하게 할 수 있다.
결론적으로 자원이 늘어도 성능이 선형적으로 증가하여 3 Tier 아키텍처에 비해 하드웨어 성능을 훨씬더 효율적으로 사용할 수 있다.
SDC(서버 가상화) + SDS(스토리지 가상화) + SDN(네트워크 가상화) + Management Platform 소프트웨어로 구성된 시스템을 이용해 데이터 센터 구성 요소의 모든 것을 통합 관리하는 방식이다.
무엇보다도 가상화된 자원을 통합 관리할 수 있는 Management Platform 소프트웨어가 가장 중요하다.
클라우드는 IT 인프라 자원을 직접 보유해서 사용하는 것이 아닌, 거대 데이터 센터를 갖고 있는 다른 기업의 IT 인프라 자원을 빌려서 쓰는 것을 말한다.
데이터 센터의 관리 역시 데이터 센터를 갖고 있는 기업이 담당하기 때문에 데이터센터를 직접 유지관리하는 비용이 발생하지 않는다는 장점이 있다.
그러나 자원을 빌려 쓴 것 만큼의 클라우드 비용을 월 과금 형태로 지불해야 한다.
호스팅은 IDC의 특정 서버 자원을 쪼개어 사용한다.
코로케이션은 IDC의 특정 서버 하나 전체를 빌려서 사용한다.
서버 전체를 그대로 빌려 사용하기 때문에 높은 성능과 안정성의 이점이 있지만 비용이 비싸다.
호스팅과 코로케이션은 둘 다 자원 변경을 위해 OS 설치 등 별도 세팅이 필요하여, 빠른 대응이 어렵다는 단점이 있다.
클라우드는 사용자가 원하는 만큼 사용하는 정도를 변경할 수 있다. (일부만 빌리거나, 전체를 빌리거나 둘 다 가능)
또한 호스팅 코로케이션과 달리 실시간으로 필요한 자원의 수를 변경할 수 있어 유연한 대응이 가능하다.
IT 인프라 자원만을 빌려다 쓰는 방식이다.
기업에서 사용하고 싶은 OS, 소프트웨어 등은 직접 설치해야 한다.
OS까지 설치된 환경을 빌려 쓰는 방식이다.
OS위에 애플리케이션을 직접 설치해 사용할 수 있다.
기본 환경에 더해 소프트웨어까지 전부 제공받아 사용하는 방식이다.
Microsoft 365, Google Work space, Zoom 등이 여기에 해당한다.
사실 보안 기술, 개발 방법론, 인프라 장애 등 정리하지 못한 것이 많은데.. 여기까지 정리하는데도 너무 오랜 시간을 소요했다.
원래는 이틀에 걸쳐서 배우는 과정이라는데, 하루만에 진도를 나가다보니 자세히 배우지 못한 부분이 많아 다소 아쉬움이 남는다.
추후 중요한 부분 특히 컨테이너와 도커 부분은 별도로 심도있게 공부하도록 하자