컨테이너 인프라 환경이란#
- 컨테이너 인프라 환경은 컨테이너를 중심으로 구성된 인프라 환경이다.
- 컨테이너: 하나의 운영체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태
- 컨테이너는 가상화 상태에서 동작하는 프로세스보다 가벽고 빠르게 동작한다.
모놀리식 아키텍처#
- 모놀리식 아키텍처: 하나의 큰 목적이 있는 서비스 또는 애플리케이션에 여러 기능을 통합돼 있는 구조를 의미한다.
- 장점: 소프트웨어가 하나의 결합된 코드로 구성되기 때문에 초기 단계에서 설계하기 용이하며 개발이 좀 더 단순하고 코드 관리가 간편하다.
- 단점: 서비스를 운영하는 과정에서 수정이 많을 경우, 어떤 서비스에서 이뤄진 수정이 연관된 다른 서비스에 영향을 미칠 가능성이 커진다.
마이크로서비스 아키텍처#
- 마이크로서비스 아키텍처: 개별 기능을 하는 작은 서비스를 각각 연결한다.
- 서비스별로 보안, 인증 등과 관련된 기능이 독립된 서비스를 구성하고 있으며 다른 서비스들도 독립적으로 동작할 수 있는 구조이다.
- 장점: 개발된 서비스를 재사용하기 쉽고, 향후 서비스가 변경됐을 때 다른 서비스에 영향을 미칠 가능성이 줄어들며 사용량의 변화에 따라 특정 서비스만 확장할 수 있다.
- 단점: 모놀리식 아키텍처보다 복잡도가 높으며 각 서비스가 서로 유기적으로 통신하는 구조로 설계되기 때문에 네트워크를 통한 호출 횟수가 증가해 성능에 영향을 줄 수 있다.
- 컨테이너 인프라 환경은 특히 마이크로서비스 아키텍처로 구현하기에 적합하다.
- 컨테이너 인프라 환경에서는 컨테이너를 서비스 단위로 포장해 손쉽게 배포하고 확장할 수 있다.
- 컨테이너 인프라 환경에서 제공하는 컨테이너는 마이크로서비스 아키텍처의 서비스와 1:1로 완벽하게 대응하며, 이후 소개할 도구들을 이용하며 도입, 설계, 운영 비용이 감소하고 생산성이 향상된다.
컨테이너 인프라 환경을 지원하는 도구#
- 컨테이너 환경에서 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 도구
- 컨테이너 도구는 도커 외에도 컨테이너디(containerd), 크라이오(CRI-O), 파드맨(Podman) 등이 있지만, 현업에서 가장 많이 사용하는 소프트웨어는 도커이다.
쿠버네티스#
- 다수의 컨테이너를 관리하는 데 사용한다.
- 컨테이너의 자동 배포와 배포된 컨테이너에 대한 동작 보증, 부하에 따른 동적 확장 등의 기능을 제공한다.
- 컨테이너 관리 도구는 도커 스웜(Docker Swarm), 메소스(Mesos), 노마드(Nomad) 등도 있지만, 오직 쿠버네티스만이 급격한 상승세를 보이고 있다.
젠킨스#
- 지속적 통합과 지속적 배포를 지원한다.
- 지속적 통합과 지속적 배포는 개발한 프로그램의 빌드, 테스트, 패키지화, 배포 단계를 모두 자동화해 개발 단계를 표준화한다.
- 지속적 통합과 배포를 위한 도구는 뱀부(Bamboo), 깃허브 액션(Github Action), 팀시티(Teamcity) 등도 잇지만, 젠킨스가 가장 유명하고 대표적이다.
프로메테우스와 그라파나#
- 프로메테우스는 상태 데이터를 수집하고, 그라파나는 프로메테우스로 수집한 데이터를 관리자가 보기 좋게 시각화한다.
- 컨테이너 인프라 환경에서는 많은 종류의 소규모 기능이 각각 나누어 개발되기 때문에 중앙 모니터링이 필요하다.
- 프로메테우스와 그라파나는 컨테이너로 패키징돼 동작하며 최소한의 자원으로 쿠버네티스 클러스터의 사앹를 시각적으로 표현한다.
- 모니터링 데이터 수집 도구는 프로메테우스 외에도 데이터독, 인플럭스DB, 뉴 렐릭 등이 있지만, 오픈 소스를 활요하는 기업은 프로메테우스 외 다른 선택지가 없을 정도로 가장 탁월한 효율을 자랑한다.
- 데이터를 시각화하는 도구는 그라파나 외에도 키바나, 크로노그래프 등이 있으나 그라파나와 키바나가 시장을 양분한 상태이다.
- 하지만 키바나는 프로메테우스와 연결 구성이 복잡하므로 프로메테우스를 사용할 때는 간결하게 구성할 수 있는 그라파나를 선호한다.
comments powered by