見せてあげますよ、本当のサーバーレスを
どうもこんにちは。
初日ですね!張り切っていきましょう!
はじめに
本当のサーバーレスというのは、あくまでBKS(ぼくの考えた最強の)シリーズで、
現時点での実現可能性を無視します!ごめんなさい!
また、もともとWebエンジニアなのでWebエンジニア視点のお話をします。
ぼくのかんがえるサーバーレスのていぎ
ひとことにサーバーレスといっても人によって様々で、
色々な概念(FaaS, NoOps, Client <> Server, etc...)が混在してたり、
観点の違いから捉え方が大きく違ったりしてる印象が強いです。
なので、「ぼくはこうかんがえているよ!」「だからこうしてそれらを実現しているよ!」ってお話をします。
余談ですがぼくは サーバー
のことを サーバ
と表記・発音するので今日はいつもより頑張って1文字多くうっていきます!
ぼくはこう考えているよ!
ざっとあげるとこんな感じです。
- FaaSを利用しない
- BaaSを利用しない
- アプリケーション・サーバーを利用しない
- クライアントの対義語のサーバーの概念ではない
- スケールという概念を意識しない
- DBサーバは持ってよい
サーバーレスっていうくらいなんだから、 「自前サーバーが存在しない」 という概念ではなく、
どこにもアプリケーション・サーバーが存在しない、そんなものとして定義しています。
この考えをもって何かを作っている、とかではなく、どうせならこうなってほしいという願い成分が多めです。
じゃあどうするのさ?
Webエンジニア的に
- 守りたいものはデータ(およびデータベース)である
- SPA + APIでサーバーがHTMLを返却する時代は終わ[る|った]
みたいな感じなので、あとは突破すべきものが認証・認可のみなのでは!?と考えています。
認証・認可でさえ、フロントエンドから直接データストアを読みにいくことができれば可能!?(今回はAWSのCognitoに甘える)
つまり こういう こと
具体的にどう実現したか
WordPressのようなブログをAWSのみで完結させる想定
- S3
- AWS SDK for JavaScript
- Cognito
- ログインユーザにDynamoDBのWrite権限を付与
- DynamoDB
- Read: 誰でも
- Write: 認証済みユーザのみ
やってみてどうだったのよ?
コスト(学習)
☆☆☆
JavaScriptさえかければ、公式ドキュメントが整っていてすぐにはじめられる == 低い
だが、AWS限定になってるので、AWSはじめての人にはつらいかもしれないので☆3つ
コスト(おかね)
☆☆☆☆☆
コンピューティングのナニガシを使わないのでやっすい。
これ以上いうことない。
運用面(メンテナンス性)
☆☆☆☆
金額コストと同じく、コンピュートレスなのでNoOpsっぽく扱えてとても楽
ただDynamoDB特有の何かとかに当たると一気にハードルがあがる気がする
性能
☆☆☆☆
ブラウザ <-認証基盤-> データストアなので、ボトルネックが少なくはやめ
ただフルマネージドな認証基盤を使うことで管理不能なパフォーマンスがボトルネックになるかもしれないなーって思った
おわりに
AWSにかぎらずFaaSや認証基盤が整ってきていて、サーバーレスを手軽にはじめられる時代なんだなーと深く感じました。
ただ、Webの視点からだと通信のオーバヘッドが大きくなってしまったり、インターネットにロジック公開するのか?っていう疑問があったり
脳死状態でサーバーレスでやるんじゃあ!とまではいかなそうでした。
逆にバッチ系はFaaS一択だと思います。
なんか 言ってることおかしいぞ
とか それは違う
みたいなことがあれば是非コメントにてご指摘ください。
余談
フロントではないけどすでに玉川さんが2年も前に書いてて悔しい。
http://qiita.com/KenTamagawa/items/36238d6264ee14c2b50f