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

Book cover

EDITION v8.0 - ASP.NET Core 8.0으로 업데이트됨

책 업데이트 및 커뮤니티 기여에 대한 자세한 내용은 changelog를 참조하세요.

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

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

소개

기업은 컨테이너를 사용함으로써 점점 더 비용 절감을 실현하고, 배포 문제를 해결하며, DevOps 및 프로덕션 작업을 개선하고 있습니다. Microsoft는 Azure Kubernetes Service 및 Azure Service Fabric과 같은 제품을 만들고 Docker, Mesosphere 및 Kubernetes와 같은 업계 선두 업체와 협력하여 Windows 및 Linux를 위한 컨테이너 혁신 제품을 출시해왔습니다. 이러한 제품은 기업이 선택한 플랫폼이나 도구와 상관없이 클라우드의 속도 및 규모로 애플리케이션을 빌드 및 배포할 수 있도록 하는 컨테이너 솔루션을 제공합니다.

Windows 및 Linux 에코시스템에서 가장 중요한 공급업체가 지원하는 Docker는 컨테이너 업계의 사실상 표준이 되고 있습니다. (Microsoft는 Docker를 지원하는 주요 클라우드 공급업체 중 하나입니다.). 향후에는 아마도 클라우드 또는 온-프레미스의 어떤 데이터 센터에서나 Docker를 아주 흔히 볼 수 있게 될 것입니다.

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

이 가이드의 내용

이 가이드는 마이크로 서비스 기반 애플리케이션을 개발하고 컨테이너를 사용하여 해당 애플리케이션을 관리하는 방법을 소개합니다. 또한 .NET과 Docker 컨테이너를 사용하여 아키텍처를 설계하고 구현하는 방법을 설명합니다. 컨테이너 및 마이크로 서비스를 더 쉽게 ​​시작할 수 있도록 이 가이드는 탐색 가능한 참조 컨테이너화된 애플리케이션 및 마이크로 서비스 기반 애플리케이션에 중점을 두고 있습니다. 애플리케이션 예제는 eShopOnContainers GitHub 리포지토리에서 제공합니다.

이 가이드는 두 가지 기술 즉, Docker 및 .NET Core에 중점을 둔 개발 환경 수준에서 주로 기본적인 개발 및 아키텍처 지침을 제공합니다. 이 가이드의 목적은 프로덕션 환경의 인프라(클라우드 또는 온-프레미스)에 집중하지 않고 애플리케이션 디자인을 고려할 때 정보를 제공하는 데 있습니다. 인프라에 대한 결정은 나중에 프로덕션이 준비된 애플리케이션을 만들 때 내립니다. 따라서 이 가이드는 인프라와 관계없이 개발 환경 중심적으로 작성되었습니다.

이 가이드를 살펴본 후에는 다음 단계로 Microsoft Azure에서 프로덕션이 준비된 마이크로 서비스에 대해 알아보세요.

버전

이 가이드는 .NET 8 릴리스와 동시에 .NET 8 버전을 다루도록 수정되었으며, 동일한 기술 “웨이브”(즉 Azure 및 추가 타사 기술)와 관련된 여러 추가 업데이트를 포함합니다. 이런 이유로 책 버전도 버전 8.0으로 업데이트되었습니다.

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

이 가이드는 애플리케이션 수명 주기, DevOps, CI/CD 파이프라인 또는 팀 작업에 중점을 두지 않습니다. 이러한 주제는 상호 보완적인 가이드인 Containerized Docker Application Lifecycle with Microsoft Platform and Tools에서 중점적으로 다룹니다. 또한 현재 이 가이드는 특정 Orchestrator에 대한 정보와 같은 Azure 인프라에 대한 구현 세부 정보도 제공하지 않습니다.

추가 자료

이 가이드의 대상 사용자

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

또한 이 가이드는 새로운 최신 분산 애플리케이션을 위해 어떤 접근 방식을 선택할지 결정하기 전에 먼저 아키텍처 및 기술에 대해 간략히 알아보려는 기술 의사 결정자(예: 엔터프라이즈 설계자)에게도 유용합니다.

이 가이드를 사용하는 방법

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

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

