はじめに
Amazon Web Servicesを使ったサーバーレスアプリケーションを
西谷さんに献本いただきました。ありがとうございます!!
サーバーレスアプリケーションに関して、
語句の説明からユースケース、コード例まで、まとめられていました。
サーバーレスアプリケーション(AWS)入門へは、内容の濃い、
とても良い本だと感じました。
本書くの大変そうだけど、面白そうだなー!!
思ったこと
Lambda!!!!
サーバーレスの文脈においての主役。
「いか上手くLambdaをユースケースに乗せれるか」がポイントかな。と。
例として挙げられているのは、
- Twitterのリアルタイム分析
- 写真投稿サイトのシングルページアプリケーション
Twitterのリアルタイム分析
要するに、クライアント側から、大量データがKinesis Data Stream
に
流れてくるので、Event Source
付けてLambda
でリアルタイムに
処理しましょう。って感じ。
メリットとして、
- データが入った時しかプロビジョニング(課金)されない
- 大量データをシームレスにスケールさせてさばける
ここでは、Lambdaで処理させた後、DynamoDBへデータが格納される例であった。
Lambdaの後ろのデータストアが「なぜDynamoDBか。」に関して、とても重要だと思う。
上記に関して、後ほど詳細な説明があった点が、かなり良かった。(5-2 p87~)
写真投稿サイトのシングルページアプリケーション
こちらの例では、認証・認可から始まり、S3ウェブホスティング等で実装。
バックエンドをAPI Gateway
, Lambda
, DynamoDB
等で実装。
特に5-2
p86~がなぜ
このサービスを選定したのか。
という理由が書かれている。
AWSをベンダーに選ぶ上で重要なのは、この__サービス選定__だと僕は思ってます。
数あるサービス群の中から、システム要件にマッチしそうなサービスを選択することは、
とても難しく、これを間違えると、
__とても大きな損失(時間・コスト・リスク)__につながりかねません。
また、サービスの使い方も一通り、コード例を交えながら書かれている。
こちらも実際に動かしながら、学習できるので良いポイントだと思いました。
6章 サーバーレスアプリケーションのライフサイクル管理
ここもとても重要な章だと思います。
ここではSAMを使った例、複数環境(dev環境, test環境, prod環境)の管理方法など紹介があり、
参考になります。
7章 トラブルシューティング
運用ですね。
サーバーレスで開発すると、〜のメリットがある。と冒頭部分にいろいろ書かれていました。
- サーバー運用から解放される
など。
ですが、反面、実際のシステム・アプリケーションの運用は、複雑で大変になると僕は思っています。
そのデメリットを解決するために、運用基盤を早期から整えておく必要があります。
ここがしっかりしていないと、運用が回らず、すごく苦労することになると思います。
DevOps!!!!
がすごく大切だと思います。
さいごに
開発ガイドとしては、とてもわかりやすく、手を動かしながら学習できるので、おすすめです!(僕は動かしませんでしたがw)
あと、最近気づきましたが、サーバーレス(シームレスにスケール)の文脈に
Step Functions
は、あまり有効ではないように思います。(使い込んでみると、限界がくる。)
サーバーレスに組んでいくと、機能が小さい単位で切り出されていって、マイクロサービス風
に近づくように設計されていくのかな?なんかふと、思いました。