다음을 통해 공유


eShopOnContainers 참조 앱 소개

이 콘텐츠는 Azure용 클라우드 네이티브 .NET 애플리케이션 설계 eBook 에서 발췌한 것으로, .NET 문서에서 제공되거나 오프라인 상태에서도 읽을 수 있는 PDF(무료 다운로드 가능)로 제공됩니다.

Cloud Native .NET apps for Azure eBook cover thumbnail.

Microsoft는 최고의 커뮤니티 전문가와 협력하여 모든 기능을 갖춘 클라우드 네이티브 마이크로 서비스 참조 애플리케이션인 eShopOnContainers를 제작했습니다. 이 애플리케이션은 .NET 및 Docker, 선택적으로 Azure, Kubernetes 및 Visual Studio를 사용하여 온라인 상점을 빌드하는 방법을 보여 주기 위해 빌드되었습니다.

eShopOnContainers Sample App Screenshot.

그림 2-1. eShopOnContainers 샘플 앱 스크린샷.

이 장을 시작하기 전에 eShopOnContainers 참조 애플리케이션을 다운로드하는 것이 좋습니다. 그러면 제시된 정보를 따라가기가 더 쉽습니다.

기능 및 요구 사항

먼저 애플리케이션의 기능 및 요구 사항을 검토해 보겠습니다. eShopOnContainers 애플리케이션은 티셔츠 및 커피 머그잔과 같은 다양한 실제 제품을 판매하는 온라인 스토어를 나타냅니다. 이전에 온라인으로 물건을 구입한 적이 있다면 스토어 사용 환경이 비교적 익숙할 것입니다. 다음은 스토어에서 구현하는 몇 가지 기본 기능입니다.

  • 카탈로그 항목 나열
  • 형식별로 항목 필터링
  • 브랜드별로 항목 필터링
  • 장바구니에 항목 추가
  • 장바구니에서 항목 편집 또는 제거
  • 확인
  • 계정 등록
  • 로그인
  • 로그아웃
  • 주문 검토

애플리케이션에는 다음과 같은 비기능적 요구 사항도 있습니다.

  • 가용성이 높아야 하며 증가하는 트래픽에 맞게 자동으로 확장되어야 합니다(트래픽이 감소하면 다시 축소).
  • 발생하는 모든 문제를 해결하는 데 도움이 되도록 상태 및 진단 로그에 대한 사용하기 쉬운 모니터링을 제공해야 합니다.
  • CI/CD(연속 통합 및 배포) 지원을 포함하여 민첩한 개발 프로세스를 지원해야 합니다.
  • 두 개의 웹 프런트 엔드(기존 및 단일 페이지 애플리케이션) 외에도 애플리케이션은 다양한 종류의 운영 체제를 실행하는 모바일 클라이언트 앱도 지원해야 합니다.
  • 플랫폼 간 호스팅 및 플랫폼 간 개발을 지원해야 합니다.

eShopOnContainers reference application development architecture.

그림 2-2. eShopOnContainers는 애플리케이션 개발 아키텍처를 참조합니다.

eShopOnContainers 애플리케이션은 ASP.NET Core MVC 서버 애플리케이션 또는 적절한 API 게이트웨이를 대상으로 하는 HTTPS를 통해 애플리케이션에 액세스하는 웹 또는 모바일 클라이언트에서 액세스할 수 있습니다. API 게이트웨이는 개별 프런트 엔드 클라이언트에서 백 엔드 서비스를 분리하고 더 나은 보안을 제공하는 등 여러 이점을 제공합니다. 또한 애플리케이션은 BFF(Backends-for-Frontends)라는 관련 패턴을 사용합니다. 이 패턴의 경우 각 프런트 엔드 클라이언트에 대해 별도의 API 게이트웨이를 만드는 것이 좋습니다. 참조 아키텍처는 요청이 웹에서 오는지 모바일 클라이언트에서 오는지에 따라 API 게이트웨이를 분리하는 방법을 보여 줍니다.

애플리케이션의 기능은 다양한 마이크로 서비스로 나뉩니다. 인증 및 ID, 제품 카탈로그의 항목 나열, 사용자의 장바구니 관리 및 주문을 담당하는 서비스가 있습니다. 이러한 개별 서비스에는 각각 고유한 영구 스토리지가 있습니다. 모든 서비스가 상호 작용하는 단일 기본 데이터 저장소는 없습니다. 대신 필요에 따라 메시지 버스를 사용하여 서비스 간의 조정 및 통신이 수행됩니다.

각 마이크로 서비스는 개별 요구 사항에 따라 다르게 설계됩니다. 이러한 측면은 기술 스택이 다를 수 있음을 의미하지만 모두 .NET을 사용하여 빌드되고 클라우드용으로 설계되었습니다. 단순 서비스는 기본 데이터 저장소에 대한 기본 CRUD(Create-Read-Update-Delete) 액세스를 제공하는 반면 고급 서비스는 도메인 기반 디자인 방법 및 패턴을 사용하여 비즈니스 복잡성을 관리합니다.

Different kinds of microservices

그림 2-3. 다양한 종류의 마이크로 서비스.

코드 개요

코드는 마이크로 서비스를 사용하기 때문에 eShopOnContainers 앱은 GitHub 리포지토리에 꽤 많은 개별 프로젝트와 솔루션을 포함합니다. 별도의 솔루션과 실행 파일 외에도 다양한 서비스가 자체 컨테이너 내에서 로컬 개발 및 프로덕션 런타임에 실행되도록 설계되었습니다. 그림 2-4는 다양한 프로젝트가 구성된 전체 Visual Studio 솔루션을 보여 줍니다.

Projects in Visual Studio solution.

그림 2-4. Visual Studio 솔루션의 프로젝트.

코드는 다양한 마이크로 서비스를 지원하도록 구성되며 각 마이크로 서비스 내에서 코드는 도메인 논리, 인프라 문제, 사용자 인터페이스 또는 서비스 엔드포인트로 나뉩니다. 대부분의 경우 각 서비스의 종속성은 프로덕션의 Azure 서비스와 로컬 개발을 위한 대체 옵션으로 충족될 수 있습니다. 애플리케이션의 요구 사항이 Azure 서비스에 매핑되는 방식을 살펴보겠습니다.

마이크로서비스 이해

이 책은 Azure 기술을 사용하여 빌드된 클라우드 네이티브 애플리케이션에 중점을 둡니다. 마이크로 서비스 모범 사례 및 마이크로 서비스 기반 애플리케이션을 설계하는 방법에 대해 자세히 알아보려면 부록 책자인 .NET 마이크로 서비스: 컨테이너화된 .NET 애플리케이션을 위한 아키텍처를 참조하세요.