팁 (조언)
이 콘텐츠는 .NET Docs 또는 오프라인으로 읽을 수 있는 다운로드 가능한 무료 PDF로 제공되는 컨테이너화된 .NET 애플리케이션용 .NET 마이크로 서비스 아키텍처인 eBook에서 발췌한 내용입니다.
마이크로 서비스는 큰 이점을 제공하지만 거대한 새로운 문제를 제기합니다. 마이크로 서비스 아키텍처 패턴은 마이크로 서비스 기반 애플리케이션을 만들 때 기본 요소입니다.
이 가이드의 앞부분에서는 컨테이너 및 Docker에 대한 기본 개념을 알아보았습니다. 해당 정보는 컨테이너를 시작하는 데 필요한 최소값이었습니다. 컨테이너는 마이크로서비스를 지원하며 이에 적합하지만, 마이크로서비스 아키텍처에 꼭 필요한 것은 아닙니다. 이 아키텍처 섹션의 많은 아키텍처 개념을 컨테이너 없이 적용할 수 있습니다. 그러나 이 가이드에서는 컨테이너의 중요성이 이미 도입되어 둘 다의 교차점에 중점을 둡니다.
엔터프라이즈 애플리케이션은 복잡할 수 있으며 단일 서비스 기반 애플리케이션 대신 여러 서비스로 구성되는 경우가 많습니다. 이러한 경우 마이크로 서비스 및 특정 DDD(Domain-Driven 디자인) 패턴과 컨테이너 오케스트레이션 개념과 같은 다른 아키텍처 접근 방식을 이해해야 합니다. 이 장에서는 컨테이너의 마이크로 서비스뿐만 아니라 컨테이너화된 애플리케이션도 설명합니다.
컨테이너 디자인 원칙
컨테이너 모델에서 컨테이너 이미지 인스턴스는 단일 프로세스를 나타냅니다. 컨테이너 이미지를 프로세스 경계로 정의하여 프로세스의 크기를 조정하거나 일괄 처리하는 데 사용할 수 있는 기본 형식을 만들 수 있습니다.
컨테이너 이미지를 디자인할 때 Dockerfile에 ENTRYPOINT 정의가 표시됩니다. 이 정의는 수명이 컨테이너의 수명을 제어하는 프로세스를 정의합니다. 프로세스가 완료되면 컨테이너 수명 주기가 종료됩니다. 컨테이너는 웹 서버와 같은 장기 실행 프로세스를 나타낼 수 있지만 이전에 Azure WebJobs로 구현되었을 수 있는 일괄 처리 작업과 같은 수명이 짧은 프로세스를 나타낼 수도 있습니다.
프로세스가 실패하면 컨테이너가 종료되고 오케스트레이터가 책임을 집니다. 오케스트레이터가 5개의 인스턴스를 계속 실행하도록 구성되고 한 인스턴스가 실패하는 경우 오케스트레이터는 실패한 프로세스를 대체할 다른 컨테이너 인스턴스를 만듭니다. 일괄 작업에서 프로세스는 매개 변수로 시작됩니다. 프로세스가 완료되면 작업이 완료됩니다. 이 지침은 나중에 오케스트레이터에 대한 자세한 설명을 제공합니다.
단일 컨테이너에서 여러 프로세스를 실행하려는 시나리오를 찾을 수 있습니다. 이 시나리오의 경우 컨테이너당 진입점이 하나만 있을 수 있으므로 필요에 따라 많은 프로그램을 시작하는 스크립트를 컨테이너 내에서 실행할 수 있습니다. 예를 들어 감독자 또는 유사한 도구를 사용하여 단일 컨테이너 내에서 여러 프로세스를 시작할 수 있습니다. 그러나 컨테이너당 여러 프로세스를 포함하는 아키텍처를 찾을 수 있지만 이러한 접근 방식은 그리 일반적이지 않습니다.
.NET