書籍、オライリー サーバレスシングルページアプリケーションの感想
JS (Jquery) + ASW ( S3, IAM、Cognito, Lambda, API Gateway, DynamoDB )を使用した簡単なクイズアプリをハンズオン形式で作成していく。
また、本書ではフルスクラッチというわけけなく、GitHub - benrady/learnjs: Prepared Workspace for "Serverless Single Page Apps" @ Pragprog をcloneなりforkなりしてsspaというawsクライアントwrapperを使用して製作を進めていくことになる。
良かった点
- AWSの各サービスがどういうものか懸念は知っているけど使用したことはない人向け。実際に触れて動作させることができる。
- とっかかりには丁度いいくらいのボリューム感だった。
- 「VueやReactで構成されたSPAからアクセスするサーバレスなインターフェースを設計」という懸念を持つことができる。
- ここは結構大きいことだと思ってバックエンドのフルスタックなMVCの呪縛から開放されるイメージを持てた。
イマイチな点
- IAMロールはAdministrator笑
- AWSのデプロイをsspaという書籍著者の自作aws cliで操作するが、本書を購入した人はAWSへのデプロイも自身で勉強したいのでは?と感じた。
- ハンズオン形式なのだが、コード差分、編集するべき部分が分かりづらい。
- 作成するアプリボリュームは小さいので、各コンポーネントの実践的な扱いまでは踏み込まない。
- Cognito認証の実装部分の説明が不十分なように感じた。
- credentialのリフレッシュ処理の部分
- coginitoのidentifierでDynamoDBのアクセスコントロールポリシーをする部分など
- DynamoDBは別途、調べながら進めた。写経している時、こういったページも一緒に読んでいた。
- https://hack-le.com/dynamodb-query/
- DynamoDB ベストプラクティス - Qiita
- 列指向だけど、正直にレンジキーすべて取得するとデータサイズ次第でお金がいっぱいかかるらしい。
- Cognito認証の実装部分の説明が不十分なように感じた。
こうやって見るとイマイチなところが多く見えるけど、それでもサーバレスな懸念を試せたということは非常に大きなメリットだと感じた。
あとは、どう実践を学習していくか...
バックエンドの話し
SPAでMVCのVの概念が引っ剥がされて、バックエンドエンジニアは各フレームワークにごとに用意されたテンプレート構文を覚える必要がなくなった。Viewの作成は、別工程に渡せばよい。
そうなった時、SPAからはリソースにアクセスするエンドポイントがあればいいだけで、バックエンドはMを実行するインターフェースを用意すればいいだけだ。
とはいえ、アプリケーションには入力値の検証、認可やリソースの状態によっての制御が必要なわけで、単純にインターフェースとモデルのみの実装とはいかないが、AWS Lambdaにある程度の責務を担わせるのはアリだと思った。(と思って調べたところrequest validationはAPI Gatewayですでにmetaデータで設定できるらしい)
認可に関してはすでにCognitoのポリシーである程度のことは解決できるはずだ。
MVCはJSがDOM操作をするブラウザ付属のデザイニング言語だった時代のプラティクスで、JSがカジュアルにリソースアクセス可能となった現在、MVCというバックエンドのテンプレートルーチンの必要性は希薄になってきたのかもしれない。