• Immutable infrastracture ⇒ 弾力性、レジリエンス
• 負荷に応じてシステムを伸縮させるには不変なインフラがあって低コス
トで起動/停止が可能でなければならない
• 同じシステムを別のリソースで動かすこと(AZわけるみたいなレプリ
ケーション)が容易
• Microservices ⇒ レジリエンス、メッセージ駆動
• モノリシックだとサービス全体がダウンする可能性がある
• マイクロサービスに切り分けていると、全体がダウンすることはなく、
一部のサービスが提供できない程度に被害を抑えられる
• 全体としてのユーザー体験をなるべく損なわない
• 明確なモジュール境界を設定することとなり、
モジュール間のやり取りは非同期なメッセージパッシングとなる
• Serverless ⇒ 弾力性, メッセージ駆動
• shared nothingな"関数"だからこそスケールが容易
• 厳密にはイベント駆動だが、
別のイベントをkickすることも可能でメッセージ駆動ともいえる