kazutomoのブログ

たまーに気が向いたらなんか書きます

【書評】サーバレスシングルページアプリケーション

f:id:kazutomo:20170620130505j:plain

翻訳を担当された吉田さんより献本いただきましたので、感謝の意を込めて書評を書こうと思います。

 

この本は『サーバレスアーキテクチャ』でシングルページアプリケーションを作成する手順を順を追って解説する。というものです。
懇切丁寧というよりはかなり駆け足気味に思いましたので、初学者というよりはある程度開発経験のある開発者の人が触れるべき本でしょう。

本書は全8章構成ですが、最初の3章はシングルページアプリケーションを作成する準備のような章が続きます。
AWSのサービスはhtmlファイルを配置するためにS3を利用するくらいで、あとは js 上でモデルとビューをバインディングするなど、フロント寄りの話が続きます。

正直なところ、テーマ的に避けられなかったのだと思いますが、このあたりは時流の変化も速く、フレームワークによって差が大きい部分なのでここまで細かく説明する必要なかったのでは無いか。という気もします。

4章以降はAWSに関する話題が続きます。

  • 4章 Cognito
  • 5章 DynamoDB
  • 6章 Lambda / API Gateway

Cognito はシングルページアプリケーションでユーザ認証の仕組みを使うにはどうすればいいの?という課題への対処法に徹しており、Cognito Sync のようなデータ連係周りは一切触れていません。
内容も非常にさっぱりしているので、迷うことはないと思います。

DynamoDB は Cognito から得たIAMを使って直接AWS SDKをたたいて使うスタイルで解説されています。
他人のリソースにアクセスできないようポリシーの設定手順なども解説されています。

私の個人的な意見としては、この方法は現実的に運用が難しいと思っています。
というのも、他人のリソースにアクセスすることは IAMポリシーで制限できたとしても不正な値を書き込むことを止める手段が無いためです。

 

Lambda は実行できるようにする手順を解説することに重きをおいており、ノウハウやTIPSはほぼ無いと言っていいでしょう。
たとえば、Lambda は Python, Java, node.js が使用できる(C#はどこへ…)と記述があり、本書では node.js を使用しているけれどこれは(著者にとって)最後の選択肢でしょう。と記述しているにもかかわらず、なぜそうなのか?には触れられていません。

このあたりのディープな内容について知りたければ AWSJ の西谷さんが書かれた Lambda本 のほうが実用的なノウハウが詰まっていると思います。

実践AWS Lambda ~「サーバレス」を実現する新しいアプリケーションのプラットフォーム~

実践AWS Lambda ~「サーバレス」を実現する新しいアプリケーションのプラットフォーム~

 

 API Gateway は本当におまけ程度で触れられています。著者は AWS SDK で直接 Lambda を実行すればいいじゃない。というスタンスのようです。
個人的には API Gateway はリクエストデータをトランスフォームして Lambda に渡せるところに魅力を感じていますので、このあたりの解説をしてメリットデメリットを並べてないのは少し残念かな。という印象です。

 

7章 ではサーバレスアーキテクチャでセキュリティをいかに実現するか。というテーマです。
基本的にはシングルページアプリケーションに関係なく一般的なWEBサイトでも課題となることが書かれていると思います。
DynamoDB でもクエリインジェクション対策が必要。などおそらく読者が知りたいところにも触れられています。
ただ、DoS の対処方法として S3 の前段に CloudFront をおくという解説がありますが、保護するべきところは本当にそこでしょうか?という印象を受けました。
DynamoDB とか気になる部分がほかにもある気がしました。

 

8章は運用に関する内容です。
キャパシティ管理・ログ・コスト計算といった運用時に必要となる知識について一通り触れられています。
ただ、S3のログ解析に s3 sync でローカルに持ってきていますが、せっかくなので Athena を使うとか、もう少しディープな内容に出来たような気もしますし、CloudWatch にたまったログはどうすればいいんでしょう…。

 

冒頭で感謝の意といいつつ、辛口コメントが続いてしまいましたが、これ一冊で実戦投入できるほどの知識が得られるものではなく、広く浅くシングルページアプリケーションの開発で必要な部分のみつまみ食いした結果を解説した本である。という理解をした上で読めば、現状この手の本の代わりはありませんので、いい本だと思います。