.NET マイクロサービス:コンテナー化された .NET アプリケーションのアーキテクチャ.NET Microservices: Architecture for Containerized .NET Applications

本の表紙

エディション v2.2 - ASP.NET Core 2.2 に更新EDITION v2.2 - Updated to ASP.NET Core 2.2

このガイドでは、マイクロサービス ベースのアプリケーションの開発とコンテナーを使用してこれらを管理する方法を紹介します。This guide is an introduction to developing microservices-based applications and managing them using containers. .NET Core と Docker のコンテナーを使用したアーキテクチャの設計と実装アプローチについて説明します。It discusses architectural design and implementation approaches using .NET Core and Docker containers.

使用開始を容易にするため、このガイドでは、ユーザーが探究できるコンテナー化されたマイクロサービス ベースの参照アプリケーションに重点を置いています。To make it easier to get started, the guide focuses on a reference containerized and microservice-based application that you can explore. 参照アプリケーションは、eShopOnContainers GitHub リポジトリから入手できます。The reference application is available at the eShopOnContainers GitHub repo.

はじめにIntroduction

企業は、コンテナーを使用して、コストの節減、展開の問題の解決、および DevOps と製造作業の向上を実現しつつあります。Enterprises are increasingly realizing cost savings, solving deployment problems, and improving DevOps and production operations by using containers. Microsoft では、Azure Kubernetes Service や Azure Service Fabric などの製品を作成したり、Docker、Mesosphere、Kubernetes などの業界リーダーと提携することで、Windows および Linux 用のコンテナーの新技術をリリースしています。Microsoft has been releasing container innovations for Windows and Linux by creating products like Azure Kubernetes Service and Azure Service Fabric, and by partnering with industry leaders like Docker, Mesosphere, and Kubernetes. これらの製品は、企業が使用しているプラットフォームやツールに関係なく、クラウドの速度とスケールでアプリケーションを構築および展開することに役立つコンテナー ソリューションを提供します。These products deliver container solutions that help companies build and deploy applications at cloud speed and scale, whatever their choice of platform or tools.

Docker は、コンテナー業界では事実上の標準になりつつあり、Windows と Linux のエコシステムで最も重要なベンダーでサポートされていますDocker is becoming the de facto standard in the container industry, supported by the most significant vendors in the Windows and Linux ecosystems. (Microsoft は Docker をサポートする主要なクラウド ベンダーの 1 つです)。将来、Docker は、クラウドまたはオンプレミスのあらゆるデータセンターで広く使用されるようになるでしょう。(Microsoft is one of the main cloud vendors supporting Docker.) In the future, Docker will probably be ubiquitous in any datacenter in the cloud or on-premises.

さらに、ミッション クリティカルな分散アプリケーションのための重要なアプローチとして、マイクロサービス アーキテクチャが新たに出現しています。In addition, the microservices architecture is emerging as an important approach for distributed mission-critical applications. マイクロサービス ベースのアーキテクチャでは、個別に開発、テスト、展開、およびバージョン管理が可能なサービスのコレクションに基づいてアプリケーションが構築されます。In a microservice-based architecture, the application is built on a collection of services that can be developed, tested, deployed, and versioned independently.

このガイドについてAbout this guide

このガイドでは、マイクロサービス ベースのアプリケーションの開発とコンテナーを使用してこれらを管理する方法を紹介します。This guide is an introduction to developing microservices-based applications and managing them using containers. .NET Core と Docker のコンテナーを使用したアーキテクチャの設計と実装アプローチについて説明します。It discusses architectural design and implementation approaches using .NET Core and Docker containers. コンテナーとマイクロサービスの使用の開始を容易にするため、このガイドでは、ユーザーが探究できる参照コンテナー化されたマイクロサービス ベースのアプリケーションに重点を置いています。To make it easier to get started with containers and microservices, the guide focuses on a reference containerized and microservice-based application that you can explore. サンプル アプリケーションは、eShopOnContainers GitHub リポジトリから入手できます。The sample application is available at the eShopOnContainers GitHub repo.