eShopOnContainers 애플리케이션은 Docker 컨테이너를 사용하여 배포되도록 설계된 .NET 및 마이크로 서비스용 오픈 소스 참조 앱입니다. 이 애플리케이션은 몇 가지 온라인 스토어 UI 프런트 엔드(Web MVC 앱, Web SPA 및 네이티브 모바일 앱)를 비롯한 여러 하위 시스템으로 구성됩니다. 또한 필요한 모든 서버 쪽 작업을 위한 백 엔드 마이크로 서비스 및 컨테이너를 포함하고 있습니다.

이 애플리케이션의 목적은 아키텍처 패턴을 소개하는 것입니다. 실제 애플리케이션을 시작하기 위한 즉시 사용 가능한 템플릿은 아닙니다. 사실상, 이 애플리케이션은 잠재적으로 흥미로운 새 기술이 등장할 때 이 기술을 테스트하는 데에도 사용되므로 영구적인 베타 상태입니다.

피드백 보내기

이 책과 관련 샘플은 지속적으로 진화합니다. 여러분의 피드백을 기다리고 있습니다. 이 책을 개선할 수 있는 방법에 대한 의견이 있고 <learn.microsoft.com>에서 이 책을 읽고 있는 경우 페이지 아래쪽에 있는 피드백 섹션을 사용합니다.

Feedback section of all .NET docs article footers.

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

  • 이 제품: .NET 제품 피드백 양식을 사용합니다.
  • 이 페이지: 페이지 세부 정보가 있는 GitHub 문제 템플릿을 사용합니다.

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

크레딧

공동 작성자:

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

Bill Wagner, 선임 콘텐츠 개발자, C+E, Microsoft Corp.

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

편집자:

Mike Pope

Steve Hoag

참가자 및 검토자:

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

Jimmy Bogard, 최고 설계자, Headspring

Udi Dahan, 창립자 겸 CEO, Particular Software

Jimmy Nilsson, 공동 창립자 겸 CEO, Factor10

Glenn Condron, 선임 프로그램 관리자, ASP.NET 팀

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

Diego Vega, PM 리더, Microsoft Entity Framework 팀

Barry Dorrans, 선임 보안 프로그램 관리자

Rowan Miller, 선임 프로그램 관리자, Microsoft

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

Scott Hunter, 파트너 PM 책임자, Microsoft .NET 팀

Nish Anil, 선임 프로그램 관리자, .NET 팀, Microsoft

Dylan Reisenberger, 설계자 겸 개발자 리더, Polly

Steve "ardalis" Smith - 소프트웨어 설계자이자 강사 - Ardalis.com

Ian Cooper, 코딩 설계자, Brighter

Unai Zorrilla, 설계자 겸 개발자 리더, Plain Concepts

Eduard Tomas, 개발자 리더, Plain Concepts

Ramon Tomas, 개발자, Plain Concepts

David Sanz, 개발자, Plain Concepts

Javier Valero, 최고 운영 책임자, Grupo Solutio

Pierre Millet, 선임 컨설턴트, Microsoft

Michael Friis, 제품 관리자, Docker Inc

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

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

Sumit Ghosh, 주임 컨설턴트, Neudesic

게시자:

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

Microsoft Corporation의 사업부

One Microsoft Way

Redmond, Washington 98052-6399

Copyright © 2023 by Microsoft Corporation

All rights reserved. 이 가이드의 내용 중 어떤 부분도 게시자의 서면 허가 없이는 어떠한 형식이나 방법으로도 복제하거나 전송할 수 없습니다.

이 가이드는 작성자의 견해와 의견을 "있는 그대로" 제공하고 전달합니다. URL 및 기타 인터넷 웹 사이트 참조를 비롯하여 이 가이드에 제공된 견해, 의견 및 정보는 예고 없이 변경될 수 있습니다.

용례에 사용된 정보는 설명을 돕는 목적으로만 제공되며 이들은 실제 데이터가 아닙니다. 어떠한 실제 정보와 연관시킬 의도가 없으며 그렇게 유추해서도 안 됩니다.

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

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

Docker 고래 로고는 Docker, Inc.의 등록 상표로, 허가하에 사용됩니다.

기타 모든 표시와 로고는 해당 소유자의 자산입니다.