書籍名 : Amazon Web Servicesを使ったサーバレスアプリケーション開発ガイド
著者 : 西谷圭介
#はじめに
数年前私がオンプレミスのサービスの管理をしていた時、インフラの運用管理は日々の仕事の中で常々解放されたいことの一つでした。
その後クラウド化の流れの中で「サーバレスアーキテクチャ」という考え方があることを知り、言葉から連想される解放感と格好良さに飛びついてしまったのですが、その不得意分野や注意すべき点の気づきがあり、過去の考え方からの転換が必要だと感じることが多々ありました。
最近では少し慣れてきたと思っていましたが、まだまだ触れたことのない新しいサービスや考えもしなかった組み合わせがあることを知り、学び直すため一冊読んでみようと思って『サーバレスアプリケーション開発ガイド』を購入しました。
#概要
目次は次のとおりです
1 サーバーレスアプリケーションの概要
2 Amazon Web Services(AWS)利用の準備
3 インフラを自動化しよう
4 Twitterのリアルタイム分析をしよう
5 写真投稿サイトをシングルページアプリケーションで作ろう
6 サーバーレスアプリケーションのライフサイクル管理
7 サーバーレスアプリケーションのトラブルシューティング
初めてAWSに触れる人でもサーバレスアプリケーションの構築に着手しやすいように、AWSアカウントの取得方法やAWS CLIの使い方から書かれていて、最近よく見るワークロードやユースケースについて基本的に手を動かしてサンプルアプリケーションを作っていきながら詳しく知ることができるように記述されていました。
また、作って終わりではなく、実際にプロジェクトで長く運用していくためのノウハウや管理運用方法まで書かれていて、CloudWatchを使ったメトリクスの確認方法、トラブルシューティングとしてX-Rayの利用方法で締めくくられています。
なお、AWSコンソールの使い方は最低限で、ほとんどAWS CLIを使った記述となっています。
すべてのソースは書籍のサイトからダウンロードできるようです。
AWSはサービス更新頻度が多いため最新のドキュメントと照らし合わせて見ることは必須だと思います。
#感想
Chapter5の写真投稿サイト構築が面白かったです。
API Gateway、Lambda、DynamoDBを使った一般的なAPIの構築と、クライアントアプリ側はVue.jsを使ったSPAを作る手順が詳細に記載されていました。
Lambdaはリクエストのたびに作られるコンテナであることからDB接続におけるコネクションプールの実装が難しく、RDBMSとの相性が良くありません。これは例えばキャッシュの実装が難しいなども同様の理由であり、Lambdaがステートレスであることを理解しておく必要があります。
そして、S3からイベント駆動でLambdaを経由してAmazon Rekognitionで画像解析をする例が出てきます。Rekognitionは思っていたほど導入の敷居が高くない印象で興味深かったですが、それ自体よりも「イベント」について考えさせられました。
S3からのイベント駆動はPushモデルですが、KinesisやDynamoDBをイベントソースとするPullモデルではLambdaがそれらへポーリングしてイベントを取得します。サーバレスをどう活かすか、どのように応用するかを考える時に、このイベントの使い方、特徴を知っておくことが重要であると改めて感じることができました。
#まとめ
サーバレスの利点を知り楽しむことができる良い書籍でした。
サーバレスはまだまだこれからの技術で、サービスの組み合わせで面白いことができそうだと思っています。
AWS re:Invent2018ではどんなサービスが発表されるか楽しみです。