「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次  †
概要  †
- 参考から目次を抜いて体系化した。
 
- まだ、ごく一部しか書けていない(オンデマンドで追記予定)。
 
詳細  †
以下のような立て付けになっている。
アーキテクチャ スタイル  †
ビッグ コンピューティング  †
Azure Batch (HPC) 推しらしい。
イベントドリブン アーキテクチャ  †
- パブリッシュ/サブスクライブ モデル
- Microsoft Message Queue (MSMQ)等にあった。
 
- レプリケーションとか。
 
 
- イベント ストリーム モデル
- イベントがログに書き込まれる。
 
- クライアントはいつでも参加でき、イベントを再生
 
- ストリーム内でクライアントの位置を進めるのは、クライアントの役割
 
 
マイクロサービス  †
n 層アプリケーション  †
アプリケーションを論理層と物理層に分離
Web キューワーカー  †
- Webロール、Workerロール
 
- 必要に応じて、キュー
 
設計原則  †
自動修復機能の設計  †
- その他
- リーダー選択を使用する。
 
- フォールト挿入でテストする。
 
- Chaos エンジニアリングを利用する。
 
 
すべてを冗長化  †
- 複数のリージョンにデプロイ
- geo レプリケーション
 
- Traffic Manager
 
 
調整を最小限に抑える  †
トランザクション(ACID特性)以外の実現方法を検討する。
スケールアウトのための設計  †
- ボトルネックの特定、ワークロードの分解など。
 
- タスクのオフロード(バックグラウンド・ジョブ化)
 
- サーバー・ステートレス
 
- 自動スケール(スケールアウト・スケールイン)
 
パーティション分割による制限の回避  †
スケール・アップに限界があるので、パーティション分割。
- システム
- データベース
 
- キューまたはメッセージ バス
 
- App Service Web アプリ
 
 
操作に合わせた設計  †
運用チームが必要なツールを得られるようにアプリケーションを設計
管理対象サービスの使用  †
なるべく、PaaS / FaaS, SaaSを選択。
ジョブに最適なデータ ストアの使用  †
- その他
- 開発チームのスキルセット
 
- コンテキスト境界を確認(DDD)
 
 
改良を見込んだ設計  †
SOAっぽい(疎結合)。
- 高凝集と疎結合
- サービスを個別にデプロイ
 
- 共通機能を専用のサービスにオフロード
 
 
- ゲートウェイにはドメイン ナレッジを実装しない
- ドメイン ナレッジをカプセル化
 
- オープン インターフェイスを公開
 
- 非同期メッセージングを使用
 
 
ビジネス ニーズに合わせた構築  †
- 成長に対応可能な計画とコストの管理
 
- 目標復旧時間 (RTO)、目標復旧時点 (RPO)、最大許容停止時間 (MTO)
 
- サービス レベル アグリーメント (SLA) とサービス レベル目標 (SLO)
 
- 要件
- 機能要件と非機能要件
 
- ワークロード別に分けて要件を判断
 
 
- ビジネス ドメインを中心にアプリケーションをモデル化(DDD)
 
技術選定  †
コンピューティング サービスの選択  †
適切なモンを使えと。
データ ストアの選択  †
適切なモンを使えと。
※ 多言語パーシステンスと言うらしい。
負荷分散サービスの選択  †
負荷分散については、NLBの項が参考になる。
(NLBを使えとは言っていない)
メッセージング サービスの選択  †
色々あるらしい。
- Azure Service Bus
 
- Event Grid
 
- Event Hubs
 
ベスト・プラクティス  †
API 設計  †
- データ処理
(ネットワーク帯域幅と処理能力の有効活用)
- フィルター or ページング処理
 
- HATEOAS
 
- バイナリ リソースの部分的な応答
 
 
API 実装  †
自動スケール  †
バックグラウンド ジョブ  †
キャッシュ  †
Content Delivery Network  †
データのパーティション分割  †
データのパーティション分割戦略 (サービスごと)  †
デプロイ スタンプ  †
監視と診断  †
特定のサービスの再試行ガイダンス  †
一時的な障害の処理  †
チューニング  †
分散トランザクション  †
複数のバックエンド サービス  †
イベントのストリーミング  †
アンチ・パターン  †
- ビジー状態のデータベース
 
- ビジー状態のフロント エンド
 
- 頻度の高い I/O
 
- 余分なフェッチ
 
- 不適切なインスタンス化
 
- モノリシック永続化
 
- キャッシュなし
 
- 同期 I/O
 
参考  †
Microsoft Docs  †
- Azure Architecture Center
 
アーキテクチャ スタイル  †
https://docs.microsoft.com/ja-jp/azure/architecture/guide/architecture-styles/
10 の設計原則  †
https://docs.microsoft.com/ja-jp/azure/architecture/guide/design-principles/
技術選定  †
https://docs.microsoft.com/ja-jp/azure/architecture/guide/technology-choices/
ベスト・プラクティス  †
https://docs.microsoft.com/ja-jp/azure/architecture/best-practices/
チューニング  †
https://docs.microsoft.com/ja-jp/azure/architecture/performance/
その他  †
多言語パーシステンス  †
HATEOAS  †
Tags: :アーキテクチャ, :クラウド系開発