본문 바로가기

IT/Infra

웹 서비스의 인프라 구성

안녕하세요. 잇킹 시도르입니다.

프로젝트를 하면서 자신이 맡은 파트가 아니면 사실 신경 쓰기가 쉽지 않습니다. 특히 전체적인 인프라 구성에 대해 알아야 할 필요성을 느끼기도 어렵고요. 저 또한 마찬가지입니다. 특히 이전에는 인프라팀 등의 지원으로 신경을 잘 쓰지 않았었습니다. 그런데 클라우드 시대가 되면서 바뀌기 시작했죠. 인프라 구성이 쉬워지는 만큼 전반적인 지식을 알아야 할 필요성이 생겼습니다. 더 이상 한정된 팀만의 역할이 아니게 되었죠. 그래서 웹 서비스의 전반적인 인프라에 대해 간략하게 정리하고 합니다. 참고 도서는 <인프라 엔지니어링 첫걸음>으로 했습니다.

 

 

웬 서비스의 구성

 

 

1. 코로케이션

데이터 센터,  사무실처럼 서버 또는 네트워크 장비를 배치하는 장소입니다. 최근에는 클라우드에 서버를 배치하고 있습니다. 데이터 센터는 내진, 화재와 같은 여러 재해로부터 대책이 세워져 있고 보안 관리도 철저합니다. 그리고 지리적인 위치도 중요하고요. 클라우드를 사용하게 되면 데이터 센터를 가지 않는 대신 BCP(Business Continuity Planning : 기업이 자연재해나 테러와 같은 긴급 사태가 일어나도 사업을 중단하지 않거나 빠른 복구를 할 수 있는 계획)와 응답 시간에 우선순위를 둡니다. 

AWS 이용을 한다면 이전에는 도쿄 등의 리전을 사용하면서 응답시간을 고려했지만 2019년부터 서울 리전이 생긴만큼 지리적인 위치는 고려 대상이 아니겠네요. 

 

 

2. 네트워크

데이터 센터에서 제공하는 회선을 주로 사용합니다. 혹은 회사 내부에서 회선을 정하기도 하고요. 최근에 프로젝트에서 점검하다 보니 비용 때문에 네트워크 속도 이슈도 있었습니다. 시스템이 내부 사용이 주목적일 때는 저비용의 느린 네트워크를 사용해도 어떻게든 운영해갔는데 타 지역으로 인터페이스를 진행해야 되는 상황이 되면서 이슈가 생기더라고요.

클라우드 환경에서는 사업자가 제공하는 회선을 사용하면 되므로 고려 대상은 아니겠네요.

 

 

3. 하드웨어

네트워크 장비 

- 라우터 : 네트워크를 라우트(어떤 곳을 경유하는지 경로를 제어) 하는 것.

- 스위치 : 네트워크를 분배하는 것

  ☞L2 스위치 : 같은 세그먼트 내부의 것들을 연결하는 것.

      OSI 7 계층 중 계층 2인 데이터 링크 계층을 이해하고 처리 >> MAC 주소 기반으로 패킷 처리

  ☞L3 스위치 : 각각의 네트워크를 연결하는 것으로

      계층 3(네트워크 계층)을 이해하고 처리 >> IP 기반으로 패킷 처리

 

물리 네트워크와 논리 네트워크 분리

물리 네트워크 장비의 물리적인 특성에서 따라오는 제약을 해결하기 위해 SDN이라는 방법이 나왔습니다. 소프트웨어에 의해 네트워크를 관리하는 것으로 요구가 있을 때 하드웨어를 설치하고 네트워크를 구축한다는 흐름을 바꿔놓았습니다. 클라우드를 떠올리면 좋겠네요.

 

서버 장비

x86 64비트 머신과 같이 어떤 머신을 사용할지? 어떤 CPU와 메모리를 넣을지? SSD를 사용할지 어떤 것을 사용할지 등의 결정이 필요합니다.

 

저장소

- DAS : Direct-Attached Storage. 서버에 연결하는 거대한 디스크 배열입니다.

     단순하게 서버에 연결하는 거대한 하드 디스크라고 생각하면 될 듯합니다.

- NAS : Network Attached Storage.

 

 

4. OS 선택

하드웨어와 애플리케이션의 중간 다리 역할. 오픈소스 VS 상용 OS로 구분되며, 리눅스와 윈도우 등이 있겠네요. 대부분 리눅스를 사용하게 됩니다. 가장 큰 이유는 오픈소스로 무료라는 점이라고 합니다. 또한 GUI가 아니다 보니 접하기는 어렵지만 그게 리소스를 다른 곳에 사용할 수 있는 장점이라고도 하네요. 리눅스 명령어가 익숙하지 않은 저는 아직 리눅스 다루기가 어렵습니다.... 하지만 콘솔 기반이다 보니 익숙해지면 자동화나 관리에 있어서 장점을 가진다고 하더라고요.

 

 

5. 미들웨어와 애플리케이션 실행 환경

OS와 애플리케이션 사이의 계층으로 이 2개의 계층을 나누기는 애매하다고 합니다. 아파치나 톰캣부터 WAS, 유니티, 루비 등이 해당 계층에 속하네요. 애플리케이션과 DB를 연결해주는 소프트웨어어도 DB 미들웨어이며 ODBC 등이 있을 것입니다. 미들웨어는 이름부터 Middle(중간) Ware(소프트웨어)의 합성어이니 머라고 딱 정의하기도 애매하지만 저는 접착제? 연결제? 라는 것으로 정의해야 되겠네요. 

 

지금까지 전반적인 인프라 구성에 대해서 학습한 내용을 정리했습니다. 인프라가 전체적으로 어떻게 나누어지는지, 회의 때나 어디선가 봤던 용어나 이름이 어느 계층에 속했던 건지? 내가 더 집중적으로 알아야 할 계층은 어디인지 판단하는데 도움이 되었으면 합니다.

 

이상입니다!!!