というわけでブログを書くまでがYAPC、…ではなくWorkers Tech Talksということで、記憶が新しいうちに書いています。
今回このWorkers Tech Talks #workers_tech で
Cloudflare Workers + R2で低コストで画像配信を移行した話
speakerdeck.comというお話をさせていただきました。
こんな機会は人生の中でもなかなかないだろうと思いますので、
個人ブログなら良いかなということで思ったことなどを書いておきます。
# なぜ自分に声がかかったのか?
まず、今回のお話は前段がありまして、
の吉祥寺.pm 32 で、あくまでもPerlを知っている方が多い場所であれば無理やりでもCloudflare Workers とPerlをくっつけて話せばちょっと面白いかも、というところから始まりました。
この時の話を
qiita.comという記事にまとめていたのですが、
それをHono
hono.devのyusukebeさんに見ていただいて、というところから始まりました。
自分にとってのyusukebeさんと言えば、Honoのyusukebeさんではなく、
Perl/YAPCのyusukebeさんという印象で、ずっと憧れていたハッカー、Perl Mongerでした。
そんなyusukebeさんから、突然今回のお話のお誘いがありました。
今回のWorkers Tech Talks参加メンバーを伺った時に、ここに自分なんかが入って良いのか、フロントエンドも全然わかっていないような泥臭いPerlインフラ野郎が居るのは明らかに異質ではということで、一度は本気でお断りしようかどうかと悩みました。
自分は長いことPerlに飯を食わせてもらっていたものの、yusukebeさんやmiyagawaさんのようにOSSで貢献出来るようなコードを書くセンスがあるわけでもなく、レガシーなプロダクトを泥臭く運用したり、地味にバグ改修したり、日々海外のスパムと戦ったり、EOLになるOSをコンテナ化して延命させたり、DBやファイルサーバのクラウド移行や裏側のライブラリをアップグレードさせたり、少しでもサービスが長生き出来るようにコストを安くする方法を考えたりという、本当にサービスの裏側の泥臭い事ばかりでした。
みんなが期待するようなキラキラしたお話には出来ないという自信のなさがありました。
その一方で、YAPC::Japan 2019でのsongmuさんの名トーク
で、この一節を思い出しました。
使うこと「だけ」でも貢献
- ただし使っていることを隠さない
- 可能なら問題や疑問を報告する
Pull Requestを送るだけが貢献ではないという言葉を思い出しました。
# コミュニティへの貢献への一例
— teckl (@teckl) 2019年1月26日
- ブログを書く
- Qiita でもOK
- Twitterでもいいけれど、検索に引っかかることが重要
- twitterやチャットでコミュニティに聴いたことはブログにまとめる
-> コミュニティへの貢献に繋がる
- イベント参加レポートも貢献になる
#yapcjapan #yapcjapanHall
自分にはライブラリを作ったりする能力は無いですが、
Cloudflare Workers + R2やHonoのような素晴らしい技術を使っているという事、
また、例えそれがPerlの古くて歴史のあるサービスであってもその恩恵を受けることが出来ました、という事であれば自分なりに伝えられるのではないかと思いました。
正直なところPerlに興味のあるユーザ向けイベントでない事はわかっていましたが、
何より今回R2への移行によって多大なコスト削減を行うことを実現させてくれたCloudflare社様への感謝として、個人的な趣味で敢えてPerlを少し出しつつも再編集してお話させていただくことにしました。
# 本番当日
#workers_tech Workers Tech Talks #1 始まった…! pic.twitter.com/CaBTiApYDU
— teckl (@teckl) 2023年7月19日
yusukebeさんのオープニングトーク、さらっと「Honoを作っています」と言えるのはすごいです…
ほぼ全員が Workers、Edge に興味がある方しか居ないイベントということで、最初からすごい熱気でした。
---
## @chimame_rt さんによる GraphQL Server on Edge
今日の発表資料です!ご清聴ありがとうございました!! #workers_tech / "GraphQL Server on Edge"https://t.co/5nBYl0N4w8
— ちまめ@rito (@chimame_rt) 2023年7月19日
GraphQL API ServerをCloudflare Workersで実現するということで、
Cloud RunからCloudflare Workersに置き換えてみたというお話でした。
自分も先日のCloudflare WorkersからTCP接続がサポートされたというニュースにはびっくりしたのですが、あいにく自分はGraphQL API Serverを書くといった仕事は無かったので、実用出来るのはまだまだ先なんだろうなぁ、となんとなく考えていました。
実際に置き換えてみて、デプロイの高速化や、インフラコストの劇的な改善に繋がったということで、機会があれば試してみたいと思いました。
また
zenn.devの記事には難しいと思っていたPostgreSQLでコネクションプーリング的な事も出来ると言ったテクニックもあったりして、後でじっくりと読んで試してみたいです。
---
## @hiroshi3110 さんによる Gyazo の素朴な Workers
#workers_tech 発表資料です。https://t.co/pO6vhC1Nvi
— hiroshi (@hiroshi3110) 2023年7月19日
Helpfeelの @hiroshi3110 によるGyazoのWorkersの裏側の紹介でした。
画像の直リン対策、自分も昔少し考えたことがありましたが、Apache/Nginxなどだと素朴にリファラチェックやUA判定くらいかなぁというくらいでしたが、実際には結局泥臭い細かいルールが必要になったりしそうで、confでやるのは意外に面倒そうだったり。
それがCloudflare Workers化することによってエッジだけで任意にHTMLを返したり、柔軟にカスタム出来る、というのは面白いなぁ、と。
Partner Peering で GCP egress 料金が半額という点、
wrangler がない時代から5年以上安定して運用できているというのも良いお話でした。
@hiroshi3110 さんには個人的に懇親会でさらに裏側の話も含めて深くお話させていただき、画像配信サービスの難しさなど、とても参考になりました。
---
## 自分のトーク
さきほどの資料
— teckl (@teckl) 2023年7月19日
「Cloudflare Workers + R2で低コストで画像配信を移行した話」になります。
ありがとうございましたー
https://t.co/nJ9NrM7hHm #workers_tech
休憩を挟んで、いよいよ自分の発表。
コロナ禍もあり、数年ぶりのリアル登壇だったのでめちゃくちゃ緊張しました。
正直なところ、一度前にも発表している内容だったのであまり反応無いだろうなぁという事で予想していましたが、後でハッシュタグ
https://twitter.com/search?q=%23workers_tech&src=typed_query&f=live
を追ってみたら好意的に反応していただいたようで、本当に大感謝です。
少し裏話としては、後半のリリース後のS3のオブジェクトキーの話は、前日になって15分枠から20分枠に変更になったので時間調整的な意味も込めて追加したのですが、かなりのエッジケースだし最近の新しめのサービスの運営的には参考にもならない話だろうなぁと思いつつも、ここが一番ネタ的に反応していただいていたので追加してよかったな、と。。
時間も早口で説明してもぴったり20分くらいだったので、15分枠じゃなくて結果助かりました。
---
## @mizchi さんによる Server Side JavaScript のためのバンドル最適化
#workers_tech
— mizchi (@mizchi) 2023年7月19日
資料アップロードしました(まだいじるかも)https://t.co/fiYPTLJNJw
お次は @mizchi さんによるバンドル最適化のお話でした。
Dockerコンテナサイズを少しでもスリムにしたいというのはわかりましたが、バンドルサイズやスクリプトサイズの上限で悩むといった苦労をしてこなかったので、パフォーマンスのためにはここまで意識しなければならないのか、というのが非常に参考になりました。
wrangler deploy を単純にそのまま使わせていただいている身からすると、裏側でバンドルサイズ対応のためにここまであるのかは未知の世界だったというのと、ExpressからHonoに変えるとここまで小さくなるのは流石だなぁ、と。
Edgeの世界になると、パフォーマンスバジェットとして1MBというのを意識する必要があるというのはめっちゃ勉強になりました。
---
## @codehex さんによる gRPC Client on Cloudflare Workers
Cloudflare Workersで gRPC を動かすというお話。
yusukebeさんだけでなく @codehex さんも Okinawa.pmを運営、元Perl出身ということで、非常に心強いです。
旅行補助が年間100万円というのはすごいですね。NOT A HOTELかっこいい、気になるw
まだまだWorkersのgRPCの事例はほとんど無い中で、一人で突き進んでいく姿勢、本当にすごいです。gRPC-Edge-Gateway も絶賛開発中ということで、楽しみです。
---
# 感想
自分の生息範囲とは違うフロントエンドやEdgeという世界に興味がある開発者向けの勉強会ということで、最初はプレッシャーがすごかったですが、参加させていただいてとても刺激になりました。
日頃からラーメンの食べ歩きだったり、どうでもいいようなくだらない事しかツイートできていなかった自分ですが、
主催していただいた yusukebeさんのおかげでCloudflare開発者向けに公式にツイートしていただいたというのは光栄すぎて記念スクショしておきますw
Rewteet from @teckl | Story of migrating image distribution at low cost with Cloudflare Workers + R2https://t.co/2Py05gbhPe
— Cloudflare Developers (@CloudflareDev) 2023年7月19日
第2回が秋頃に予定ということで、とても楽しみです。
このような素敵な会場を提供してくださったクラスメソッドさん、設営に協力していただいたボランティアの皆様、そして今回このような機会をいただけたCloudflare Japan社の皆様に感謝します。
ありがとうございました!