Slide 1

Slide 1 text

スケーラブルActive Jobs with Sidekiq Enterprise Kaigi on Rails 2023 Day 1 <スポンサーLT2> 2023.10.27 Techouse ⼭崎良祐 ( @nappa )

Slide 2

Slide 2 text

©Techouse All Rights Reserved P2 今日も生み出そう。 世界にまだない価値を。 明日も伸び続けよう。 世界をより良くするために 。 はじめまして Techouse と申します

Slide 3

Slide 3 text

©Techouse All Rights Reserved P3 今日も生み出そう。 世界にまだない価値を。 明日も伸び続けよう。 世界をより良くするために 。

Slide 4

Slide 4 text

©Techouse All Rights Reserved P4 現在の主⼒事業 事業概要 ⼈事労務等の社内ワークフローの効率化・ペーパレス化を実現する、 セミオーダー型DXクラウドシステム ⼈材採⽤のためのサイト制作・集客・管理を オールインワンで効率化する、フルオーダー型DXクラウドシステム ⼯場・製造業の領域に特化した、 求⼈数No.1の⼈材プラットフォーム クラウドサービス事業 ⼈材プラットフォーム事業 Rails とともに 創業11年 さまざまなプロダクトを ご提供しております

Slide 5

Slide 5 text

©Techouse All Rights Reserved P5 今日も生み出そう。 世界にまだない価値を。 明日も伸び続けよう。 世界をより良くするために 。 せっかくなので 技術で一本LT

Slide 6

Slide 6 text

©Techouse All Rights Reserved P6

Slide 7

Slide 7 text

©Techouse All Rights Reserved P7 Active Job の 主な⽤途

Slide 8

Slide 8 text

©Techouse All Rights Reserved P8 deliver_later で メール送信

Slide 9

Slide 9 text

©Techouse All Rights Reserved P9 perform_later で エクスポートとか インポートとか の ⻑時間かかる処理

Slide 10

Slide 10 text

©Techouse All Rights Reserved P10 Active Job は バックエンドが 選択できる

Slide 11

Slide 11 text

©Techouse All Rights Reserved P11 Sidekiq or Resque or Delayed::Job

Slide 12

Slide 12 text

©Techouse All Rights Reserved P12 Sidekiq or Resque or Delayed::Job いろいろ 特徴があり チョイスが難しい

Slide 13

Slide 13 text

©Techouse All Rights Reserved P13 Sidekiq or Resque or Delayed::Job わたしたちは…

Slide 14

Slide 14 text

©Techouse All Rights Reserved P14

Slide 15

Slide 15 text

©Techouse All Rights Reserved P15 Mike Perham さんありがとう

Slide 16

Slide 16 text

©Techouse All Rights Reserved P16 Sidekiq Enterprise

Slide 17

Slide 17 text

©Techouse All Rights Reserved P17 同時実⾏数制限 (Rate Limit) 重複実⾏防⽌ (Unique Job) 信頼性 (Reliability) 定時実⾏ (Periodic Job) リーダー選出 (Leader Selection) Sidekiq Enterprise の機能たち

Slide 18

Slide 18 text

©Techouse All Rights Reserved P18 有料ですが 大変よいので オススメ

Slide 19

Slide 19 text

©Techouse All Rights Reserved P19 そして 時代は サーバレス

Slide 20

Slide 20 text

©Techouse All Rights Reserved P20 AWS Lambda AWS Fargate Google Apps Engine Google Cloud Run

Slide 21

Slide 21 text

©Techouse All Rights Reserved P21 コンテナを デプロイするだけで 動く系

Slide 22

Slide 22 text

©Techouse All Rights Reserved P22 サーバの管理不要 OSの管理不要

Slide 23

Slide 23 text

©Techouse All Rights Reserved P23 エンジニアを サーバ管理から解放

Slide 24

Slide 24 text

©Techouse All Rights Reserved P24 サイコー↗

Slide 25

Slide 25 text

©Techouse All Rights Reserved P25 わたしたちは……

Slide 26

Slide 26 text

©Techouse All Rights Reserved P26 AWS Fargate

Slide 27

Slide 27 text

©Techouse All Rights Reserved P27 全⾯的に Fargate で サーバレス

Slide 28

Slide 28 text

©Techouse All Rights Reserved P28 通常稼働時

Slide 29

Slide 29 text

©Techouse All Rights Reserved P29 AWS Cloud Fargate

Slide 30

Slide 30 text

©Techouse All Rights Reserved P30 ⾼負荷時

Slide 31

Slide 31 text

©Techouse All Rights Reserved P31 AWS Cloud Fargate

Slide 32

Slide 32 text

©Techouse All Rights Reserved P32 AWS Cloud Fargate スケールアウト

Slide 33

Slide 33 text

©Techouse All Rights Reserved P33 AWS Cloud Fargate スケールアウト

Slide 34

Slide 34 text

©Techouse All Rights Reserved P34 同時実⾏数制限 (Rate Limit) 重複実⾏防⽌ (Unique Job) Sidekiq Enterprise の機能たち スケールアウトに伴う問題を解消してくれる便利機能ズ

