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
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
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
6
1.9k
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
170
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
250
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
200
CSC307 Lecture 03
javiergs
PRO
1
490
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
250
「ブロックテーマでは再現できない」は本当か?
inc2734
0
190
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.8k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
1.1k
Grafana:建立系統全知視角的捷徑
blueswen
0
320
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
190
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
140
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
We Have a Design System, Now What?
morganepeng
54
8k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
440
Utilizing Notion as your number one productivity tool
mfonobong
2
210
Practical Orchestrator
shlominoach
191
11k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
190
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
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 当日どんな話が聞けるのか?
ご静聴ありがとうございました。