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
Railsでサーバレスなバッチ処理 / Rails Batch Serverless
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Daishi Kakinoki
June 19, 2019
Programming
1
2k
Railsでサーバレスなバッチ処理 / Rails Batch Serverless
https://shuuu-mai.connpass.com/event/132249/
の登壇時の資料です。
Daishi Kakinoki
June 19, 2019
Tweet
Share
More Decks by Daishi Kakinoki
See All by Daishi Kakinoki
Spacemarket Connect Custom Account
dkakinoki
0
260
SSRした動的コンテンツをFastlyにキャッシュする
dkakinoki
0
1.2k
CtoCマーケットプレイスを成長させる オンライン決済の仕組み
dkakinoki
1
920
[Stripe] ConnectのManual Payoutsを利用して 任意のタイミングで売上を入金する
dkakinoki
0
3.4k
Other Decks in Programming
See All in Programming
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
420
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.4k
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
6k
Architectural Extensions
denyspoltorak
0
280
Implementation Patterns
denyspoltorak
0
280
AtCoder Conference 2025
shindannin
0
1k
CSC307 Lecture 07
javiergs
PRO
0
550
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.3k
CSC307 Lecture 08
javiergs
PRO
0
670
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
600
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
77
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
270
We Have a Design System, Now What?
morganepeng
54
8k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
54
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
How to make the Groovebox
asonas
2
1.9k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.1k
Transcript
Railsでサーバレスなバッチ処理 2019/06/19 kakinoki AWS Batch × Aurora Serverlessを使った事例
2 誰? • 柿木 太志(@d_kakinoki) • SPACEMARKET所属 • Engineering Manager
• サーバサイドがメイン
3 3
写真
写真
写真
7 7
8 Railsでサーバレスなバッチ処理
9 背景 • 検索用のスコアデータを生成するバッチ処理を作成した時の話 • 「検索スコアの元になるデータ(raw data)」と「検索スコアのデータ」を生成して 登録したい • ActiveRecord使いたい
• 肥大化するインフラのコストをなるべく抑えたい
10 要件 • バッチの実行回数はそれほど多くない → 常時サーバを起動しない構成にしたい • 初期のモノリスのAPIにrakeタスクが多くあり、肥大化している → シンプルに切り出したい
• 3つのタスクがあり、2つめ以降は前のタスクが完了している必要がある →ジョブチェーンする アプリケーション
11 要件 • raw dataはバッチ処理や分析の時のみ利用したく、その他は不要 • とはいえ、ファイルだとデータ損失が不安だし分析もしづらいので、データベー ス使いたい → 必要に応じて利用可能なデータベース
データ
12 構成
13 構成 この点線の中からはみ出ないように 文字、写真を配置してください
14 処理の流れ
15 処理の流れ① この点線の中からはみ出ないように 文字、写真を配置してください ① cronでjobの起動
16 処理の流れ② この点線の中からはみ出ないように 文字、写真を配置してください ② インスタンスの起動
17 処理の流れ③ この点線の中からはみ出ないように 文字、写真を配置してください ③ イメージの取得
18 処理の流れ④ この点線の中からはみ出ないように 文字、写真を配置してください ④ ジョブ(rake task)の実行 / Aurora Servelessの起動
19 処理の流れ⑤ この点線の中からはみ出ないように 文字、写真を配置してください ⑤ ジョブの実行結果をトリガする
20 処理の流れ⑥ この点線の中からはみ出ないように 文字、写真を配置してください ⑥ 次のjobを起動(繰り返し)
21 処理の流れ⑦ この点線の中からはみ出ないように 文字、写真を配置してください ⑦ 各インスタンスの削除 / Aurora Serverlessの停止
22 ジョブが失敗した場合 この点線の中からはみ出ないように 文字、写真を配置してください ジョブの実行結果をトリガして、メール 通知
23 設定周り
24 基本設定 AWS 公式ガイドや各記事に詳細があるので割愛
25 AWS BatchのCron起動
26 AWS Batchのジョブチェーン
27 Aurora Serverlessの起動時間を考慮 • rakeタスクが実行されるとDB接続が発生し、DBが起動する。 • タイムアウト時間が短いとrake タスクが失敗するのでdatabase.ymlのtimeout を少し長めに設定するようにした。
28 InnoDBインデックスの最大キー長を考慮 • 絵文字に対応するため文字コードは utf8mb4を使用している。 • utf8mb4の場合は1文字あたり最大で 4バイト使用する。 • 単一カラムインデックスの最大キー長は
767バイトまで作成可能。 • RDS(MySQL)やAuroraでは3072バイトまで拡張可能だが、 Aurora Serverlessでは拡張に必要なパラ メータのinnodb_large_prefixを有効にできない。 • 結果的にRailsデフォルトのstring(varchar)255文字でカラムを作成しようとすると、 255 x 4 = 1020(>767)でカラム作成時にエラーになる。 • stringでカラムを作る時には文字数をきちんと絞る必要があり、今回は要件的に問題なかった。
29 コスト比較
30 ざっくりとした比較 従来 (常時起動) 今回 (実績) データベース (例)Aurora t3.small: 約5,000円/month
t3.medium: 約10,000円/month 約1800円/month( 約½ ~ ¼ ) アプリケーション (バッチ) (例) c5.large: 約8,500円 約1500円/month( ⅕ 以下 ) ※ インスタンス利用費のみの比較 ※ AWS Batchのコンピューティング環境は optimalにすると、C、M、Rいずれかのタイプが 使われる (インスタンスタイプを指定することも可能 ) ※ ちなみに、AWS Batchの利用自体は無料
31 まとめ
32 まとめ • 今回のテーマが「Rails × ◦◦」ということだったが、ほぼ◦◦部分のサーバレスな バッチ処理の話をした。 • AWS Batch
× Aurora Serverless で構築した。 • コストも安価に構築できた。
33 告知:勉強会やります! https://event.spacemarket.com/events/spacemarket_meetup ※ または、connpassで「スペースマーケット」で検索してください。 7/4(木) 19:30 ~ @新宿
34 当日どんな話が聞けるのか?
ご静聴ありがとうございました。