このセクションの設計原則に関する記事では、障害に耐え、需要に応じてスケーリングし、ビジネス ニーズに合わせて進化できるクラウド アプリケーションの構築に役立つ基盤を提供します。 新しいシステムを設計する場合でも、レガシ アプリケーションを最新化する場合でも、運用ワークロードを計画する場合でも、これらの相互接続された原則は、信頼性、パフォーマンス、保守容易性に関する情報に基づいた意思決定を行うのに役立ちます。 一緒に、技術的な卓越性とビジネス価値のバランスを取る、クラウドネイティブのアプリケーション設計に対する包括的なアプローチを形成します。
アプリケーションの拡張性、回復性、管理性を高めるために、次の設計原則に従います。
主要な原則
自己治癒のための設計。 障害を検出し、適切に応答し、自動的に回復するようにアプリケーションを設計します。 分散システムでは、障害は避けられません。 障害を分離し、システムの可用性を維持するには、再試行ロジック、正常性エンドポイントの監視、サーキット ブレーカー、バルクヘッド パターンを実装します。
すべてのことを冗長にします。 単一障害点を回避するために、アプリケーションに冗長性を組み込みます。 ロード バランサー、複数のインスタンス、データベース レプリカ、マルチゾーンまたはマルチリージョンのデプロイを使用します。 ビジネス要件とリスク許容度に一致する冗長性のレベルを設計します。
調整を最小限に抑えます。 スケーラビリティを実現するために、アプリケーション サービス間の調整を最小限に抑えます。 非同期通信を行う分離されたコンポーネントを使用し、必要に応じて最終的な整合性を受け入れ、ドメイン イベントを適用して厳密な結合なしで状態を同期します。
スケールアウトする設計。需要の変化に応じてインスタンスを追加または削除して、水平スケーリング用にアプリケーションを設計します。 セッションの持続性を回避し、ボトルネックを特定し、要件をスケーリングしてワークロードを分解し、ライブ メトリックに基づく自動スケーリングを使用して変数の負荷を効率的に処理します。
制限を基準としたパーティション分割。 パーティション分割を使用して、データベース、ネットワーク、コンピューティングの制限を回避します。 データを水平方向、垂直方向、または機能的にパーティション分割し、ホットスポットを回避するためにパーティション キーを設計します。 データベース、キュー、コンピューティング リソースなど、複数のレベルでパーティション分割することを検討してください。
運用の原則
操作の設計。 デプロイ、監視、インシデント対応に必要なツールを運用チームに提供するようにアプリケーションを設計します。 包括的なログ記録、分散トレース、標準化されたメトリックを実装し、管理タスクを自動化して、効果的な運用監視を可能にします。
マネージド サービスを使用します。 サービスとしてのインフラストラクチャ (IaaS) ではなく、サービスとしてのプラットフォーム (PaaS) を使用します。 マネージド サービスは、運用オーバーヘッドを削減し、組み込みのスケーリング機能を提供し、チームがインフラストラクチャのメンテナンスではなくアプリケーション ロジックに集中できるようにします。
ID サービスを使用します。 独自の ID システムを構築または運用する代わりに、Microsoft Entra ID などのマネージド ID プラットフォームを使用します。 マネージド ソリューションは、資格情報ストレージ、認証機能、フェデレーション機能、業界標準への準拠を提供します。
戦略的原則
進化のための設計。 成功するすべてのアプリケーションが時間の経過と同時に変化するため、継続的イノベーションのための設計。 疎結合を適用し、ドメインの知識をカプセル化し、非同期メッセージングを使用し、適切なバージョン管理を含む明確に定義された API を公開して、独立したサービスの進化を可能にします。
ビジネスのニーズに合わせて構築します。 ビジネス要件に基づいて設計上の決定を行います。 復旧時間目標 (RTO)、ドキュメント サービス レベル アグリーメント (SLA)、サービス レベル目標 (SLO) などの明確な目標を定義し、ビジネス ドメインに関するアプリケーションをモデル化し、機能要件と非機能要件のバランスを取りながら成長を計画します。
サービスの障害モード分析を実行します。 システム内の潜在的な障害ポイントを体系的に特定し、復旧戦略を計画します。 最初から回復性を構築するには、アーキテクチャと設計フェーズでエラー モード分析 (FMA) を実行します。 リスクと影響によって各障害モードを評価し、適切な対応と回復メカニズムを決定します。
これらの原則を適用する
これらの原則は連携して、回復性に優れたスケーラブルなアプリケーションを作成します。
ビジネス要件から始めて 、何を構築しているのか、その理由を理解します。
自己復旧機能と冗長性を実装して障害の設計を行います。
水平スケーリング、パーティション分割、および最小限の調整によるスケーリングを計画します。
Azure サービスを使用して 運用の複雑さを軽減し、ビジネス ロジックに集中します。
適切な監視、ログ記録、自動化を通じて操作をサポートします。
ビジネスニーズに応じてアプリケーションを進化させるために変化に対応できるように構築します。