2015年11月12日にAWSさん主催で開催された「第8回 AWS Startup Tech Meetup」に登壇者として参加してきました。

AWS篠原さんのイベントレポートはこちらです。

まさかの30分枠をいただいて何を話そうかと思ったんですが、今一番触ってるのはReactなのでその話をしてきました。

ただ問題はフロントエンドやからAWS関係ない・・・ということでフロントエンドとAWSのサーバーレスアーキテクチャの話を後半入れたんですが、参加している方もさすがにAWSもりもり触ってる人が多かったのでこっちの方が盛り上がりました。

資料こちらです。

というわけで自分の発表でのディスカッションや他の方の発表、その後の雑談などで色々勉強になったので、上記の資料にない部分をまとめました。

Google botはjavascriptの実行結果をインデックスしてくれてる?

スライド内にもリンクを貼ってますが、クラウドネイティブ化する未来というスライドを初めて見た時に、サーバーレスアーキテクチャの部分で結構衝撃を受けました。

それまでLambdaとかAPI Gatewayとかいまいち嬉しさがよくわかってなかったんですが、そういうことかー!っていうのがこのスライドでわかった感じです。

そのサーバーレスアーキテクチャの導入を考えた時にネックに感じてたのが、サーバーサイドレンダリングできなくなるのでGoogleにちゃんとインデックスされる?っていうところでした。

発表中に「去年の夏ぐらいに試したらだめっぽかったらから無理やりサーバーサイドレンダリングした」っていう話を教えてもらったんですが、発表後に別の方が「軽くググってみたら今年の5月ぐらいにうまくjsの実行結果がインデックスされてるという記事を見つけた」とのこと。

あとでググってみたら確かにありました。ちゃんと調べてから喋れっていう話ですね・・・
We Tested How Googlebot Crawls Javascript And Here’s What We Learned

もちろんプロダクションのサービスに導入する時はきちんと自分で検証すべきだとは思いますが、サーバーレスアーキテクチャー導入をかなり前向きに考えていい段階になってきたと言ってもいいのかもしれません。

SPONSERD LINK

ていうかそもそもサーバーレスでもサーバーサイドレンダリングできるやん

サーバーレスアーキテクチャーのスライドでは、フロントエンドの静的ファイルをS3に置いてAPIをAPI GatewayとLambdaで実装するという形でしたが、そもそもAPI GatewayとLambdaでHTML返しちゃってもいいよねみたいな話も出てきて、その発想はなかったと思いました。

なんかそうするとAPI GatewayとLambdaを使ったWEBフレームワークが出てきてherokuみたいな使い方もできるようになるんかなーとか妄想が膨らみましたが、その辺はまた自分で触る時に色々考えてみたいと思います。

API GatewayとLambdaのフレームワーク

API GatewayとLambdaは、発表に入れたもののAWSの画面上でぽちぽちいじってみただけなんですが、ちゃんと使う時は話に出てきたこういうフレームワークを使ってみようということでメモっておきます。(まだよくわかってない)

なんかこのAPI GatewayとLambdaっていちいち書くと長いのでこのセットにきれいな名前をつけていただけると嬉しいです・・・

みんなデプロイフローがすごい

これはぼくの発表全然関係ないんですが、デプロイ方法が「Auto Scaling Groupを毎回作って切り替える」とか「Dockerでimageをpullしてnginxで切り替える」とか、みなさんなかなかハイレベルなことを当たり前のようにやっててめっちゃ刺激を受けました。

うちはというと、今作ってる新規サービスはローンチ前というのもあってステージング環境と本番環境1個ずつのインスタンスにcapistranoでアプリ置き直してるだけで、ずーっと1インスタンスを使いまわしてます。新しいミドルウェア入れる時も上からitamaeのレシピ流し直すだけみたいな。

まずはAuto Scaling Groupだけ作っとけば1台運用でも落ちたらすぐもう1台立ち上げてくれるというアドバイスをいただいたので、本番サーバーの冗長化も含めてこの辺は早めに対応しようと思ってます。immutable化も早くやりたいですが、まずはローンチしてユーザーを増やすところからということで・・・

余談ですが、Dockerを本番サーバーに使うメリットがいまいちピンときてなくてchefとかitamaeのレシピのテストぐらいでしか使ったことなかったんですが、みなさん結構デプロイの時にEC2インスタンスを新規に立ち上げるのが時間かかるっていう話をされてたので、確かにimmutableにするとインスタンス立ち上げるよりDockerのコンテナ作った方が速いよなーっていう気付きがありました。

まとめ

そんなこんなで非常に内容が濃くて勉強になりました。お誘いいただいた篠原さん、色々知見を共有してくださった参加者のみなさま、ありがとうございました!