どうもこんにちは。
初日ですね!張り切っていきましょう!

はじめに

本当のサーバーレスというのは、あくまで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

元記事はこちら

見せてあげますよ、本当のサーバーレスを。