팁 (조언)
이 콘텐츠는 .NET Docs 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 컨테이너화된 .NET 애플리케이션용 .NET 마이크로 서비스 아키텍처인 eBook에서 발췌한 내용입니다.
컨테이너화는 애플리케이션 또는 서비스, 이에 해당하는 종속성 및 (배포 매니페스트 파일로 일반화된) 구성이 컨테이너 이미지로 패키지되는 소프트웨어 개발 방법입니다. 컨테이너화된 애플리케이션은 단위로 테스트하고 컨테이너 이미지 인스턴스로 OS(호스트 운영 체제)에 배포할 수 있습니다.
선적 컨테이너가 화물 내부에 관계없이 선박, 기차 또는 트럭으로 상품을 운송할 수 있도록 허용하는 것처럼 소프트웨어 컨테이너는 다른 코드와 종속성을 포함할 수 있는 소프트웨어 배포의 표준 단위 역할을 합니다. 이러한 방식으로 소프트웨어를 컨테이너화하면 개발자와 IT 전문가가 거의 또는 전혀 수정하지 않고 환경에 배포할 수 있습니다.
또한 컨테이너는 공유 OS에서 애플리케이션을 서로 격리합니다. 컨테이너화된 애플리케이션은 OS(Linux 또는 Windows)에서 실행되는 컨테이너 호스트 위에서 실행됩니다. 따라서 컨테이너의 공간은 VM(가상 머신) 이미지보다 훨씬 작습니다.
그림 2-1에 표시된 것처럼 각 컨테이너는 전체 웹 애플리케이션 또는 서비스를 실행할 수 있습니다. 이 예제에서 Docker 호스트는 컨테이너 호스트이고 App1, App2, Svc 1 및 Svc 2는 컨테이너화된 애플리케이션 또는 서비스입니다.
그림 2-1. 컨테이너 호스트에서 실행되는 여러 컨테이너
컨테이너화의 또 다른 이점은 확장성입니다. 단기 작업에 대한 새 컨테이너를 만들어 빠르게 확장할 수 있습니다. 애플리케이션 관점에서 이미지 인스턴스화(컨테이너 만들기)는 서비스 또는 웹앱과 같은 프로세스를 인스턴스화하는 것과 유사합니다. 그러나 안정성을 위해 여러 호스트 서버에서 동일한 이미지의 여러 인스턴스를 실행하는 경우 일반적으로 각 컨테이너(이미지 인스턴스)를 다른 호스트 서버 또는 다른 장애 도메인의 VM에서 실행하려고 합니다.
즉, 컨테이너는 전체 애플리케이션 수명 주기 워크플로에서 격리, 이식성, 민첩성, 확장성 및 제어의 이점을 제공합니다. 가장 중요한 이점은 Dev와 Ops 간에 제공되는 환경의 격리입니다.
.NET