탄생배경
전통적인 애플리케이션 배포방식에서 자주 마주하는 문제점 "It works on my machine":
- 개발 환경과 운영 환경의 불일치
- 복잡한 환경 설정과 종속성 관리의 어려움
이러한 문제를 해결하기 위해, 애플리케이션을 어디서나 동일한 환경에서 실행할 수 있는 기술의 필요성이 대두되어습니다.
그 결과, 애플리케이션을 컨테이너로 패키징하여 어디서나 동일하게 실행할 수 있게 해주는 가상화 플랫폼인 Docker 가 탄생하게 되었습니다.
Docker 를 사용하는 이유
특징 | 설명 |
컨테이너화 (Containerization) | 애플리케이션과 그 종속성을 하나의 컨테이너로 묶어 일관된 실행 환경을 제공 |
이식성 (Portability) | 도커를 지원하는 환경에서 애플리케이션을 쉽게 이식가능 →개발, 테스트, 배포과정의 단순화 |
격리성 (Isolation) | 각 컨테이너는 자체 격리된 환경에서 실행되어서 애플리케이션 간의 충돌을 방지 |
효율성 (Efficiency) | 호스트 시스템의 커널을 공유하여 가상머신을 사용하는 것에 비해 리소스 오버헤드가 감소, 즉, 가상머신은 각자 운영체제를 따로 실행하느라 자원을 더 많이 소모하는 반면, 도커는 운영체제를 공유해 자원 낭비를 줄여준다. |
확장성(Scalability) | 컨테이너는 수요에 따라 애플리케이션을 쉽게 확장하거나 축소 가능 |
재현성(Reproducibility) | Docker 이미지는 버전 관리되고 공유될 수 있어 애플리케이션이 일관되게 배포되도록 보장 |
장점
- 일관된 환경 제공: 개발부터 운영까지 동일한 환경을 유지하여 환경 불일치로 인한 문제를 최소화
- 신속한 배포 및 롤백: 이미지 기반 배포로 빠른 배포와 롤백이 가능
- 유연한 스케일링: 컨테이너 오케스트레이션 도구(Kubernetes 등)를 사용하여 수요에 따라 쉽게 확장하거나 축소가능
- 리소스 효율성: 시스템 자원을 효율적으로 사용하여 비용 절감에 도움
- 풍부한 생태계: Docker Hub 등 다양한 이미지와 커뮤니티 지원이 활발
- CI/CD 파이프라인 통합 용이
단점
- 보안 문제: 호스트 커널을 공유하기 때문에 가상 머신보다 보안 격리가 약할 수 있음
- 복잡한 관리: 다수의 컨테이너 관리와 오케스트레이션이 복잡할 수 있음.
- 윈도우 지원 제한: 초기에는 리눅스 중심으로 개발되어 윈도우 환경에서 제약이 있을 수 있습니다.
- 디버깅 어려움: 컨테이너 내부의 문제를 진단하고 디버깅하는 데 어려움이 있을 수 있습니다.
Common Use Cases
- Web Applications: Deploying and scaling web applications.
- Microservices Architecture: Building and managing distributed applications composed of small, independent services.
- Data Science: Running data science pipelines and machine learning models.
- Continuous Integration and Continuous Delivery (CI/CD): Automating the testing and deployment of applications.
'기술 이해하기' 카테고리의 다른 글
[ TDD ] Layer 테스트 이해하기 (1) | 2024.11.19 |
---|---|
[ AWS ] ECR 이해하기: 탄생배경과 장단점 (0) | 2024.11.06 |
[ TDD ] E2E 테스트 이해하기: 탄생배경과 장단점 (1) | 2024.10.26 |