このガイドでは、基本的な開発とアーキテクチャに関する、主に開発環境レベルでのガイダンスが提供されます。重点は 2 つのテクノロジ:Docker と .NET Core に置かれます。This guide provides foundational development and architectural guidance primarily at a development environment level with a focus on two technologies: Docker and .NET Core. このガイドは、運用環境のインフラストラクチャ (クラウドまたはオンプレミス) を重視することなく、アプリケーションの設計について考慮する際にお読みいただくことを意図しています。Our intention is that you read this guide when thinking about your application design without focusing on the infrastructure (cloud or on-premises) of your production environment. インフラストラクチャに関する決定は、後で実稼働可能なアプリケーションを作成するときに行います。You will make decisions about your infrastructure later, when you create your production-ready applications. そのため、このガイドは、インフラストラクチャに依存しない、より開発環境中心としたものになることを意図しています。Therefore, this guide is intended to be infrastructure agnostic and more development-environment-centric.

このガイドで学習したら、次の段階は Microsoft Azure での実稼働可能なマイクロサービスについて学習することです。After you have studied this guide, your next step would be to learn about production-ready microservices on Microsoft Azure.

VersionVersion

このガイドは、 .NET Core 2.2 バージョンに加え、.NET Core 2.2 と同時期に起こっているテクノロジーの "波" (つまりThis guide has been revised to cover .NET Core 2.2 version plus many additional updates related to the same “wave” of technologies (that is. Azure とサードパーティのテクノロジー) に関連する多数の最新情報も扱うように改訂されています。Azure and additional 3rd party technologies) coinciding in time with .NET Core 2.2. 本書がバージョン 2.2 に更新されているのはそれが理由です。That’s why the book version has also been updated to version 2.2.

このガイドに含まれないものWhat this guide does not cover

このガイドでは、アプリケーションのライフサイクル、DevOps、CI/CD パイプライン、またはチーム作業については詳しく取り上げません。This guide does not focus on the application lifecycle, DevOps, CI/CD pipelines, or team work. これらについては、補完ガイド「Microsoft プラットフォームとツールでコンテナー化された Docker アプリケーションのライフサイクル」で詳しく説明しています。The complementary guide Containerized Docker Application Lifecycle with Microsoft Platform and Tools focuses on that subject. 最新のガイドでも、特定のオーケストレーターに関する情報など、Azure インフラストラクチャでの実装の詳細は提供されません。The current guide also does not provide implementation details on Azure infrastructure, such as information on specific orchestrators.

その他の技術情報Additional resources

  • Containerized Docker Application Lifecycle with Microsoft Platform and Tools (Microsoft プラットフォームとツールでコンテナー化された Docker アプリケーションのライフサイクル) (ダウンロード可能な e-book)Containerized Docker Application Lifecycle with Microsoft Platform and Tools (downloadable e-book)
    https://aka.ms/dockerlifecycleebook

対象読者Who should use this guide

このガイドは、Docker ベースのアプリケーションの開発とマイクロサービス ベースのアーキテクチャに詳しくない開発者およびソリューション設計者を対象にしています。We wrote this guide for developers and solution architects who are new to Docker-based application development and to microservices-based architecture. このガイドは、Microsoft 開発テクノロジ (特に .NET Core を中心とした) と Docker コンテナーを使用して、概念実証アプリケーションの設計、デザインおよび実装する方法を学習したい人向けに書かれています。This guide is for you if you want to learn how to architect, design, and implement proof-of-concept applications with Microsoft development technologies (with special focus on .NET Core) and with Docker containers.

新しいモダンな分散アプリケーションにどのアプローチを選択するかを決定する前に、アーキテクチャとテクノロジーの概要を必要とする、エンタープライズ アーキテクトなどの技術的意思決定者にもこのガイドは役立ちます。You will also find this guide useful if you are a technical decision maker, such as an enterprise architect, who wants an architecture and technology overview before you decide on what approach to select for new and modern distributed applications.

このガイドの使用方法How to use this guide

このガイドの最初の部分では、Docker コンテナーを紹介し、開発フレームワークとして .NET Core または .NET Framework を選択する方法について説明し、マイクロサービスの概要を説明します。The first part of this guide introduces Docker containers, discusses how to choose between .NET Core and the .NET Framework as a development framework, and provides an overview of microservices. このコンテンツは、概要は知りたいが、コード実装の詳細について詳しく知る必要がないアーキテクトおよび技術的意思決定者向けです。This content is for architects and technical decision makers who want an overview but don't need to focus on code implementation details.

