다음을 통해 공유


.NET 마이크로 서비스: 컨테이너화된 .NET 애플리케이션에 대한 아키텍처

책 표지

EDITION v7.0 - ASP.NET Core 7.0으로 업데이트됨

책 업데이트와 커뮤니티 기여는 변경 로그을 참조하세요.

이 가이드에서는 마이크로 서비스 기반 애플리케이션을 개발하고 컨테이너를 사용하여 관리하는 방법을 소개합니다. .NET 및 Docker 컨테이너를 사용하는 아키텍처 디자인 및 구현 방법에 대해 설명합니다.

더 쉽게 시작할 수 있도록 이 가이드에서는 탐색할 수 있는 컨테이너화된 참조 및 마이크로 서비스 기반 애플리케이션에 중점을 둡니다. 참조 애플리케이션은 eShopOnContainers GitHub 리포지토리에서 사용할 수 있습니다.

소개

기업은 점점 더 비용 절감을 실현하고, 배포 문제를 해결하고, 컨테이너를 사용하여 DevOps 및 프로덕션 작업을 개선하고 있습니다. Microsoft는 Azure Kubernetes Service 및 Azure Service Fabric과 같은 제품을 만들고 Docker, Mesosphere 및 Kubernetes와 같은 업계 리더와 협력하여 Windows 및 Linux용 컨테이너 혁신을 릴리스하고 있습니다. 이러한 제품은 기업이 원하는 플랫폼 또는 도구에 관계없이 클라우드 속도와 규모로 애플리케이션을 빌드하고 배포하는 데 도움이 되는 컨테이너 솔루션을 제공합니다.

Docker는 Windows 및 Linux 에코시스템에서 가장 중요한 공급업체가 지원하는 컨테이너 산업의 사실상 표준이 되고 있습니다. (Microsoft는 Docker를 지원하는 주요 클라우드 공급업체 중 하나입니다.) 나중에 Docker는 클라우드 또는 온-프레미스의 모든 데이터 센터에서 유비쿼터스일 것입니다.

또한 마이크로 서비스 아키텍처는 중요 업무용 분산 애플리케이션에 대한 중요한 접근 방식으로 부상하고 있습니다. 마이크로 서비스 기반 아키텍처에서 애플리케이션은 독립적으로 개발, 테스트, 배포 및 버전 관리될 수 있는 서비스 컬렉션을 기반으로 빌드됩니다.

이 가이드에 대하여

이 가이드에서는 마이크로 서비스 기반 애플리케이션을 개발하고 컨테이너를 사용하여 관리하는 방법을 소개합니다. .NET 및 Docker 컨테이너를 사용하는 아키텍처 디자인 및 구현 방법에 대해 설명합니다. 컨테이너 및 마이크로 서비스를 보다 쉽게 시작할 수 있도록 이 가이드에서는 탐색할 수 있는 컨테이너화된 참조 및 마이크로 서비스 기반 애플리케이션에 중점을 둡니다. 샘플 애플리케이션은 eShopOnContainers GitHub 리포지토리에서 사용할 수 있습니다.

이 가이드에서는 주로 개발 환경 수준에서 Docker 및 .NET이라는 두 가지 기술에 중점을 둔 기본 개발 및 아키텍처 지침을 제공합니다. 프로덕션 환경의 인프라(클라우드 또는 온-프레미스)에 집중하지 않고 애플리케이션 디자인에 대해 생각할 때 이 가이드를 읽으려고 합니다. 나중에 프로덕션 준비 애플리케이션을 만들 때 인프라에 대한 결정을 내릴 것입니다. 따라서 이 가이드는 인프라에 구애받지 않으며 개발 환경 중심이 되기 위한 것입니다.

이 가이드를 연구한 후 다음 단계는 Microsoft Azure에서 프로덕션 준비 마이크로 서비스에 대해 알아보는 것입니다.

버전

이 가이드는 .NET 7 릴리스와 동시에 동일한 기술(즉, Azure 및 추가 타사 기술)과 관련된 많은 추가 업데이트와 함께 .NET 7 버전을 포함하도록 수정되었습니다.

