
"런타임 의존성과 함께 애플리케이션을 패키징하는 기술"
컨테이너에 대한 설명에 이렇게 나와있다.
이 말만 들어선 의미가 잘 와닿지 않는데, 런타임 의존성이란 애플리케이션이 실행될 때(런타임 시점) 정상적으로 동작하기 위해 함께 있어야 하는 외부 소프트웨어 구성요소들이다.(외부 라이브러리, 미들웨어, 드라이버 등)
즉, 컨테이너는 이 소프트웨어 구성요소들을 함께 애플리케이션과 함께 하나로 묶어 패키징하는 기술이다.
컨테이너는 기본 호스트 인프라에서 애플리케이션을 분리하여, 다양한 클라우드나 OS 환경에서도 쉽게 배포할 수 있도록 도와준다.
프로그램을 설치할 때마다 경로나 환경변수를 맞추느라 어려움을 겪은 적이 있을 것이다. 컨테이너는 이런 환경 설정까지 함께 포함해, 어디서든 동일한 환경으로 독립적으로 실행할 수 있도록 해준다.
컨테이너는 애플리케이션을 포장하고 실행하기에 좋은 방법이지만, 컨테이너가 다운되면 직접 다른 컨테이너를 다시 실행해야 하는 번거로움이 있다. 이런 문제를 시스템적으로 자동 처리하기 위해 등장한 것이 바로 쿠버네티스이다.

초창기에는 기업들이 물리 서버에서 애플리케이션을 직접 실행했다. 하지만 하나의 애플리케이션이 서버의 대부분 자원을 차지하면서 리소스 낭비와 성능 저하 문제가 생겼다. 이를 해결하기 위해 가상머신(VM)이 등장했고, 애플리케이션을 가상머신 단위로 격리함으로써 물리 서버의 자원을 더 효율적으로 사용할 수 있게 되었다.
이후 컨테이너 기술이 등장하면서 더 가벼운 형태의 배포가 가능해졌다. 컨테이너는 VM과 비슷하지만, 애플리케이션 간에 운영체제를 공유하기 때문에 격리 수준이 다소 낮은 대신 훨씬 가볍고 빠르다.
또한 컨테이너는 VM 이미지보다 생성과 배포가 효율적이다. 컨테이너 이미지는 빌드 속도가 빠르고, 통합 및 배포 과정에서 롤백이 용이해 안정적이면서도 빈번한 배포가 가능하다.
이처럼 컨테이너의 장점을 극대화하면서도, 수많은 컨테이너를 자동으로 관리하고 조율할 수 있도록 도와주는 역할을 하는 것이 바로 쿠버네티스이다.
쿠버네티스는 컨테이너 기반 애플리케이션을 더 안정적이고 효율적으로 운영할 수 있도록 여러 가지 기능을 제공한다.
서비스 디스커버리와 로드밸런싱
쿠버네티스는 DNS 이름이나 자체 IP 주소를 통해 컨테이너를 외부에 노출할 수 있다. 또한 트래픽이 많을 경우 자동으로 로드밸런싱을 수행하여 서비스가 안정적으로 동작하도록 한다.
스토리지 오케스트레이션
쿠버네티스를 사용하면 로컬 저장소뿐 아니라 클라우드 스토리지 등 다양한 저장소 시스템을 자동으로 연결하고 관리할 수 있다.
자동화된 롤아웃과 롤백
쿠버네티스는 배포된 컨테이너의 상태를 원하는 설정에 따라 자동으로 업데이트하거나 이전 버전으로 되돌릴 수 있다.
예를 들어, 새 버전의 컨테이너를 배포하면서 기존 컨테이너를 점진적으로 교체하고, 문제가 생기면 이전 버전으로 손쉽게 롤백할 수 있다.
Bin Packing
쿠버네티스는 클러스터 내의 여러 노드에 컨테이너를 효율적으로 배치한다. 각 컨테이너가 필요로 하는 CPU나 메모리 리소스를 파악하여 최적의 위치에 배치함으로써 자원 활용도를 높인다.
자체 복구(Self-Healing)
쿠버네티스는 문제가 발생한 컨테이너를 자동으로 다시 시작하거나 교체하며, 응답하지 않는 컨테이너를 종료한다. 이를 통해 애플리케이션의 안정성을 유지한다.
보안 비밀 관리(Secrets Management)
쿠버네티스는 비밀번호, OAuth 토큰, SSH 키 등 민감한 정보를 안전하게 저장하고 관리할 수 있다. 이를 통해 보안 정보를 노출하지 않고도 애플리케이션 구성을 배포하거나 업데이트할 수 있다.
수평적 확장(Horizontal Scaling)
간단한 명령어나 UI 조작을 통해 애플리케이션을 자동으로 확장하거나 축소할 수 있다. CPU 사용량 등의 지표를 기준으로 컨테이너 수를 조절하여 시스템 자원을 효율적으로 관리한다.
이처럼 쿠버네티스는 단순한 컨테이너 관리 도구를 넘어, 대규모 애플리케이션의 운영을 자동화하고 안정성을 높이는 핵심 플랫폼이라 할 수 있다.
참고 자료
- 삼성 링크 (쿠버네티스와 컨테이너) : https://www.samsungsds.com/kr/insights/220222_kubernetes1.html
- 쿠버네티스 링크 (쿠버네티스란) : https://kubernetes.io/ko/docs/concepts/overview/
- revenera(런타임 의존성 참고) : https://www.revenera.com/blog/software-composition-analysis/impact-of-runtime-dependencies-and-non-runtime-dependencies-in-your-devsecops-processes/?utm_source=chatgpt.com