5.4K Views
July 17, 24
スライド概要
福岡でアプリ作ったり講師業したり歌ったりしてます。ジャズが好きです。 LINE API Expert (2024/1~)
Cloudflare x LINE 勉強会 #1 Cloud Run から Cloudflare へ移行したら どうだった? Daisuke Hirata @daichan4649
本日の内容 個人サービスを GCP (Cloud Run) → Cloudflare へ • 移行した際の体験談と所感 このような方向け • Cloudflare の移行を検討している方 • 似たようなサービスを作られている方
まとめと所感 Cloud Run (Node.js) からの移行先としてどうか • • 個人的には全力で推したい • 本サービスの場合はメリットが大きかった • 移植できるところだけ (適材適所)
目次 • 自己紹介 • 今回移行したサービス • システム構成 • 移植時のいろいろ • まとめと所感
自己紹介
平田大介 • 自社サービス開発、講師業 • 個人開発好き • ボーカル (ジャズが好きです) • LINE API Expert (2024/1~)
今回移行した サービス
自身が困っていたこと 仕事帰りにジャズのイベントに寄りたくなる → 今日のイベントを探そうとする → お店の公式サイトを巡回する必要がある
面倒くさがりなので 巡回がつらい
• 福岡のジャズイベントを 検索できる LINE Bot • 登録者 396 名 (2024/7/16 時点) • 2016/5 ~
サービスの歴史 • 2016/5 Heroku/Java • 2017/1 GCP/App Engine/Java • 2020/1 GCP/Cloud Run/Node.js • 2024/5 Cloudflare Workers ←イマココ
システム構成
移行時のいろいろ
移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)
移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)
環境面 (Cloud Run → Cloudflare) コールドスタートが爆速化 • • Bot に最適 • 特に何もチューニングしなくても爆速 デプロイ速度が爆速化 • • 開発体験が最高
移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)
フレームワーク Express → • • Cloud Run では Express を利用 • Cloudflare Workers で Express は (そのままでは) 使えない • Express 使っている方は 楽に移行可能 (だと思う) • 構造化できていればロジックほぼ流用可能
フレームワーク Node.js 標準モジュール依存のライブラリは注意 • • Cloudflare Workers は「Node.js の実行環境」ではない • LINE Bot SDK (Node.js) については @tokkuu さんの記事 が参考になります
移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)
コンテナ間通信 Workers 間は fetch 不可 • • Cloud Run でのコンテナ間通信は、ただの fetch (REST) で実装していた Service Bindings • • Workers 間で通信する仕組み (HTTPS or RPC) • R2、D1 などとの接続にも使う • 自分は RPC を選択
移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)
スクレイピング① お店の公式サイトからライブ情報を自動取得する • • スクレイピング用ライブラリ「Puppeteer」を利用 • お店の公式サイトごとに自前でロジック (マスターの書き方のクセなど) Browser Rendering • • Puppeteer を標準サポート • 課金が必要 ($5/month くらい) • localhost での動作確認ができない (デプロイ高速なので気にならない)
移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)
スクレイピング② (Google 依存部分) Google Calendar データ取得 • • GCP 環境だと楽 (GAS で実現していた) • Workers で作れないことはないが・・・ • Service Account などが面倒
スクレイピング② (Google 依存部分) Google Calendar データ取得 • • GCP 環境だと楽 (GAS で実現していた) • Workers で作れないことはないが・・・ • Service Account などが面倒 GAS はそのまま残した • • GAS 取得データを Workers に投げる
まとめと所感
まとめと所感 Cloud Run (Node.js) からの移行先としてどうか • • 個人的には全力で推したい • 本サービスの場合はメリットが大きかった • 移植できるところだけ (適材適所)
まとめと所感 (追記) 初学者、個人開発向けの環境としてオススメしたい • • 作りたいものに集中できる (本質) • 開発 → 公開が楽 • クラウド環境固有の知識 (特にデプロイまわり) がそれほど必要ではない LINE Bot 界隈 • • GAS からのステップアップにどう? • GAS でできないことへ挑戦するための環境