비고

이 전자책의 새 버전은 .NET 8 및 새 eShop 샘플용으로 만들어지고 있습니다.

이 가이드에서 다루지 않는 내용

이 가이드에서는 애플리케이션 수명 주기, DevOps, CI/CD 파이프라인 또는 팀 작업에 중점을 두지 않습니다. Microsoft Platform and Tools를 사용한 보완 가이드 컨테이너화된 Docker 애플리케이션 수명 주기는 해당 주제에 중점을 둡니다. 현재 가이드에서는 특정 오케스트레이터에 대한 정보와 같은 Azure 인프라에 대한 구현 세부 정보도 제공하지 않습니다.

추가 리소스

  • Microsoft 플랫폼 및 도구를 사용하여 컨테이너화된 Docker 애플리케이션 수명 주기 (다운로드 가능한 전자책)
    https://aka.ms/dockerlifecycleebook

누가 이 가이드를 사용해야 하는가

Docker 기반 애플리케이션 개발 및 마이크로 서비스 기반 아키텍처를 접하는 개발자 및 솔루션 설계자를 위한 이 가이드를 작성했습니다. 이 가이드는 Microsoft 개발 기술(.NET에 특별히 중점을 둔) 및 Docker 컨테이너를 사용하여 개념 증명 애플리케이션을 설계, 디자인 및 구현하는 방법을 알아보려는 경우에 적합합니다.

또한 이 가이드는 새로운 최신 분산 애플리케이션에 대해 선택할 방법을 결정하기 전에 아키텍처 및 기술 개요를 원하는 엔터프라이즈 설계자와 같은 기술 의사 결정자인 경우에도 유용합니다.

이 가이드를 사용하는 방법

이 가이드의 첫 번째 부분에서는 Docker 컨테이너를 소개하고, .NET 7과 .NET Framework 중에서 개발 프레임워크로 선택하는 방법을 설명하고, 마이크로 서비스에 대한 개요를 제공합니다. 이 콘텐츠는 개요를 원하지만 코드 구현 세부 정보에 집중할 필요가 없는 설계자 및 기술 의사 결정자를 위한 것입니다.

가이드의 두 번째 부분은 Docker 기반 애플리케이션에 대한 개발 프로세스 섹션으로 시작합니다 . .NET 및 Docker를 사용하여 애플리케이션을 구현하기 위한 개발 및 마이크로 서비스 패턴에 중점을 둡니다. 이 섹션은 코드와 패턴 및 구현 세부 정보에 집중하려는 개발자와 설계자에 가장 관심이 있습니다.

eShopOnContainers 애플리케이션은 Docker 컨테이너를 사용하여 배포하도록 설계된 .NET 및 마이크로 서비스에 대한 오픈 소스 참조 앱입니다. 애플리케이션은 여러 전자 저장소 UI 프런트 엔드(웹 MVC 앱, 웹 SPA 및 네이티브 모바일 앱)를 포함하여 여러 하위 시스템으로 구성됩니다. 또한 필요한 모든 서버 쪽 작업에 대한 백 엔드 마이크로 서비스 및 컨테이너도 포함됩니다.

애플리케이션의 목적은 아키텍처 패턴을 보여 주는 것입니다. 이것은 PRODUCTION-READY 템플릿이 아닙니다 실제 애플리케이션을 시작하려면. 실제로 애플리케이션은 잠재적으로 흥미로운 새로운 기술을 테스트하는 데도 사용되므로 영구적인 베타 상태입니다.

피드백 보내기

이 책 및 관련 샘플은 지속적으로 진화하고 있으므로 피드백을 환영합니다. 이 책을 개선할 수 있는 방법에 대한 의견이 있고 <learn.microsoft.com>이 책을 읽는 경우 페이지 아래쪽의 피드백 섹션을 사용하세요.

모든 .NET 문서 기사 바닥글의 피드백 섹션입니다.

