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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
64
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
What's New in Android 2026
veronikapj
0
250
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
460
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
300
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
120
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
380
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
260
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
210
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
590
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
150
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
380
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
330
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
440
RailsConf 2023
tenderlove
30
1.5k
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
Leo the Paperboy
mayatellez
8
2.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Git: the NoSQL Database
bkeepers
PRO
432
67k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
630
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
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