【書評】「サーバーレスシングルページアプリケーション」で手を動かして学ぼう
大栗です。
本日2017年6月23日に株式会社オライリー・ジャパンより「サーバーレスシングルページアプリケーション――S3、AWS Lambda、API Gateway、DynamoDB、Cognitoで構築するスケーラブルなWebサービス」が出版されました。監訳をされている吉田真吾様から本書を頂きましたので、書評を書きたいと思います。
サーバーレスシングルページアプリケーション
――S3、AWS Lambda、API Gateway、DynamoDB、Cognitoで構築するスケーラブルなWebサービス
弊社事務所の近くにある書泉ブックタワーにも置いていました。
本書は200ページ余りと分厚くないため読み進めやすく、経験が少ない方でもチュートリアルとして手を動かす事ができます。
「はじめに」に以下の本書の指針が書かれているのですが、特に「Yak Shavingを避ける」と「手を動かして学ぶ」に感銘を受けました。新しいものを学ぶ時には、本筋から外れたことをせずに、実践的に行うべきですね。
- Web標準となじみのツールを使う
- JavaScriptを関数型言語として使う
- Yak Shavingを避ける
- テストを使ってすばやく動かす
- 手を動かして学ぶ
- 整備済みワークスペースで始める
また、途中途中に『ジョーの質問』が挟んであり読み進めていくと湧いてくる疑問に解説をしてくれるため、理解が進みます。自分が書き物をするときにも『ジョーの質問』を真似たいと思っています。
各章について
1章 シンプルにはじめる
なぜサーバレスなのか利点と制限について述べられており、AWSや開発をすすめる環境のチュートリアルを解説しています。gitについて簡単なコラムがあるのも入門者が無理なく読み進めるための手助けになると思います。
2章 ハッシュイベントによるビューのルーティング
シングルページアプリケーションの動作を簡潔にまとめています。テストファーストが前提のチュートリアルになっており実際に開発を行う時を疑似体験できます。
3章 シングルページアプリケーションに必要なもの
シングルページアプリケーションのデータモデルやI/Oを解説しています。
4章 Amazon CognitoによるIdentity as a Service
Cognitoを使って外部の認証プロバイダを利用した認証のやり方を解説しています。自前でDBにユーザ情報を保存して認証を行わずに外部サービスを利用するところがクラウドらしいです。コラムでも触れていますが今ならCognito User Poolもあり選択肢が広がる分野ですので「手を動かす」ことが理解を進めることになると思います。
5章 DynamoDBにデータを格納する
最近もLambdaとRDBMSで相性が悪い事についての解説記事がありましたが、Lambdaで相性が良いデータストアはDynamoDBです。本章ではDynamoDBの基礎を解説しています。ここを理解することで、AWS上のシステムを作る時のアーキテクチャで選択の幅を広げられるでしょう。
6章 Lambdaを使って(マイクロ)サービスを作る
Node.jsを前提としてLambda + API Gatewayのサーバーサイドを実装するチュートリアルになっています。
(個人的に一番ウケたのは、『何故Node.jsなのか?』というコラムの「正直に言うと」から始まる一文でした。著者のBen Radyさんは本当に正直な人なんだなと思いちょっと親近感が湧きました。)
7章 サーバーレスのセキュリティ
AWSのセキュリティ対策の考え方として責任共有モデルがあるので低レイヤーなインフラストラクチャについてはあまり考えなくて良いのですが、適切なアカウント管理やアプリケーションは適切な対処が必要です。セキュリティに1章を費やしてWebアプリケーションへの代表的な攻撃手法を解説しています。サンプルのアプリケーションではセキュリティを考慮しないことが多いので、セキュリティの重視は目をみはります。
8章 スケールアップする
サービスを大きくする時に考えるべきことが纏まっています。原書が書かれたのが1年前なのでトラフィックの解析をシェル芸で行っていますが、今ならAthena + QuickSightで解析や可視化までサーバーレスにできそうです。
さいごに
全体的に丁寧な説明になっているため、手を動かしやすくなっています。シングルページアプリケーションの開発について実践的に一連の流れを解説しているので、サーバーレスなアプリケーションの開発を一から体験できます。サーバーレスアプリケーションを取り巻く環境は急速に変化しているので、本書を足がかりとして現在のトレンドをキャッチアップしていくと良いでしょう。
これからサーバーレスなアプリケーションを作ろうとしている人は、本書で素振りをしてから本番に臨むとスムーズに開発できるのではないでしょうか。