Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
20200528 - GCPでもサーバーレスでRubyりたい!
Search
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
59
Next.js に疲れた私は Vue3 に癒やされた
egch
0
340
Secure な UX のために Content Security Policy について知っておこう
egch
0
74
package.json がすごい
egch
0
150
Nuxt.js のインスタンスライフサイクル総点検
egch
0
420
Webエンジニアのデザイン実装との付き合い方
egch
0
330
VeeValidate の"穴"を踏み抜いてしまった
egch
1
930
継続的に楽しくプログラミングするには - 2018/11/3 Rails Girls Sendai
egch
0
120
Other Decks in Programming
See All in Programming
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
140
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
140
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
510
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
150
AWSに止められる覚悟してますか?
morizo_1984
2
520
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
200
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
470
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
450
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
420
Testing 201, or: Great Expectations
jmmastey
46
8.3k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
350
Product Roadmaps are Hard
iamctodd
55
13k
Marketing to machines
jonoalderson
1
5.9k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
How to Talk to Developers About Accessibility
jct
2
570
Done Done
chrislema
187
17k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
920
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