$30 off During Our Annual Pro Sale. View Details »
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
640
いまどきのゲームサーバアーキテクチャ
wakaba260
PRO
1
300
オンラインゲームのRails複数db戦略
wakaba260
PRO
0
75
Ruby/Rails Benchmarking and Profiling with TDD
wakaba260
PRO
0
59
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
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
110
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
190
AIコーディングエージェント(skywork)
kondai24
0
180
dotfiles 式年遷宮 令和最新版
masawada
1
780
Github Copilotのチャット履歴ビューワーを作りました~WPF、dotnet10もあるよ~ #clrh111
katsuyuzu
0
110
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
110
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
270
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
38
26k
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
7.3k
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
6
310
関数実行の裏側では何が起きているのか?
minop1205
1
700
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
160
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.4k
GitHub's CSS Performance
jonrohan
1032
470k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.3k
Faster Mobile Websites
deanohume
310
31k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Embracing the Ebb and Flow
colly
88
4.9k
4 Signs Your Business is Dying
shpigford
186
22k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
For a Future-Friendly Web
brad_frost
180
10k
Thoughts on Productivity
jonyablonski
73
5k
Documentation Writing (for coders)
carmenintech
76
5.2k
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を呼ぶことでいろいろ面白いことが出来るので、 活用する機会があれば試していきたい
ご静聴ありがとうございました