ガイドの 2 番目の部分は、「Docker ベースのアプリケーションの開発プロセス」セクションから始まります。The second part of the guide starts with the Development process for Docker based applications section. これは、.NET Core と Docker を使用してアプリケーションを実装するための開発とマイクロ サービスのパターンを中心に説明します。It focuses on development and microservice patterns for implementing applications using .NET Core and Docker. これは、コード、パターンおよび実装の詳細を重視する開発者やアーキテクトにとって最も関心が高いセクションです。This section will be of most interest to developers and architects who want to focus on code and on patterns and implementation details.

eShopOnContainers アプリケーションは、 Docker コンテナーを使用して展開するように設計された .NET Core とマイクロサービスのためのオープン ソースの参照アプリです。The eShopOnContainers application is an open-source reference app for .NET Core and microservices that is designed to be deployed using Docker containers. アプリケーションは、さまざまな e ストア UI フロント エンド (Web MVC アプリ、Web SPA、およびネイティブ モバイル アプリ) を含む複数のサブシステムで構成されます。The application consists of multiple subsystems, including several e-store UI front ends (a Web MVC app, a Web SPA, and a native mobile app). また、バック エンドのマイクロサービスと必要なサーバー側のすべての操作のためのコンテナーも含まれています。It also includes the back-end microservices and containers for all required server-side operations.

このアプリケーションの目的は、アーキテクチャのパターンを紹介することです。The purpose of the application is to showcase architectural patterns. それは、現実の世界で使用されるアプリケーションを開始するための実稼働可能なテンプレートではありませんIT IS NOT A PRODUCTION-READY TEMPLATE to start real-world applications. 実際は、このアプリケーションは永久にベータ版の状態であり、新しい可能性のある興味深いテクノロジをテストするためにも使用されます。In fact, the application is in a permanent beta state, as it’s also used to test new potentially interesting technologies as they show up.

フィードバックをお寄せください。Send us your feedback!

このガイドは、コンテナー化されたアプリケーションと .NET のマイクロサービスのアーキテクチャの理解を促進する目的で書かれています。We wrote this guide to help you understand the architecture of containerized applications and microservices in .NET. ガイドと関連する参照アプリケーションは進化していくため、お客様のフィードバックをお待ちしています。The guide and related reference application will be evolving, so we welcome your feedback! このガイドを改善する方法についてご意見があれば、以下のアドレスに送信してください。If you have comments about how this guide can be improved, please send them to:

dotnet-architecture-ebooks-feedback@service.microsoft.com

謝辞Credits

共同作成者:Co-Authors:

Cesar de la Torre、Microsoft Corp.、.NET 製品チーム、シニア PMCesar de la Torre, Sr. PM, .NET product team, Microsoft Corp.

Bill Wagner、Microsoft Corp.、C+E、シニア コンテンツ開発者Bill Wagner, Sr. Content Developer, C+E, Microsoft Corp.

Mike Rousos、Microsoft、DevDiv CAT チーム、主任ソフトウェア エンジニアMike Rousos, Principal Software Engineer, DevDiv CAT team, Microsoft

編集者:Editors:

Mike PopeMike Pope

Steve HoagSteve Hoag

参加者とレビュー担当者:Participants and reviewers:

Jeffrey Richter、Microsoft、Azure チーム、パートナー ソフトウェア エンジニアJeffrey Richter, Partner Software Eng, Azure team, Microsoft

Jimmy Bogard、Headspring のチーフ アーキテクトJimmy Bogard, Chief Architect at Headspring

Udi Dahan、Particular Software、創設者兼最高経営責任者Udi Dahan, Founder & CEO, Particular Software

Jimmy Nilsson、Factor10 の共同創始者兼最高経営責任者Jimmy Nilsson, Co-founder and CEO of Factor10

Glenn Condron、ASP.NET チーム、シニア プログラム マネージャーGlenn Condron, Sr. Program Manager, ASP.NET team

Mark Fussell、Microsoft、Azure Service Fabric チーム、プリンシパル PM リーダーMark Fussell, Principal PM Lead, Azure Service Fabric team, Microsoft

Diego Vega、Microsoft、Entity Framework チーム、PM リーダーDiego Vega, PM Lead, Entity Framework team, Microsoft