Slide 35

Slide 35 text

©Techouse All Rights Reserved P35 低負荷時

Slide 36

Slide 36 text

©Techouse All Rights Reserved P36 AWS Cloud Fargate

Slide 37

Slide 37 text

©Techouse All Rights Reserved P37 AWS Cloud Fargate スケールイン

Slide 38

Slide 38 text

©Techouse All Rights Reserved P38 AWS Cloud Fargate スケールイン

Slide 39

Slide 39 text

©Techouse All Rights Reserved P39 スケールインのとき 何が起きるのか

Slide 40

Slide 40 text

©Techouse All Rights Reserved P40 AWS Cloud Fargate

Slide 41

Slide 41 text

©Techouse All Rights Reserved P41 AWS Cloud Fargate SIGTERM

Slide 42

Slide 42 text

©Techouse All Rights Reserved P42 AWS Cloud Fargate 新規Job 受付停⽌

Slide 43

Slide 43 text

©Techouse All Rights Reserved P43 AWS Cloud Fargate 終了

Slide 44

Slide 44 text

©Techouse All Rights Reserved P44 AWS Cloud Fargate

Slide 45

Slide 45 text

©Techouse All Rights Reserved P45 もしも 処理中の Job が あったら…

Slide 46

Slide 46 text

©Techouse All Rights Reserved P46 AWS Cloud Fargate

Slide 47

Slide 47 text

©Techouse All Rights Reserved P47 AWS Cloud Fargate SIGTERM

Slide 48

Slide 48 text

©Techouse All Rights Reserved P48 AWS Cloud Fargate 新規Job 受付停⽌

Slide 49

Slide 49 text

©Techouse All Rights Reserved P49 AWS Cloud Fargate でもまだ 処理中💪

Slide 50

Slide 50 text

©Techouse All Rights Reserved P50 AWS Cloud Fargate 30秒後

Slide 51

Slide 51 text

©Techouse All Rights Reserved P51 AWS Cloud Fargate 30秒後 SIGKILL (強制終了)

Slide 52

Slide 52 text

©Techouse All Rights Reserved P52 AWS Cloud Fargate 30秒後 あああー 処理終わって ないのに……

Slide 53

Slide 53 text

©Techouse All Rights Reserved P53 AWS Cloud Fargate 30秒後

Slide 54

Slide 54 text

©Techouse All Rights Reserved P54 30秒経っても exitしなかったら 強制終了される

Slide 55

Slide 55 text

©Techouse All Rights Reserved P55 処理中のジョブは 途中のまま 強制終了

Slide 56

Slide 56 text

©Techouse All Rights Reserved P56 リトライ可能な ものなら リトライしてくれる

Slide 57

Slide 57 text

©Techouse All Rights Reserved P57 リトライできない 性質の Job を どうするか

Slide 58

Slide 58 text

©Techouse All Rights Reserved P58 Amazon ECS Scale-in Protection

Slide 59

Slide 59 text

©Techouse All Rights Reserved P59 AWS Cloud Fargate

Slide 60

Slide 60 text

©Techouse All Rights Reserved P60 AWS Cloud Fargate お願いです 今から300秒間は KILL しないでください

Slide 61

Slide 61 text

©Techouse All Rights Reserved P61 AWS Cloud Fargate わかった お願いです 今から300秒間は KILL しないでください

Slide 62

Slide 62 text

©Techouse All Rights Reserved P62 AWS Cloud Fargate

Slide 63

Slide 63 text

©Techouse All Rights Reserved P63 AWS Cloud Fargate

Slide 64

Slide 64 text

©Techouse All Rights Reserved P64 AWS Cloud Fargate

Slide 65

Slide 65 text

©Techouse All Rights Reserved P65 ただし AWS 固有の APIをコールする 必要がある

Slide 66

Slide 66 text

©Techouse All Rights Reserved P66 Sidekiq Middleware で実装

Slide 67

Slide 67 text

©Techouse All Rights Reserved P67 Sidekiq.configure_server do |config| config.server_middleware do |chain| chain.add ScaleInProtectionMiddleware end end

Slide 68

Slide 68 text

©Techouse All Rights Reserved P68 うまくいってる模様

Slide 69

Slide 69 text

©Techouse All Rights Reserved P69 これぞ スケーラブル Sidekiq

Slide 70

Slide 70 text

©Techouse All Rights Reserved P70 さて

Slide 71

Slide 71 text

©Techouse All Rights Reserved P71 本⽇ ブース出展 してます

Slide 72

Slide 72 text

©Techouse All Rights Reserved P72

Slide 73

Slide 73 text

©Techouse All Rights Reserved P73

Slide 74

Slide 74 text

©Techouse All Rights Reserved P74 Techouse謹製 Ruby/Rails リファレンスつき ノートなど進呈

Slide 75

Slide 75 text

©Techouse All Rights Reserved P75 スポンサーブースで お待ちしております