머리말
컨테이너는 어디에나 있습니다. 로컬 개발부터 지속적인 통합, 대규모 프로덕션 워크로드 관리에 이르기까지 컨테이너는 어디에나 존재합니다. 왜 이런 일이 일어났고, 어디로 가고 있으며, 우리 업계를 장악한 이 혁명에 대해 독자 여러분은 무엇을 알아야 할까요?
많은 오래된 기술은 "한 번 작성하면 어디서나 실행"이라는 약속을 제공합니다. 하지만 모든 런타임이 이 기능을 제공하지는 않았고, 제공한다고 해도 애플리케이션을 실행하려면 런타임(및 추가 종속성)을 사용할 수 있어야 했습니다. 컨테이너는 "한 번 빌드하면 어디서나 실행"이라는 약속을 제공합니다. 컨테이너를 사용하면 애플리케이션, 애플리케이션 실행에 필요한 런타임, 구성 파일 및 애플리케이션에 필요한 모든 파일 종속성을 하나의 아티팩트로 패키징할 수 있습니다. 대상 머신에 컨테이너 런타임만 있으면 애플리케이션이 바로 작동합니다. 이를 통해 인프라는 애플리케이션에 구애받지 않는 진정한 애플리케이션 애그노스틱이 될 수 있습니다. "내 머신에서 작동합니다." 이제 시작입니다!
컨테이너는 컨테이너와 컨테이너 안에 패키징된 애플리케이션의 수명 주기를 관리하기 위한 표준 애플리케이션 프로그래밍 인터페이스(API)를 제공합니다. 이 API는 이질적인 배포 환경에 균일한 인터페이스를 제공하여 운영팀이 애플리케이션 배포 및 실행의 핵심을 알 필요가 없으므로 인프라 관리, 보안 및 규정 준수 시행, 조명 유지 등 본연의 업무에 집중할 수 있도록 해줍니다.
이 인터페이스는 또한 수많은 혁신의 기반이 됩니다. Kubernetes 및 Nomad와 같은 컨테이너 오케스트레이터는 이 컨트롤 플레인을 활용하여 추상화 수준을 높여 컨테이너화된 워크플로를 대규모로 더 쉽게 관리할 수 있도록 합니다. Istio와 같은 서비스 메시 기술은 오케스트레이터와 함께 작동하여 애플리케이션 스택에서 서비스 검색 및 보안과 같은 교차적인 문제를 분리합니다.
표준 인터페이스의 모든 이점이 업스트림에도 적용되어 개발자의 일상이 더 쉬워집니다. 하나의 명령으로 전체 개발 환경을 생성할 수 있습니다. 지속적 통합(CI) 내에서 컨테이너는 데이터베이스, 대기열 또는 애플리케이션의 통합, 스모크 및 엔드투엔드 테스트를 위해 필요한 모든 종속성을 수용하기 위해 쉽게 스핀업할 수 있으며, 작업을 확인하고 검증할 수 있습니다. 마지막으로, 컨테이너의 이식성 덕분에 개발팀은 프로덕션 환경에서 작업의 소유권을 가질 수 있어 DevOps의 여러 측면을 현실화할 수 있습니다.
런타임이 정기적으로 주요 버전을 업그레이드하고, 팀과 조직이 다국어를 사용하고, 블루-그린 및 카나리아 릴리스와 같은 DevOps 관행이 일반화되고, 전례 없는 규모로 확장되는 세상에서 전 세계 팀이 애플리케이션을 빌드하고 배포하는 데 사용하는 기술은 컨테이너입니다. 컨테이너는 더 이상 새롭거나 신기한 것이 아니라 조직에서 애플리케이션을 패키징하고 배포하는 방법의 규칙을 나타냅니다.
하지만 컨테이너 작업은 쉽지 않습니다. 거의 10년 동안 컨테이너를 사용해 왔고, 전 세계 청중에게 ...