みなさんは数多いAWSのサービスから適切なものを選択して、システムを設計できているでしょうか。
私はアプリケーションエンジニアなので、AWSなどクラウドインフラは開発環境の設定変更や小さなアプリでLambdaを使うぐらいでした。
AWSはある目的において似たような機能を提供するサービスも多く、どれを使えばいいのかやその判断基準を決めるのが難しかったです。
そんなこともあり、この「AWSクラウド設計完全ガイド」を読んでみました。

書籍情報

  • AWSクラウド設計完全ガイド
  • 著者:アクセンチュア株式会社 戸賀 慶/福垣内 孝造/竹内 誠一/浪谷 浩一/澤田 拓也/ 崎原 晴香/浅輪 和哉/村田 亜弥
  • 発行:日経BP

第2章 AWSにおけるインフラストラクチャ選定のアプローチ

次のようなXaaSアーキテクチャについて、それぞれのメリット、デメリット、ユースケースがまとめられており、参考になりました。

  • IaaS (Infrastructure)
  • PasS (Platform)
  • SaaS (Service)
  • CaaS (Container)
  • FaaS (Funtion)

CaaSではEC2, Fargate, Lambdaなどを利用するケースについて説明されていました。また、ネットワーク設計やサービス間通信が重要ということも書かれており、設計のポイントも知ることができました。

第3章 実行アーキテクチャの設計

SoR(System of Record), SoE(Engagement), SoI(Insight)それぞれについて実現パターンを示して説明されており、わかりやすかったです。
また、MVC, SPA, BFFの各パターンについてもアーキテクチャ例とその構成にする理由が書かれており、実際の開発に活かせそうでした。

第5章 開発アーキテクチャの設計

Codeシリーズ(CodeCommit, CodeBuild, CodeDeploy, CodePipeline)がCI/CDの中核をなすサービスであることがよくわかりました。
なお、出版当時はサービス終了がアナウンスされていたCodeCommitですが、継続が発表されていますので今後も利用できます。(参考:AWS CodeCommitが復活しました )
「Blue/Greenデプロイ」について恥ずかしながら詳しく知らなかったのですが、概要の説明からはじまり、EC2やLambdaでのアーキテクチャ例も示されており理解することができました。

CloudFormationやCDKについては、概要やプロジェクト構成について説明がありました。実際のコードは掲載されていないため利用時は公式ドキュメントなどを参照する必要があります。

まとめ

AWSの各サービスについての解説や、それらを組み合わせてどういったアーキテクチャを実現すればよいかについて理解することができました。
似たようなサービスについて「通常はxxxを使い、パフォーマンスに問題があればyyyを使う」など、実際に開発で使用された経験から得られる情報が役立ちました。