2システムアーキテクチャ設計
- 2.1システム方式設計の基礎
システムが実現すべき機能をハードウェア・ソフトウェア・手作業のどこに担わせるかを決める機能配分、そして性能・コスト・可用性・保守性という複数のトレードオフ軸から最適な方式を選ぶ方式選定の考え方を学びます。
- 2.2集中と分散・クライアントサーバ
処理を1か所に集める集中処理と複数拠点・複数マシンに分散させる分散処理のトレードオフ、そしてクライアントサーバ方式における2層(クライアントに処理を持たせる)と3層(プレゼンテーション/アプリケーション/データを分離する)の処理配置の判断を学びます。
- 2.3Web多層アーキテクチャ
3層クライアントサーバをWeb向けに発展させたプレゼンテーション層・アプリケーション層・データ層の構成、サーバがクライアントの状態を保持しないステートレス設計、セッション情報を外部ストアへ切り出すセッション外部化、そしてサーバ台数を増やして負荷に対応するスケールアウトの考え方を学びます。
- 2.4SOAとマイクロサービス
サービス単位で機能を疎結合に連携させるSOAの考え方を発展させ、サービスを独立にデプロイできる粒度まで分割するマイクロサービス、そのドメイン境界での分割判断、そして分散に伴う代償である結果整合性・運用複雑度をどう受け入れるかを学びます。
- 2.5イベント駆動とメッセージング
サービス間を非同期に連携させるメッセージキュー(MQ)・ESB・API Gatewayの役割の違い、イベント駆動アーキテクチャによる疎結合な連携、そして非同期連携につきまとうメッセージの順序保証・重複配信・結果整合性の注意点を学びます。

