Azure アプリケーション アーキテクチャ ガイドAzure Application Architecture Guide

このガイドは、Azure においてスケーラブルで回復力がある高可用性のアプリケーションを設計するための体系化された方法を示します。This guide presents a structured approach for designing applications on Azure that are scalable, resilient, and highly available. 顧客エンゲージメントから学んだ実証済みのプラクティスに基づいています。It is based on proven practices that we have learned from customer engagements.

はじめにIntroduction

クラウドによって、アプリケーションを設計する方法が変わりつつあります。The cloud is changing how applications are designed. アプリケーションは、モノリスではなく、小さな分散サービスに分解されます。Instead of monoliths, applications are decomposed into smaller, decentralized services. これらのサービスは、API を介して、あるいは非同期メッセージングまたはイベントを使用して通信します。These services communicate through APIs or by using asynchronous messaging or eventing. アプリケーションは、需要に応じて新しいインスタンスを追加して水平方向に拡張します。Applications scale horizontally, adding new instances as demand requires.

このような傾向により新たな課題が生まれました。These trends bring new challenges. アプリケーションの状態が分散しています。Application state is distributed. 操作は並列かつ非同期的に実行されます。Operations are done in parallel and asynchronously. 障害が発生しても、アプリケーションは回復力があることが必要です。Applications must be resilient when failures occur. デプロイは自動的に行い予測可能であることが必要です。Deployments must be automated and predictable. 監視とテレメトリは、システムの状態を把握するために重要です。Monitoring and telemetry are critical for gaining insight into the system. このガイドは、このような変化に対応できるように支援します。This guide is designed to help you navigate these changes.

従来のオンプレミスTraditional on-premises先進的なクラウドModern cloud
モノリシックMonolithic
予測可能なスケーラビリティ向けに設計Designed for predictable scalability
リレーショナル データベースRelational database
同期された処理Synchronized processing
障害 (MTBF) を回避する設計Design to avoid failures (MTBF)
不定期の大規模な更新Occasional large updates
手動管理Manual management
スノーフレーク サーバーSnowflake servers
分散Decomposed
柔軟なスケーラビリティ向けに設計Designed for elastic scale
多機種の持続性 (記憶域テクノロジの混在)Polyglot persistence (mix of storage technologies)
非同期処理Asynchronous processing
障害 (MTTR) のための設計Design for failure (MTTR)
頻繁な小規模の更新Frequent small updates
自動自己管理Automated self-management
イミュータブル インフラストラクチャImmutable infrastructure

本書の構成How this guide is structured

Azure アプリケーション アーキテクチャ ガイドは、アーキテクチャや設計から実装まで、一連のステップで編成されます。The Azure Application Architecture Guide is organized as a series of steps, from the architecture and design to implementation. ステップごとに、アプリケーション アーキテクチャの設計に役立つ補助的なガイダンスがあります。For each step, there is supporting guidance that will help you with the design of your application architecture.

アーキテクチャ スタイルArchitecture styles

最初の意思決定ポイントがすべての基盤になります。The first decision point is the most fundamental. どのような種類のアーキテクチャを構築しますか。What kind of architecture are you building? マイクロサービス アーキテクチャ、従来の n 層アプリケーション、またはビッグ データ ソリューションも考えられます。It might be a microservices architecture, a more traditional N-tier application, or a big data solution. 複数のアーキテクチャ スタイルを特定しました。We have identified several distinct architecture styles. それぞれに利点と課題があります。There are benefits and challenges to each.

詳細情報:アーキテクチャ スタイルLearn more: Architecture styles

テクノロジの選択Technology choices

構築しているアーキテクチャの種類を把握したので、アーキテクチャの主要なテクノロジについて選択を開始できます。Knowing the type of architecture you are building, now you can start to choose the main technology pieces for the architecture. 次のテクノロジの選択が重要です。The following technology choices are critical:

  • コンピューティング は、アプリケーションが実行されるコンピューティング リソースのホスティング モデルを指します。Compute refers to the hosting model for the computing resources that your applications run on. 詳細については、コンピューティング サービスの選択に関するページをご覧ください。For more information, see Choose a compute service.

  • "データ ストア" にはデータベースだけでなく、メッセージ キュー、キャッシュ、ログのほか、アプリケーションが記憶域に格納するその他のもののための記憶域が含まれます。Data stores include databases but also storage for message queues, caches, logs, and anything else that an application might persist to storage. 詳細については、データ ストアの選択に関するページをご覧ください。For more information, see Choose a data store.

  • "メッセージング" テクノロジを使用すると、システムのコンポーネント間での非同期メッセージを有効にできます。Messaging technologies enable asynchronous messages between components of the system. 詳細については、メッセージング サービスの選択に関するページをご覧ください。For more information, see Choose a messaging service.