앞의 화면 캡처에서 강조 표시된 것처럼 피드백 섹션에서는 다음 사항에 대한 피드백을 제출할 수 있습니다.

  • 이 제품: .NET 제품 피드백 양식을 사용합니다.
  • 이 페이지: 페이지 세부 정보를 담아 GitHub 이슈 템플릿을 사용하여 작성

이 책을 PDF로 읽는 경우 새 .NET Docs: GitHub 이슈를 만들거나 .NET 아키텍처 eBooks: GitHub 이슈 템플릿을 사용하여 피드백을 제출할 수 있습니다.

크레딧

공동 작성자:

Cesar de la Torre, Sr. PM, .NET 제품 팀, Microsoft Corp.

Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp.

Mike Rousos, 수석 소프트웨어 엔지니어, DevDiv CAT 팀, Microsoft

편집기:

마이크 교황

Steve Hoag

참가자 및 검토자:

Jeffrey Richter, 파트너 소프트웨어 엔지니어, Azure 팀, Microsoft

지미 보가드, 헤드스프링의 수석 건축가

우디 다한, 설립자 및 CEO, 특정 소프트웨어

Factor10의 공동 창립자이자 CEO인 지미 닐슨

글렌 콘드론, 프로그램 관리자, ASP.NET 팀

Mark Fussell, 수석 PM 리드, Azure Service Fabric 팀, Microsoft

Diego Vega, PM Lead, Entity Framework 팀, Microsoft

Barry Dorrans, Sr. Security Program Manager

로완 밀러, 프로그램 관리자, Microsoft

Ankit Asthana, 수석 PM 관리자, .NET 팀, Microsoft

Scott Hunter, 파트너 디렉터 PM, .NET 팀, Microsoft

Nish Anil, Sr. Program Manager, .NET 팀, Microsoft

폴리의 건축가이자 개발 리더인 딜런 레이젠버거

스티브 "아달리스" 스미스 - 소프트웨어 설계자 및 트레이너 - Ardalis.com

이언 쿠퍼, 브라이터의 소프트웨어 아키텍트

Unai Zorrilla, 일반 개념의 설계자 및 개발 책임자

에두아르 토마스, 플레인 컨셉의 개발 리더

라몬 토마스, 개발자 앳 플레인 컨셉

David Sanz, Developer at Plain Concepts

하비에르 발레로, 그루포 솔루티오의 최고 운영 책임자

Pierre Millet, Sr. Consultant, Microsoft

Michael Friis, Product Manager, Docker Inc.

Charles Lowell, 소프트웨어 엔지니어, VS CAT 팀, Microsoft

Plain Concepts의 소프트웨어 개발 엔지니어인 Miguel Veloso

Sumit Ghosh, Neudesic의 수석 컨설턴트

게시자:

Microsoft 개발자 부서, .NET 및 Visual Studio 제품 팀

Microsoft Corporation의 부서

One Microsoft Way

레드먼드, 워싱턴 98052-6399

Copyright © 2023 by Microsoft Corporation

모든 권리 보유. 이 책의 내용 중 어떤 부분도 출판사의 서면 허가 없이 어떤 형태로든 또는 어떤 방법으로든 재현하거나 전송할 수 없습니다.

이 책은 "as-is" 상태로 제공되며, 저자의 견해와 의견을 담고 있습니다. URL 및 기타 인터넷 웹 사이트 참조를 포함하여 이 책에 표현된 보기, 의견 및 정보는 예고 없이 변경될 수 있습니다.

여기에 설명된 몇 가지 예는 그림용으로만 제공되며 가상입니다. 실제 연관성 또는 연결은 의도된 것이 아니며 유추되어서도 안 됩니다.

Microsoft와 "상표" 웹 페이지의 https://www.microsoft.com 나열된 상표는 Microsoft 회사 그룹의 상표입니다.

Mac 및 macOS는 Apple Inc.의 상표입니다.

Docker whale 로고는 권한에 의해 사용되는 Docker, Inc.의 등록 상표입니다.

다른 모든 표시 및 로고는 해당 소유자의 속성입니다.