Barry Dorrans、シニア セキュリティ プログラム マネージャーBarry Dorrans, Sr. Security Program Manager

Rowan Miller、Microsoft、シニア プログラム マネージャーRowan Miller, Sr. Program Manager, Microsoft

Ankit Asthana、Microsoft、.NET チーム、主任 PM マネージャーAnkit Asthana, Principal PM Manager, .NET team, Microsoft

Scott Hunter、Microsoft、.NET チーム、パートナー ディレクター PMScott Hunter, Partner Director PM, .NET team, Microsoft

Nish Anil、Microsoft、.NET チーム、シニア プログラム マネージャーNish Anil, Sr. Program Manager, .NET team, Microsoft

Dylan Reisenberger、Polly のアーキテクト兼開発リーダーDylan Reisenberger, Architect and Dev Lead at Polly

Steve "ardalis" Smith - ソフトウェア アーキテクトおよびトレーナー - Ardalis.comSteve "ardalis" Smith - Software Architect and Trainer - Ardalis.com

Ian Cooper、Brighter のコーディング アーキテクトIan Cooper, Coding Architect at Brighter

Unai Zorrilla、Plain Concepts のアーキテクト兼開発リーダーUnai Zorrilla, Architect and Dev Lead at Plain Concepts

Eduard Tomas、Plain Concepts の開発リーダーEduard Tomas, Dev Lead at Plain Concepts

Ramon Tomas、Plain Concepts の開発者Ramon Tomas, Developer at Plain Concepts

David Sanz、Plain Concepts の開発者David Sanz, Developer at Plain Concepts

Javier Valero、Grupo Solutio の最高執行責任者Javier Valero, Chief Operating Officer at Grupo Solutio

Pierre Millet、Microsoft、シニア コンサルタントPierre Millet, Sr. Consultant, Microsoft

Michael Friis、Docker Inc、製品マネージャーMichael Friis, Product Manager, Docker Inc

Charles Lowell、Microsoft、VS CAT チーム、ソフトウェア エンジニアCharles Lowell, Software Engineer, VS CAT team, Microsoft

Miguel Veloso、Turing Challenge のシニアコンサルタントMiguel Veloso, Sr. Consultant at Turing Challenge

次の場所でダウンロードできます: https://aka.ms/microservicesebookDOWNLOAD available at: https://aka.ms/microservicesebook

発行者PUBLISHED BY

Microsoft 開発部門、.NET および Visual Studio 製品チームMicrosoft Developer Division, .NET and Visual Studio product teams

A division of Microsoft CorporationA division of Microsoft Corporation

One Microsoft WayOne Microsoft Way

Redmond, Washington 98052-6399Redmond, Washington 98052-6399

Copyright © 2019 by Microsoft CorporationCopyright © 2019 by Microsoft Corporation

All rights reserved.All rights reserved. 本書のいかなる部分も、書面による発行者の許可なしに、いかなる形式または方法によっても、複製または伝送することを禁じます。No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher.

本書は "現状有姿" で提供され、著者の見解と意見を表しています。This book is provided “as-is” and expresses the author’s views and opinions. URL および他の参照されているインターネットの Web サイトをはじめ、本書に記載されている見解、意見、および情報は、通知なく変更されることがあります。The views, opinions and information expressed in this book, including URL and other Internet website references, may change without notice.

ここに記載したいくつかの例は、説明のためだけに提供された架空のものです。Some examples depicted herein are provided for illustration only and are fictitious. 実在のものとの関連性または関係性は一切ありません。No real association or connection is intended or should be inferred.

https://www.microsoft.com の "商標" Web ページに記載されている Microsoft および商標は、Microsoft グループの商標です。Microsoft and the trademarks listed at https://www.microsoft.com on the “Trademarks” webpage are trademarks of the Microsoft group of companies.

Mac および macOS は Apple Inc. の商標です。Mac and macOS are trademarks of Apple Inc.

Docker のクジラのロゴは Docker, Inc. の登録商標です。許可を得て使用しています。The Docker whale logo is a registered trademark of Docker, Inc. Used by permission.

その他のすべてのマークおよびロゴは、該当する各社が所有しています。All other marks and logos are property of their respective owners.