ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

書籍「Azureコンテナアプリケーション開発」の感想

Docker コンテナを扱う書籍は多く出版されていますが、Microsoft Azure を使うアプリケーション開発者目線で書かれた書籍が出版されると知って、早速「Azureコンテナアプリケーション開発 」を読んでみました。

目次

第1部 コンテナ技術の概要と動向、コンテナを活用したアプリケーション開発ワークフローを学ぶ
 第1章 アプリケーション開発者のためのコンテナ技術
 第2章 コンテナ活用で変わる開発体験 ── Dev Container、GitHub Actions
第2部 シングルコンテナアプリケーションを作って動かす ── Azure Web App for Containersを使う
 第3章 コンテナ実行環境にPaaSを使うという選択肢 ── Web App for Containers
 第4章 Web App for Containersでのコンテナアプリケーション開発ハンズオン
 第5章 Web App for Containers内のコンテナから別のリソースを利用する
 第6章 ユーザーを識別する
 第7章 可用性と回復性を高めるWeb App for Containersの運用設計
 第8章 プラットフォームやアプリケーションを監視し異常を検知する
第3部 マルチコンテナアプリケーションを作って動かす ── Kubernetes生まれの開発者向けマネージドサービスAzure Container Appsを使う
 第9章 コンテナ化の強みを活かせる分散システムにおけるアプリケーション開発
 第10章 Container Appsでのコンテナアプリケーション開発ハンズオン
 第11章 Container Appsによるマルチコンテナの運用

書籍で解説されているサンプルコードは、GitHub でも公開されています。
github.com

どんな書籍なのか

この書籍は、Docker コンテナを知っているけれども、まだ本番運用システムではコンテナを使ったことがない Web アプリケーション開発者に読んでほしい書籍です。

第1部では、アプリケーション開発者がコンテナを使うと何がうれしいのかが説明されています。これまでコンテナはインフラ目線でのメリットを語られることが多く、アプリケーションは従来通り開発したものを Docker Image にビルドすればいいと言われていました。しかし、Dev Container や GitHub Codespaces の登場によって、アプリケーションの開発環境自体をコンテナ化しやすくなりました。この新しい開発体験は、複数案件を並行開発するケースやハンズオンを行うケースに限らず、チームでの開発や運用に大きな変化をもたらすものだと思います。

第2部では、Web Apps for Containers にサンプルアプリケーションをデプロイし、本番運用するための実践手法が説明されています。おそらく Web Apps for Containers を詳しく説明した書籍は初めてだと思いますし、Deployment Slot や Easy Auth など基本的な機能に加えて、外部リソースに接続する際の SNAT ポート枯渇問題への対策にも触れているのはいいなと思いました。セッション管理のための Azure Cache for Redis に認証するところでは Service Connector を使用しており、最新の Azure の機能にも触れています。また、運用設計として可用性と回復性を高めるための PaaS ならではの構成や設定にも触れており、本番運用に必要となるスキルを学ぶことができます。

第3部では、マルチコンテナで構成されたサンプルアプリケーションを Container Apps にデプロイし、開発と運用の流れを説明しています。Container Apps の基盤となっている Kubernetes、リビジョンを使った Blue-Green デプロイ、 KEDA によるイベント駆動開発、GitHub Actions での CI/CD パイプラインの概要を学ぶことができます。この書籍だけを読んで Container Apps を使いこなすのは難しいですが、取っ掛かりとしては良いレベル感だと思います。

まとめ

Azure PaaS を活用してアプリケーションを開発・運用するメリットは Speed と Agility だと考えています。これらのメリットを加速させる技術や環境が揃いつつあることが分かる内容になっており、まだコンテナを使ったことがないアプリケーション開発者にお勧めしたい書籍です。