著者の西谷さんにAmazon Web Servicesを使ったサーバーレスアプリケーション開発ガイドを頂いたので読みました。予想以上に丁寧に書いていて、これから本格的にサーバレスアプリの開発をしようとしようという方には、非常にお勧めです。
サーバーレスアプリを取り巻く現状
最近ではサーバレスという概念自体はだいぶ広まっているのですが、すぐに作れるという部分のみにフォーカスしていることが多いです。解説されている内容も、設計手法というよりサービスの紹介と使いかた、或いはコードの書き方というのが多いです。結果として、どうなっているかというと取り敢えず動くけど、何か問題が起きた時に原因が解らない、対処の方法が解らないということが多いです。また、作った人しか全容を把握していなくて、担当者の異動や転職でニッチもサッチもいかなくなる事態というのを何度か見てきました。
サーバーレスアプリをチームで開発するためには
じゃぁ、どうすれば良いのか。個人的な見解としては、サーバーレスアプリも個人ではなくチームで開発するための体制を作るべきです。その為には何が必要かというと、標準的な考え方や開発手法です。実はこの部分について、AWSは色々なものを用意しています。例えば、アプリケーションを定義するモデルであるAWS Serverless Application Model (AWS SAM)であったり、フレームワークであるServerLesss Expressがあります。また継続的なビルド・デプロイを可能にするCodePiplineやCodeCommit,CodeBuild,CodeDeployなどもあります。ブラックボックスになりがちな実行状況については、CloudWatchやX-Rayで追跡可能です。
これらをどうやって使っていけば良いのか、包括的に解説しているのが本書となります。
Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイドの構成
7章構成となっています。
1章 サーバーレスアプリケーションの概要
2章 Amazon Web Services(AWS)利用の準備
3章 インフラを自動化しよう
4章 Twitterのリアルタイム分析をしよう
5章 写真投稿サイトをシングルページアプリケーションで作ろう
6章 サーバーレスアプリケーションのライフサイクル管理
7章 サーバーレスアプリケーションのトラブルシューティング
1,2章が概要説明と準備、3〜5章が実践編、6章が運用を見据えてどのように管理をしないといけないのか、7章が障害発生時にどう対処するのかといった内容です。個人的には6章の部分で、SAMや複数環境の利用、CI/CDについてしっかりと解説しているところがポイントが高いです。作ることを優先して、この辺りをおざなりにすることが多いので、少なくとも一度は読んでどうすべきなのかを把握しておくとよいと思います。
本書の特徴
章立ての他に、本書にはもう一つ特徴があります。画面の操作は最小限に、出来るだけコマンドラインで実行している点です。画面が少ない理由としては、AWSのUIは頻繁に変わるのでその対策だと思います。また、それを除いたとしても、実際の開発の現場ではコード固めて画面からアップしてという形ではなく、コマンドからデプロイするという方法に落ち着くと思います。そのあたりを考慮すると、かなり実践的な使いかたに即してよいのではと思います。
感想
おっさん視点なので、どうしてもサーバレスアプリを継続的に開発できるチームはどう作るかという視点で読んでしまいました。ここで書かれている手法は、もちろんチームではなく個人でも有効です。むしろ、まず個人として身につける内容です。そういった意味で、非常によい本だなと思います。
ハンズオン形式で実際に作りながら学ぶという形式なので、ここに書かれている内容を全てやりとげれば、現状のサーバレス開発の現場であれば、非常に重宝されると思います。ぜひぜひ挑戦してみてください。
※実は私も、まだ読みながら手を動かしていないので、時間見つけてやります
Amazon Web Servicesを使ったサーバーレスアプリケーション開発ガイド
- 作者: 西谷圭介
- 出版社/メーカー: マイナビ出版
- 発売日: 2018/03/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
以下、目次です
目次
Chapter1 サーバーレスアプリケーションの概要
1-1 サーバーレスアプリケーションとは
1-2 ユースケースとアーキテクチャパターン
1-3 サーバーレスアプリケーションのライフサイクル管理概要Chapter2 Amazon Web Services(AWS)利用の準備
2-1 AWSアカウントの取得
2-2 AWSにおける認証と認可について
2-3 リージョンの選択
2-4 AWS Command Line Interface(AWS CLI)の準備Chapter3 インフラを自動化しよう
3-1 Amazon CloudWatchのアラームをトリガーに自動処理をする
3-2 Webサイトの状態を定期的にチェックするChapter4 Twitterのリアルタイム分析をしよう
4-1 Amazon Kinesisを使ってTwitterのデータを受け取る
4-2 AWS Lambdaを使ってストリーミングデータをAmazon DynamoDBへ保存するChapter5 写真投稿サイトをシングルページアプリケーションで作ろう
5-1 Webサイトの概要を確認する
5-2 バックエンドのAPIを実装する
5-3 フロントエンドを実装する
5-4 Amazon Cognitoを利用した認証処理を追加する
5-5 Amazon Rekognitionを使って自動タグづけを行うChapter6 サーバーレスアプリケーションのライフサイクル管理
6-1 AWS Serverless Application Model(AWS SAM)詳細
6-2 複数環境の管理
6-3 デリバリプロセスの自動化(CI/CD)Chapter7 サーバーレスアプリケーションのトラブルシューティング
7-1 メトリクスのモニタリング
7-2 AWS X-Rayを利用したトラブルシューティング