場合によっては、その過程で追加のテクノロジを選択する必要がありますが、これら 3 つの要素 (コンピューティング、データ、メッセージング) は、ほとんどのクラウド アプリケーションにとって中心的な役割を果たし、これらにより設計の多くの側面が決定されます。You will probably have to make additional technology choices along the way, but these three elements (compute, data, and messaging) are central to most cloud applications and will determine many aspects of your design.

アーキテクチャの設計Design the architecture

アーキテクチャ スタイルと主要なテクノロジ コンポーネントを選択したら、アプリケーションの特定の設計に取り掛かれます。Once you have chosen the architecture style and the major technology components, you are ready to tackle the specific design of your application. アプリケーションは異なっても、次のリソースが役立ちます。Every application is different, but the following resources can help you along the way:

参照用アーキテクチャReference architectures

シナリオに応じて、適切な出発点として、この参照アーキテクチャのいずれかを使用できます。Depending on your scenario, one of our reference architectures may be a good starting point. 各参照アーキテクチャの説明には、推奨プラクティスが、スケーラビリティ、可用性、セキュリティ、回復性、および設計のその他の側面に関する考慮事項と共に含まれます。Each reference architecture includes recommended practices, along with considerations for scalability, availability, security, resilience, and other aspects of the design. ほとんどの場合、デプロイ可能なソリューションまたは参照実装も含まれます。Most also include a deployable solution or reference implementation.

設計原則Design principles

Microsoft では、アプリケーションの拡張性、回復性、および管理性を強化する 10 個の設計原則を大まかに特定しました。We have identified 10 high-level design principles that will make your application more scalable, resilient, and manageable. これらの設計原則は、任意のアーキテクチャ スタイルに適用されます。These design principles apply to any architecture style. 設計プロセス全体を通じて、ここで示す 10 個の設計原則に留意してください。Throughout the design process, keep these 10 high-level design principles in mind. 詳細については、設計原則のページを参照してください。For more information, see Design principles.

設計パターンDesign patterns

ソフトウェア設計パターンは、特定のパターンを解決することが実証された繰り返し可能なパターンです。Software design patterns are repeatable patterns that are proven to solve specific patterns. クラウド設計パターンのカタログは、分散システムの特定の課題に対処します。Our catalog of Cloud design patterns addresses specific challenges in distributed systems. 可用性、回復性、パフォーマンス、セキュリティなどの側面に対処します。They address aspects such as availability, resiliency, performance, and security. 設計パターンのカタログについては、こちらを参照してください。You can find our catalog of design patterns here.

ベスト プラクティスBest practices

ベスト プラクティスの記事では、API 設計、自動スケール、データのパーティション分割、キャッシュなど、さまざまな設計上の考慮事項について説明します。Our best practices articles cover various design considerations including API design, autoscaling, data partitioning, caching, and so forth. これらを確認し、お使いのアプリケーションのニーズに応じてベスト プラクティスを適用します。Review these and apply the best practices that are appropriate for your application.

品質の重要な要素Quality pillars

ソフトウェア品質の 5 つの重要な要素であるコスト、DevOps、回復性、スケーラビリティ、セキュリティ。A successful cloud application will focus on five pillars of software quality: Cost, DevOps, resiliency, scalability, and security.

重要な要素Pillar [説明]Description
コストCost もたらされる価値を最大化するためのコスト管理Managing costs to maximize the value delivered.
DevOpsDevOps 運用環境でシステムを継続的に動作させる運用プロセスです。Operations processes that keep a system running in production.
回復性Resiliency 障害から回復して動作を続行するシステムの能力です。The ability of a system to recover from failures and continue to function.
スケーラビリティScalability 負荷の変化に対応するためのシステムの能力。The ability of a system to adapt to changes in load.
SecuritySecurity 脅威からアプリケーションとデータを保護することです。Protecting applications and data from threats.

Azure Architecture Framework を使用して、これら 5 つの柱全体にわたってアーキテクチャを評価します。Use the Azure Architecture Framework to assess your architecture across these five pillars.

次のステップNext steps