継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

AWS のクラウドネイティブアーキテクチャを『クラウドネイティブファーストストーリー』で体感しよう!

タダです.

普段クラウドの仕事していて,耳にする「クラウドネイティブ」というトピックを学びたいと思って技術書典応援祭で「クラウドネイティブファーストストーリー」を購入しました.読み終えたので,本書の概要と合わせて自分が学べると感じたことを紹介します.

技術書典応援祭のページ techbookfest.org

Booth booth.pm

目次

本書の章立ては次の通りです.本編として176Pの内容です.

  • 第1章 ようこそ、クラウドネイティブの世界へ
  • 第2章 AWS で構築するクラウドネイティブサービス
  • 第3章 コンテナサービスの構築
  • 第4章 CI/CD の構築

本書で学べること

クラウドネイティブって?

本書のタイトルになっている「クラウドネイティブ」はどういった定義でしょうか? クラウドネイティブ技術の民主化と利用を促進を目的とする団体の Cloud Native Computing Foundation(CNCF)は次のように定義しています.

クラウドネイティブ技術は、パブリッククラウドプライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。

これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。

github.com

つまり,「クラウドネイティブ」はクラウドインフラストラクチャの環境でスケーラブルなアプリケーションを開発していくための技術で,次が代表的なそのアプローチ例です.

  • コンテナ
  • サービスメッシュ
  • マイクロサービス
  • イミュータブルインフラストラクチャ
  • 宣言型API

クラウドネイティブアーキテクチャへのロードマップ

では,クラウドネイティブアーキテクチャへのロードマップをどのように辿っていくのがいいでしょう.参考例で CNCF では「CloudNative Landscape」というイメージが公開されており,各セクションごとのサービスも公式サイトでまとめられています.

github.com

landscape.cncf.io

上記でも触れたクラウドネイティブの定義,クラウドネイティブアーキテクチャへのアプローチとしてコンテナ,CI/CD,コンテナオーケストレーションの技術概要が1章では説明されています.コンテナ,CI/CD,コンテナオーケストレーションは「CloudNative Landscape」の10個のステップの1~3番目にあたるアプローチなので,タイトルでいうファーストストーリーにあたるのでしょう.

2章以降で AWS でコンテナ,CI/CD,コンテナオーケストレーションを実現するための設計や構築をハンズオン形式で勉強できる内容になってます.

2章以降で扱うアーキテクチャ概要

2章以降で作るアーキテクチャの概要図は次のものです.

引用元: クラウドネイティブファーストストーリー P14 図2.1より引用

サービスとして登場するものも列挙します.

  • WAF
  • ELB(ALB)
  • ECS(Fargate)
  • RDS(Aurora)
  • ECR
  • CloudWatch(CloudWatch Events/CloudWatch Alarms)
  • CloudTrail
  • Systems Manager(Parameter Store)
  • S3
  • Cloud9
  • CodePipeline
  • CodeCommit
  • CodeBuild
  • CodeDeploy

読了後の所感

本書を読了して,メインのトピックであるコンテナ,CI/CD,コンテナオーケストレーションAWS で扱うためにサービスの概要や設計の観点を抑えながら画面キャプチャ付きで解説がなされていて初めてサービスを触る人にも丁寧な内容だと感じました.僕は本書で扱うサービスを業務や趣味の時間で触れていたのですが,全く触れてないサービスをドキュメント見ながら行うより具体的なイメージがあるととっつきやすいです.

個人的に 4章 の CI/CD を運用していくためのアカウントをどう分けるか,デプロイを各ステージでどう評価して次のステージに進む条件とするか,切り戻しをどうするかといった実際のノウハウが詰まっており,普段CI/CD を管理することがないためとても実践的なナレッジを学ぶことができました.4章は何度も読み直したいと思います.

本書で扱いませんでしたが,このアーキテクチャを Infrastructure as Code 化して横展開したり,CI/CD の中でモックを展開するための一時的な環境を構築するケースもあるかと思います.環境を作って壊してを迅速に行なって品質評価やリリースまでにスピードをあげるために必要なトピックかと思うので,本書のインフラのコード化をやってみるのも良いかと感じています.

そして,著者の@msy78さんと@HorseVictoryさんの発表資料が JAWS DAYS で公開されていました.本書の内容と重なる部分もありますので,合わせてチェックしておくと良いと思いました. speakerdeck.com

NEXT STEP: クラウドネイティブの勉強をより深くしよう

本書を読んだ後にさらに勉強を進めていくためにオススメの教材を紹介します.

クラウドスターターキット

本書同様に AWSクラウドネイティブのアーキテクチャを構築しながら技術を学ぶコンテンツとして @_y_ohgiさんが公開している「クラウドスターターキット」があります.Terraform を使って環境構築し,コンテナで動作する Golang アプリをデプロイするハンズオンになっています.本書では扱っていない Infrastructure as Code や監視,SLI/SLO にも触れられており,想定はソースコードを Fork して本番環境に適用することであるため実践的な内容です.これが無償で公開されているなんて神かな?と思えます.

y-ohgi.com

blog.y-ohgi.com

クラウドネイティブ・アーキテクチャ 可用性と費用対効果を極める次世代設計の原則

クラウドネイティブアーキテクチャを実現していくためのスケーラビリティ,セキュリティ,コストの最適化,運用といった技術と組織で活用していくためのトピックが扱われた書籍だと感じています.プラットフォームが AWS だけでなく,Azure,GCP の内容を含んでいるため,AWS 以外のプラットフォームもしくマルチクラウドの業務に当たっている人にもヒットすると思います.自分も読めてないので読んでみたいです.

Kubernetes で実践するクラウドネイティブ DevOps

CloudNatice Landscape でいうコンテナ,CI/CD,オーケストレーションやオブザーバビリティの部分を扱う書籍だと思います.Kubernetes の基本から始まり,クラウドネイティブでサービスを構成・移行・運用していくための勉強ができるのかなと思って僕も読んでみたいと思っている一冊です.

Kubernetesの基本から、継続的デプロイ、機密情報管理、オブザーバビリティなどの高度なトピックを扱う本書は、サーバ、アプリケーション、サービスを管理するIT運用者、クラウドネイティブサービスの構築や移行を行う開発者必携の一冊です。

Kubernetesで実践するクラウドネイティブDevOps

Kubernetesで実践するクラウドネイティブDevOps

Try Envoy

サービスプロキシのトピックで Envoy があります.その勉強としてやってみたいと思っているのが「Try Envoy」です.kakakakakku(id:kakku22)さんが紹介されていて気になっていたので,今後勉強したいと考えています.

www.envoyproxy.io

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

まとめ

クラウドネイティブファーストストーリー」で学べること,所感を整理しました.日本でもクラウドをシステム基盤に採用する事例が増えてきて,デファクトスタンダードになりつつあると感じています.そんな潮流でクラウドに乗せた後の環境を最適化するのはクラウドのメリットを得るために推進していくべきですが,AWSクラウドネイティブアーキテクチャを構成していくため設計や構築のポイントを勉強したい人にとってオススメの一冊だと思いました!