컨테이너의 장점
1. 언어 유연성
컨테이너는 개발자들을 특정 언어에 종속되지 않음.
배포 시스템과 라이브러리 요구사항 분리, 다양한 언어와 패키지 쉬운 업데이트하거나 사용 가능
개발자들은 특정 언어나 버전에 얽매이지 않고 자유롭게 작업 가능
전통적인 PaaS(Platform as a Service) 환경처럼 오래된 운영체제의 디펜던시를 지속적으로 사용할 필요가 없어짐
2. 오버헤드 없는 격리
과거에는 VM을 사용하여 애플리케이션을 격리했지만, VM은 OS 커널을 복제해야 하므로 리소스 오버헤드가 크고 이미지 크기도 매우 큼.
반면, 컨테이너는 VM보다 경량화되어 있으며, 동일한 리소스 격리 이점 제공.
쿠버네티스 환경에서는 컨테이너가 호스트 리소스를 효율적으로 사용할 수 있어, 인프라 비용을 절감가능.
3. 개발자 효율성
컨테이너는 디펜던시를 호스트 환경에서 분리하여 개발자가 애플리케이션을 더 효율적인 개발가능.
예를 들어, 도커를 사용하면 리눅스 애플리케이션을 윈도우나 macOS에서 개발 가능함.
설치 과정도 간단하여 도커 설치 후 코드 복사, 빌드 및 실행만으로 개발 환경을 빠르게 구축.
4. 재현성
컨테이너는 애플리케이션 환경을 쉽게 재현할 수 있게 해주어, 동일한 환경에서 애플리케이션을 실행하고 테스트.
이를 통해 개발 및 운영 환경 간의 차이를 최소화할 수 있습니다.
쿠버네티스
쿠버네티스(Kubernetes)는 컨테이너를 효율적으로 관리하고 오케스트레이션하는 시스템.
노드(서버)의 클러스터를 구성하여, 여러 컨테이너를 효과적으로 실행하고 관리할 수 있도록 도움.
1. 자동화된 운영
쿠버네티스는 자동으로 컨테이너를 모니터링하고 충돌이 발생하면 재시작.
Liveness Probe와 Readiness Probe를 통해 컨테이너의 상태를 지속적인 점검.
Pod Autoscaler는 사용량에 따라 파드의 수를 자동으로 증가시켜 시스템의 효율성을 높임.
2. 높은 확장성
쿠버네티스는 다양한 규모의 클러스터를 구성 가능.
소규모 클러스터에서부터 수만 개의 CPU를 가진 대규모 클러스터까지 모두 지원
확장성이 뛰어난 애플리케이션을 쉽게 배포.
3. 워크로드 추상화
IaaS(Infrastructure as a Service)와 다르게 쿠버네티스는 하드웨어 수준을 추상화.
개발자는 하드웨어와 직접 상호작용하지 않고 API를 통해 소프트웨어를 구성하고 관리.
4. 선언적 구성
쿠버네티스는 선언적 리소스 모델을 사용하여, 사용자가 설정 파일(YAML)을 통해 원하는 상태를 정의
쿠버네티스가 이를 자동으로 실행하고 관리합니다.
이는 명령형 방식과 다르게, 시스템이 스스로 원하는 상태를 유지하도록 도움.
5. 비용 효율성
쿠버네티스는 VM과 같은 물리적 자원 위에서 여러 애플리케이션 인스턴스를 효율적인 실행, 비용 측면에서 매우 유리.
다양한 애플리케이션을 동일한 호스트에서 실행할 수 있어, 인프라 비용을 크게 절감 가능함.
6. 확장성
쿠버네티스는 확장성이 뛰어난 API를 제공하여, 비즈니스 로직에 맞는 맞춤형 구성과 확장이 가능.
Custom Resource Definition(CRD) 및 Operator 패턴을 통해 쿠버네티스를 더욱 강력하게 확장할 수 있습니다.
7. 오픈소스
쿠버네티스는 CNCF(Cloud Native Computing Foundation)의 인증을 따르며, 이를 통해 이식성과 호환성이 뛰어난 시스템을 제공합니다.
오픈소스이므로 누구나 자유롭게 사용하고, 기여할 수 있습니다.
8. 맞춤형 워크플로
배포에서부터 복잡한 CI/CD 파이프라인, 보안 스캐닝까지 원하는 워크플로우를 구성 가능.
배포가 간단하지는 않지만, 다양한 빌딩 블록을 사용해 유연한 환경을 구축.
'Kubernetes' 카테고리의 다른 글
| Kubernetes for Developers - 3장 정리 (2) | 2025.07.13 |
|---|---|
| Kubernetes for Developers - 2장 정리 (3) | 2025.07.13 |