본문 바로가기
기록이 하고싶어서/PM 생존기 : 기획과 개발

쿠버네틱스(Kubernetes, k8s) > 애플리케이션의 컨테이너화 개념정리

by 김찬란 2024. 10. 30.


Kubernetes, k8s, 쿠버네틱스

구글에서 개발한 오픈소스 컨테이너 오케스트레이션 플랫폼*

컨테이너 오케스트레이션 플랫폼*
:: 애플리케이션을 작고 독립적으로 실행할 수 있게 몪은 패키지를 관리하는 시스템. 여러 개의 컨테이너를 자동으로 배포하고 운영할 수 있게 도와주는 플랫폼.

컨테이너화된 애플리케이션을 자동으로 배포하고, 확장 및 관리하는 도구.

애플리케이션이 다양한 환경에서 안정적으로 구동될 수 있도록 도와주는 자동화관리도구.

주요기능

1. 자동 배포 및 롤백
:: 애플리케이션 업데이트 및 배포의 자동화 가능. 배포 후 문제 발생 시 롤백 가능

2. 서비스 디스커버리 및 로드 밸런싱
:: 트래픽을 분산시켜 안정적인 동작에 도움

3. 수평적 확장(오토스케일링)
:: 트래픽에 맞춰 애플리케이션에 컨테이너 수를 자동으로 조절

4. 자동복구
:: 장애가 발생한 컨테이너를 자동으로 재부팅하거나 다른 곳으로 이동시켜 고가용성 유지에 도움

5. 구성 관리와 비밀 관리
:: 애플리케이션 설정과 비밀 정보를 안전하게 관리

쿠버네틱스가 필요한 경우

1. 대규모 트래픽 서비스
:: 대규모 애플리케이션을 여러 서버에서 동시에 실행할 때, 관리의 복잡성 감소, 안정성 향상

2. 컨테이너 기반 배포 환경
:: 도커 같은 컨테이너 기술을 사용하여 애플리케이션 배포 시 쿠버네틱스가 이를 효율적으로 관리

3. 클라우드 환경에서 멀티 클러스터 관리
:: 여러 클라스터와 클라우드 환경을 통합해 일관된 관리 가능

4. 개발, 테스트, 운영 환경 분리
:: 각각의 환경에서 동일한 설정으로 배포 및 관리 용이

 


 

애플리케이션의 컨테이너화

어디서든 쉽게 실행할 수 있도록, 프로그램이 작동하는 데 필요한 모든 파일과 설정을 묶어 하나의 패키지로 만드는 것을 '컨테이너화' 라고 함. (일종의 압축한 알집)

컨테이너화의 장점

1. 환경의 일관성
:: 애플리케이션의 모든 설정 및 파일을 포함하기 때문에 개발 환경, 테스트 환경, 운영 환경에서 동일한 동작이 가능. '제 컴퓨터에서는 됐는데요.' 의 문제를 줄일 수 있음

2. 빠른 배포 및 업데이트
:: 컨테이너는 가볍고 실행 속도도 빠름. 새로운 기능이나 버그 수정을 쉽게 업데이트할 수 있고 필요하면 롤백도 빠르게 할 수 있음

3. 지원 효율성
:: 컨테이너는 가상머신보다 적은 메모리를 사용함. 또한 하나의 운영체제 위에서 독립적으로 실행되기 때문에 효율적인 사용이 가능

4. 확장성
:: 컨테이너화된 애플리케이션은 필요할 때 추가 복사본 생성이 가능함. 컨테이너 수를 사용량에 맞춰 늘리고 줄일 수 있음.

컨테이너화 방법

1. 도커(Docker) 설치
:: 도커는 컨테이너를 만들고 관리하는 도구로 가장 널리 쓰임

2. 도커파일 작성
:: 애플리케이션을 컨테이너로 만들기 위해 애플리케이션 실행 환경과 필요한 파일 및 설정 등을 담은 'Dockerfile' 파일 작성. 

3. 도커 이미지 빌드
:: Dockerfile을 이용해 실행 파일을 이미지로 만들고 이 이미지를 사용해 여러 개의 컨테이너를 생성할 수 있음.

4. 컨테이너 실행
:: 만들어진 이미지를 바탕으로 컨테이너를 생성 및 실행 가능

컨테이너화를 하면 왜 빠른가

컨테이너의 속도가 빠른 이유는 기본 운영체제 위에서 필요한 애플리케이션 종속성만 실행하기 때문에 자체 운영체제에서 구동되는 가상머신보다 가볍고 빠르다.  컨테이너는 운영체제의 커널을 공유하며, 애플리케이션과 필요한 라이브러리만 포함하여 파일 크기가 작고 메모리 사용량도 적다. 또한 이미 돌아가는 운영체제 위에서 실행되기 때문에 빠르다. 
다만 컨테이너화 한다고 무조건 속도가 빨라지지는 않는다. 컨테이너 자체는 가볍지만, 애플리케이션의 성능은 코드 최적화, 네트워크 및 데이터 처리 방식에 따라 달라지기 때문이다. 컨테이너화하면 가상머신에 비해 배포나 실행 환경 준비 속도는 빨라지지만, 애플리케이션 자체의 실행속도는 다른 최적화가 병행되어야 한다.