쿠버네티스

[쿠버네티스] 01. 컨테이너 인프라 환경이란?

강민강민 2022. 2. 11. 15:44

## '컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커' 책을 공부하며 정리한 글입니다.

 

 

 

컨테이너 인프라

컨테이너 인프라 환경은 말 그대로 컨테이너를 중심으로 구성된 인프라 환경입니다.

여기서 컨테이너(container)는 하나의 운영체제 커널에서 다른 프로세스에 영향을 받지 않고 독립적으로 실행되는 프로세스 상태를 의미합니다.

Fig 1. 컨테이너

모놀리식 아키텍처 vs 마이크로서비스 아키텍처

모놀리식 아키텍처(monolithic architecture)는 하나의 서비스 또는 어플리케이션에 여러 기능이 통합된 구조를 의미합니다.

반면 마이크로 서비스 아키텍처(microservices architecture)는 서비스가 하나의 목적을 지향한다는 점에서는 모놀리식 아키텍처와 동일하지만 각 개별기능들이 각각의 작은 서비스로 개발되는 모듈식 구조를 가집니다. 즉, 독립적으로 동작하는 작은 서비스들이 모여 하나의 전체를 이루고 있습니다.

 

모놀리식 아키텍처는 소프트웨어가 하나로 결합되어 있기 때문에 설계, 개발, 코드관리가 단순하고 간편하지만 수정 및 업데이트를 거칠 수록 전체 코드를 관리하여야 하기 때문에 유지보수에서 단점이 존재합니다. 마이크로 서비스 아키텍처의 경우 서비스가 모듈로 개발되기 때문에 재사용 및 유지보수에 유리한 장점이 있습니다. 하지만 개발에 있어 복잡도가 높으며 각각의 서비스 호출을 위한 네트워크 관리가 성능에 영향을 줄 수 있습니다.

 

컨테이너 인프라 환경은 일반적으로 마이크로서비스 아키텍처로 구현하기에 적합합니다. 컨테이너는 서비스 단위로 구현, 배포 및 확장에 용이하기 때문에 마이크로서비스 아키텍처의 서비스와 완벽하게 대응됩니다.

 

Fig2. 모놀리식 아키텍쳐와 마이크로서비스 아키텍처, AWS

도커 

도커(docker)는 컨테이너를 만들고 관리하는 것을 도와주는 컨테이너 도구입니다. 도커로 컨테이너를 생성 및 제거할 수 있으며, 운영체제 환경에 관계없이 동리한 결과를 보장하는 장점이 있습니다. 

쿠버네티스

쿠버네티스(kubernetes)는 다수의 컨테이너를 관리할 때 사용합니다. 특히, 컨테이너의 배포와 동작, 부하관리, 동적확장 등 다양한 기능을 자동화로 제공하기때문에 컨테이너 인프라에 필수적인 도구라고 할 수 있습니다. 

젠킨스

젠킨스(jenkins)지속적 통합(continuous integration)지속적 배포(continuous deployment)를 지원합니다. 지속적 통합과 지속적 배포는 프로그램의 빌드, 테스트, 패키징, 배포 등의 단계를 모두 자동화해 표준화 합니다. 컨테이너 인프라는 단일기능을 빠르게 개발해 각 컨테이너로 적용해야하기 때문에, 마찬가지로 아주 유용한 도구입니다.

프로메테우스와 그라파나

프로메테우스(prometheus)는 인스턴스의 상태 데이터를 수집하고, 그라파나(grafana)는 이를 시각화합니다.

 

Fig.3 컨테이너 인프라, 길벗