Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Active job meets kubernetes
Search
Yasutomo Uemori
PRO
September 24, 2019
Programming
0
37
Active job meets kubernetes
Kubernetes Meetup Osaka #1でのLT資料です
Yasutomo Uemori
PRO
September 24, 2019
Tweet
Share
More Decks by Yasutomo Uemori
See All by Yasutomo Uemori
よくわかる新収益認識基準
wakaba260
PRO
0
600
いまどきのゲームサーバアーキテクチャ
wakaba260
PRO
1
290
オンラインゲームのRails複数db戦略
wakaba260
PRO
0
75
Ruby/Rails Benchmarking and Profiling with TDD
wakaba260
PRO
0
58
GCP・GKEで作るスケーラブルなゲーム開発環境
wakaba260
PRO
0
67
サービスクラス、その前に
wakaba260
PRO
0
35
Rails on Dockerとの戦い
wakaba260
PRO
0
37
Rubocopとの付き合い方
wakaba260
PRO
0
39
Rails api way in aiming
wakaba260
PRO
0
39
Other Decks in Programming
See All in Programming
エディターってAIで操作できるんだぜ
kis9a
0
720
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
8
5.5k
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
390
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
500
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
210
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
240
TestingOsaka6_Ozono
o3
0
130
AIコーディングエージェント(NotebookLM)
kondai24
0
180
251126 TestState APIってなんだっけ?Step Functionsテストどう変わる?
east_takumi
0
310
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
260
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
350
JETLS.jl ─ A New Language Server for Julia
abap34
1
370
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
How to Ace a Technical Interview
jacobian
280
24k
GitHub's CSS Performance
jonrohan
1032
470k
Typedesign – Prime Four
hannesfritz
42
2.9k
Six Lessons from altMBA
skipperchong
29
4.1k
[SF Ruby Conf 2025] Rails X
palkan
0
510
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Building an army of robots
kneath
306
46k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Designing for Performance
lara
610
69k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
ActiveJob meets Kubernetes Kubernetes Meetup Osaka #1 LT 植森 康友(wakaba260)
me.inspect => { “HN”: "wakaba260", “name”: "Yasutomo Uemori", “company”: "株式会社Aiming",
“twitter”: "https://twitter.com/wakaba260yen", “github”: "https://github.com/yuemori", “skills”: ["rails api", "docker", "kubernetes", "GCP"] }
ActiveJob?
ActiveJob(Rails) - Ruby on Railsの非同期ジョブの仕組み - Adapterを実装することでなんでもバックエンドに出来る - 現在の主な実装例 -
Sidekiq, Resque: ruby製のjob queue worker - Shoryuken: Amazon SQSをメッセージキューに使える
ActiveJobの使用例 class GuestsCleanupJob < ApplicationJob queue_as :default def perform(*args) #
後で実行したい作業をここに書く end end # 「キューイングシステムが空いたらジョブを実行する」とキューに登録する guest = Guest.find(guest_id) GuestsCleanupJob.perform_later(guest)
Rails on Kubernetesでのジョブの運用 - SidekiqのworkerをDeploymentで立てる - ジョブキューのBackendにredisを立てる - replicas指定でworker数を増やしてスケールアウト
唐突な思いつき - Sidekiqのworkerのスケールアウトを考えるとCPU使用率などでは 上手くスケールできない - Kubernetesには既にJobという仕組みがある - リトライ、タイムアウトなど機能も充実 - Kubernetes
Jobを使うことでいい感じにスケールできそう
作ってみた https://github.com/yuemori/kube_queue/
# app/jobs/print_message_job.rb class PrintMessageJob < ApplicationJob include KubeQueue::Worker worker_name 'print-message-job'
image "your-registry/your-image" container_name 'your-container-name' def perform(payload) logger.info payload[:message] end end PrintMessageJob.perform_later(message: ‘hello!’)
class ComputePiJob < ApplicationJob include KubeQueue::Worker worker_name 'pi' image 'perl'
container_name 'pi' command "perl","-Mbignum=bpi","-wle","print bpi(2000)" cpu_limit '0.3' cpu_request '0.2' memory_limit '100m' memory_request '50m' end
kube_queueの実装 - perform_laterを呼んだら指定されたJobを起動 - やってることはJob作成のAPIを呼ぶだけ
やってみてわかったこと - スケールアウトがworkerのreplica数からリソースに依存するように なった - KubernetesのAPI経由でコンテナを呼ぶことで、プラットフォームや 言語に依存せずにコンテナの恩恵を享受できる - KubernetesのAPIを呼ぶことでいろいろ面白いことが出来るので、 活用する機会があれば試していきたい
ご静聴ありがとうございました