Cloud Run から Cloudflare へ移行したらどうだった?

7K Views

July 17, 24

スライド概要

profile-image

福岡でアプリ作ったり講師業したり歌ったりしてます。ジャズが好きです。 LINE API Expert (2024/1~)

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Cloudflare x LINE 勉強会 #1 Cloud Run から Cloudflare へ移行したら どうだった? Daisuke Hirata @daichan4649

2.

本日の内容 個人サービスを GCP (Cloud Run) → Cloudflare へ • 移行した際の体験談と所感 このような方向け • Cloudflare の移行を検討している方 • 似たようなサービスを作られている方

3.

まとめと所感 Cloud Run (Node.js) からの移行先としてどうか • • 個人的には全力で推したい • 本サービスの場合はメリットが大きかった • 移植できるところだけ (適材適所)

4.

目次 • 自己紹介 • 今回移行したサービス • システム構成 • 移植時のいろいろ • まとめと所感

5.

自己紹介

6.

平田大介 • 自社サービス開発、講師業 • 個人開発好き • ボーカル (ジャズが好きです) • LINE API Expert (2024/1~)

7.

今回移行した サービス

8.

自身が困っていたこと 仕事帰りにジャズのイベントに寄りたくなる → 今日のイベントを探そうとする → お店の公式サイトを巡回する必要がある

10.

面倒くさがりなので 巡回がつらい

12.

• 福岡のジャズイベントを 検索できる LINE Bot • 登録者 396 名 (2024/7/16 時点) • 2016/5 ~

13.

サービスの歴史 • 2016/5 Heroku/Java • 2017/1 GCP/App Engine/Java • 2020/1 GCP/Cloud Run/Node.js • 2024/5 Cloudflare Workers ←イマココ

14.

システム構成

16.

移行時のいろいろ

17.

移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)

18.

移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)

19.

環境面 (Cloud Run → Cloudflare) コールドスタートが爆速化 • • Bot に最適 • 特に何もチューニングしなくても爆速 デプロイ速度が爆速化 • • 開発体験が最高

20.

移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)

21.

フレームワーク Express → • • Cloud Run では Express を利用 • Cloudflare Workers で Express は (そのままでは) 使えない • Express 使っている方は 楽に移行可能 (だと思う) • 構造化できていればロジックほぼ流用可能

22.

フレームワーク Node.js 標準モジュール依存のライブラリは注意 • • Cloudflare Workers は「Node.js の実行環境」ではない • LINE Bot SDK (Node.js) については @tokkuu さんの記事 が参考になります

23.

移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)

24.

コンテナ間通信 Workers 間は fetch 不可 • • Cloud Run でのコンテナ間通信は、ただの fetch (REST) で実装していた Service Bindings • • Workers 間で通信する仕組み (HTTPS or RPC) • R2、D1 などとの接続にも使う • 自分は RPC を選択

26.

移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)

28.

スクレイピング① お店の公式サイトからライブ情報を自動取得する • • スクレイピング用ライブラリ「Puppeteer」を利用 • お店の公式サイトごとに自前でロジック (マスターの書き方のクセなど) Browser Rendering • • Puppeteer を標準サポート • 課金が必要 ($5/month くらい) • localhost での動作確認ができない (デプロイ高速なので気にならない)

29.

移行時のいろいろ • 環境面 (Cloud Run → Cloudflare) • フレームワーク (Express → Hono) • コンテナ間通信 • スクレイピング① • スクレイピング② (Google 依存部分)

30.

スクレイピング② (Google 依存部分) Google Calendar データ取得 • • GCP 環境だと楽 (GAS で実現していた) • Workers で作れないことはないが・・・ • Service Account などが面倒

31.

スクレイピング② (Google 依存部分) Google Calendar データ取得 • • GCP 環境だと楽 (GAS で実現していた) • Workers で作れないことはないが・・・ • Service Account などが面倒 GAS はそのまま残した • • GAS 取得データを Workers に投げる

34.

まとめと所感

35.

まとめと所感 Cloud Run (Node.js) からの移行先としてどうか • • 個人的には全力で推したい • 本サービスの場合はメリットが大きかった • 移植できるところだけ (適材適所)

36.

まとめと所感 (追記) 初学者、個人開発向けの環境としてオススメしたい • • 作りたいものに集中できる (本質) • 開発 → 公開が楽 • クラウド環境固有の知識 (特にデプロイまわり) がそれほど必要ではない LINE Bot 界隈 • • GAS からのステップアップにどう? • GAS でできないことへ挑戦するための環境