AWSの本

1回目は通読。その時2回目に読み返したい部分をマークしておき2回目はそこ周辺をサクッと読む。3回目にノートにまとめる。4回目にこの記事を書く。

読んだ本

  • 改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書[SAA-C02]対応 徹底攻略シリーズ
  • AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル
  • AWSコンテナ設計・構築[本格]入門
  • AWSで実現するモダンアプリケーション入門 〜サーバーレス、コンテナ、マイクロサービスで何ができるのか
  • AWSではじめるクラウドセキュリティ: クラウドで学ぶセキュリティ設計/実装

学んだことメモ

  • Sagaパターンとは?
    • サービスにまたがったデータの整合性を維持するための分散トランザクションの仕組み。例えばECサービスでマイクロサービスが決済サービス、購入履歴サービス、ポイントサービス、に分かれていたとする。この時、ポイントサービスに問題があった時に他のサービスでも取り消し処理をする必要がある。コレオグラフィとオーケストレーションの2種類がある。
  • Saga (コレオグラフィ) とは?何を使えば実現できるか?
    • サービス間での協調を行わず、それぞれのサービスが処理をする。どこかが失敗したら補償トランザクションを呼び出すイベントを新たに発行する。例えばAmazon EventBridgeを使ってこれを実現する。
  • Sage (オーケストレーション) とは?何を使えば実現できるか?
    • オーケストレーたーが各サービスの結果を確認しながら順番に処理を進めていく方式。オートマトンのように、処理結果を状態としながら遷移していく。例えばAwS Step Functionsを使う。
  • 補償トランザクションとは?
    • 取り消し処理のこと。サービスごとに確定したデータを取り消すための処理。
  • Fargateのデメリットは?
    • コンテナごとにENIがアタッチされるため、デプロイしたコンテナが起動するまで時間がかかる。CPU/メモリに制限がある。割り当て可能なのは4vCPU、30GBメモリが最大。
  • Well-Architected フレームワークの5つの柱は?
    • 運用上の優秀性、セキュリティ、信頼性、パフォーマンス効率、コスト最適化
  • VPCエンドポイントとは?
  • Application AutoScaling の2つのポリシーとその特徴
    • ステップスケーリングポリシーとターゲット追跡スケーリングポリシー。ステップスケーリングポリシーはメトリクスを見ながら段階的にスケールイン・アウトができる。途中で別のイベントが発生しても応答してくれる。ターゲット追跡スケーリングポリシーはメトリクスの値を維持するようにスケールする。AWSが勝手にタスク量を調整してくれるので一番マネージド。スケールアウトは高速だがスケールインは緩やかに実行される。
  • パブリックサブネットがインターネットと通信するための設定
    • パブリックサブネットのルートテーブルに、デフォルトゲートウェイ(0.0.0.0/0)が宛先として指定された時にインターネットゲートウェイへ向けるルールを追加する。共通のルーティングテーブルを作って各パブリックサブネットに紐づけるようにするのがよい。
  • ECSタスクの起動時にコンテナに環境変数を差し込むには?
    • Secrets Managerに環境変数を入れ、ecsTaskExecutionRoleにsecretsmanager:GetSecretValueを持ったポリシーを紐づける。ECSのタスクエージェントがSecrets Managerと通信するためにはインターフェイスVPCエンドポイントが必要。

全体を通した学び

不安だったVPCなどのネットワーク周りやIAMの知識を補完できた。AWSで実現するモダンアプリケーション入門 以外ではVPCとIAMについて言及されていた。読みながらBlackBeltもぼちぼち見た。

IAMはもっとしっかり頭に入れておきたい。stsとかまだそこまで詳しく知らない。ここは手を動かしてみるのがいいかな。

結局「AWSの知識を身に付ける」という点については試験勉強をするのが一番手っ取り早い。でも実際に使える知識・技能を身に付けるにはマネコン触って0から構築するのがよさそう。それはそう、という話ではあるけど。

自分が知りたいのはアーキテクチャのパターンというよりも実際に問題に遭遇した時のデバッグ方法であるということに気づいた。例えばなぜかALBがコンテナと疎通しないときに確認する場所みたいな。こういうのは自分で手を動かさなければ分からないことが多い。

とにかく次のステップは手を動かすこと。