왜 굳이 도커(컨테이너)를 써야 하나요 - 컨테이너를 사용해야 하는 이유

Source

  • Evernote/Technote scraps/왜 굳이 도커(컨테이너)를 써야 하나요 - 컨테이너를 사용해야 하는 이유.md

Summary

본문은 도커(컨테이너) 도입의 핵심 동기를 ‘눈송이 서버(Snowflake Servers)’ 문제 해결과 ‘서버 코드화’ 관점에서 설명합니다. 장기 운영 시 서버 간 환경 차이(패키지 버전, 설정 등)가 누적되어 재현 불가능한 장애를 유발하는 문제를 지적하며, 이를 방지하기 위해 서버 구성을 코드(Dockerfile 등)로 관리해야 함을 강조합니다. 또한 도커 이미지를 클래스, 컨테이너를 인스턴스로 비유하여 일관된 환경 제공의 이점을 서술합니다.

Key Points

  • 눈송이 서버(Snowflake Servers): 장기 운영 과정에서 서버 간 미세한 환경 차이가 누적되어 ‘A 서버는 되는데 B 서버는 안 된다’는 재현 어려운 장애를 유발함.
  • 서버 코드화(Server as Code): 문서나 수동 명령어 대신 Ansible, Chef, Dockerfile 등을 통해 서버 구성을 코드로 관리하여 환경의 일관성과 재현성을 보장해야 함.
  • 도커의 역할: 운영체제별 복잡한 설치 과정을 추상화하여 환경에 구애받지 않고 애플리케이션을 실행하며, 이미지(클래스)와 컨테이너(인스턴스) 개념을 통해 일관된 배포 환경 제공.
  • 테스트 주도 개발 관점: Dockerfile 을 통해 서버 구성을 테스트 가능하게 만들어 환경 드리프트(Environment Drift)를 사전에 방지할 수 있음.