Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20200528 - GCPでもサーバーレスでRubyりたい!
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takuya Eguchi (egch)
May 28, 2020
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20200528 - GCPでもサーバーレスでRubyりたい!
Takuya Eguchi (egch)
May 28, 2020
More Decks by Takuya Eguchi (egch)
See All by Takuya Eguchi (egch)
TypeScript の class を使い倒す
egch
1
56
Next.js に疲れた私は Vue3 に癒やされた
egch
0
330
Secure な UX のために Content Security Policy について知っておこう
egch
0
59
package.json がすごい
egch
0
150
Nuxt.js のインスタンスライフサイクル総点検
egch
0
420
Webエンジニアのデザイン実装との付き合い方
egch
0
320
VeeValidate の"穴"を踏み抜いてしまった
egch
1
920
継続的に楽しくプログラミングするには - 2018/11/3 Rails Girls Sendai
egch
0
120
Other Decks in Programming
See All in Programming
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
1.9k
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.3k
Lessons from Spec-Driven Development
simas
PRO
0
150
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
12k
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
240
Modding RubyKaigi for Myself
yui_knk
0
910
Swiftのレキシカルスコープ管理
kntkymt
0
220
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
170
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.2k
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
BBQ
matthewcrist
89
10k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Unsuck your backbone
ammeep
672
58k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
720
Automating Front-end Workflow
addyosmani
1370
210k
Transcript
GCP でも サーバーレスで Ruby りたい! 2020.05.28 江口 拓弥
自己紹介 江口 拓弥 フロントエンドエンジニアです! Nuxt.js × TypeScript × GCP ここ最近のハイライト:
自作 ESLint プラグインを npm に登録しました(低レベル) 2 akathea_
Serverless で Ruby 使える? 3
4 Lambda♂
5 Cloud Functions♂
6
どうしても GCP で Ruby を 使いたくなるケース ◦ サーバーサイドエンジニアが Ruby( oR
) 使いたい ◦ フロントエンドエンジニアは Firebase 使いたい ◦ BFF 構成を取りたい □ SSR したい □ バックエンドとフロントエンドを疎結合にしたい ◦ API を他のサービスからも使いたい ◦ のっぴきならない理由でAWSを利用できない 7
8 無理やり動かすぞ
その1. Cloud Run
10 最低限のDocker知識で動かせそう
ちゃちゃっと用意 11 Dockerfile Gemfile (空のlockも用意) docker-compose.yml
起動 12
起動 13
あとは開発してデプロイ…なのか? 14 ◦ Cloud Run 特有の癖に注意 □ PORT 指定 (デフォルトは8080)
◦ PORT という環境変数が指定済みだったら そのポートで起動するようにしておくと幸せになれそう □ ファイルは永続化しない ◦ 必要なら Storage へ逃がす。これは AWS でも Fargate や ECS でも同じ。 □ デプロイ時に Cloud SQL 用の proxy オプションを渡す必要あり ◦ 正直 Cloud SQL の使い勝手は良くない… ◦ Cloud Run で VPC が使えない。必要なら GKE を使う。
◦ どうしても Rails を使いたい場合はいいかも □ Docker の知識が必要だけど Cloud Run なら小難しい構成は不要
◦ K8s知識があってペイしそうなら最初から GKE でいいのでは? □ Firebase.json の rewrite ルールで Cloud Run が指定できる Rails on Cloud Run が ベストプラクティス…? 15
◦ デメリットにもちゃんと目を向ける □ 通信料が意外と高いので内部処理や API モードで使う ◦ $0.12/GB (10TBまで)。Firebase Hosting
なら $0.026/GB。 Hosting 用途なら Firebase を使ったほうがお得。 □ Sidekiq は使えない ◦ リクエストに対するレスポンスを返したらコンテナは閉じる ◦ Pub/Sub を使ったほうがいい ◦ どうしても Sidekiq でやりたいなら GKE で Rails on Cloud Run が ベストプラクティス…? 16
その2. App Engine
◦ これまではフレキシブル環境のみ □ 起動時間、デプロイ時間ともに大幅短縮 ◦ Rails 不要なら Sinatra で軽く使える □
一応 Rails も使えるみたい □ 動かしてる人は少なそう 2019年9月からスタンダード環境で使える (知らなかった) 18
Gemfile (空のlockも用意) ちゃちゃっと用意 19 app.rb
起動 20
起動 21
あとは開発してデプロイ…なのか? 22 ◦ App Engine の癖に注意 □ 今の所、最新のバージョンは 2.5 □
ファイルは永続化しない ◦ 必要なら Storage へ逃がす。これは (ry
◦ Ruby をお手軽に GCP 上で使いたい場合はいいかも □ Docker の知識不要! □ VPC
も使えるので、アプリケーション層で考えることは減りそう ◦ デメリットもあんまりなさそう □ Firebase の rewrite ルールで App Engine を利用できないので API 利用時の CORS に注意 □ Docker ではないので、開発時の環境差分問題が出る ◦ 開発時も Docker で やればある程度対策できる(どこまでやるかが問題) Ruby on App Engine が ベストプラクティス…? 23
統括 24 ◦ 最新のRubyを使いたい、大規模化する予定なら Cloud Run / GKE □ 事前にロードマップを引いておく必要がありそう(App
Engine が利用したいバー ジョンに対応したとか、お試しとして Cloud Run を使い、最終的に GKE(もしくは別 プラットフォームの K8s サービス)を使うとか) ◦ ちょっと古いバージョンの Ruby でよいなら App Engine □ Sinatra ではアーキテクチャがオレオレ化するので、 チーム開発時は事前の意識合わせが必要(これは軽量 F/W の問題) □ DB 使うときのマイグレーション等にも注意 ◦ Firestoreで十分ならそちらの利用も検討 Rails、最新のRubyじゃなきゃダメ→ Cloud Run ただ Ruby を使いたいだけなんだ…→ App Engine
ご清聴ありがとうございました 25