Upgrade to Pro — share decks privately, control downloads, hide ads and more …

非同期ジョブと仲良くする

KOBA789
June 08, 2017

 非同期ジョブと仲良くする

Cookpad Tech Kitchen #8 〜舞台裏を支える黒衣たち〜
https://cookpad.connpass.com/event/57029/
で発表した資料です。

KOBA789

June 08, 2017
Tweet

More Decks by KOBA789

Other Decks in Technology

Transcript

  1. 非同期ジョブと

    仲良くする
    KOBA789
    (Hidekazu Kobayashi)
    at Cookpad

    View Slide

  2. KOBA789
    インフラ部データ基盤グループ
    2017新卒(大学やめて高卒)
    Node.jsの本を書いた思い出
    分野を横断した仕事が好き

    View Slide

  3. Q. ジョブキュー・ワーカー

    何使ってますか

    View Slide

  4. 大正義 共有 FileSystem
    コード
    Web マスター ワーカー
    Sidekiqさん

    View Slide

  5. Sidekiqさん
    大正義 FileSystem
    コード
    Web Master Worker
    よさそうじゃん?

    View Slide

  6. 突然の

    View Slide

  7. FileSystem
    コード
    Web マスター ワーカー
    FileSystem
    コード
    コンテナ

    分けるならこう
    アプリケーション ジョブキュー・ワーカー

    View Slide

  8. コンテナ

    分けるならこう
    アプリ
    キュー・
    ワーカー

    View Slide

  9. では増やしてみましょう

    View Slide

  10. アプリ
    キュー・
    ワーカー

    View Slide

  11. アプリ

    増やすならこう
    キュー・
    ワーカー
    アプリ
    アプリ
    アプリ
    アプリ

    View Slide

  12. キュー・ワーカーも

    増やすならこう
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    アプリ
    アプリ
    アプリ
    アプリ

    View Slide

  13. キュー・ワーカーも
    増やすならこう
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    アプリ
    アプリ
    アプリ
    アプリ
    ちょっとまって

    View Slide

  14. キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    アプリ
    アプリ
    アプリ
    アプリ
    スケール

    できなくない?
    Redis Clusterの

    面倒を見たいか?

    View Slide

  15. アプリ
    アプリ
    アプリ
    アプリ
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    マスター ワーカー
    FileSystem
    コード
    マスターがたくさん

    いるのは無駄では

    View Slide

  16. アプリ
    アプリ
    アプリ
    アプリ
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    必要な分だけ

    起動してほしいのでは

    View Slide

  17. キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    キュー・
    ワーカー
    アプリを変更したらキュー・ワーカーも

    イメージをリビルドしないといけない
    アプリ
    アプリ
    アプリ
    アプリ

    View Slide

  18. ということで

    View Slide

  19. We introduce
    Barbeque

    View Slide

  20. Barbeque
    Barbeque
    Hako
    ざっくり言うと
    Dockerコンテナの

    管理ツール

    View Slide

  21. アプリ
    Barbeque
    Barbeque
    アプリ
    Hako

    View Slide

  22. アプリ
    Barbeque
    Barbeque
    アプリ
    Hako

    View Slide

  23. アプリ
    Barbeque
    Barbeque
    アプリ
    Hako

    View Slide

  24. アプリ
    Barbeque
    Barbeque
    アプリ
    Hako

    View Slide

  25. アプリ
    Barbeque
    Barbeque
    アプリ ワーカー
    Hako

    View Slide

  26. アプリ
    Barbeque
    Barbeque
    アプリ
    Hako
    ワーカー

    View Slide

  27. アプリ
    Barbeque
    Barbeque
    アプリ ワーカー
    Hako

    View Slide

  28. アプリ
    Barbeque
    Barbeque
    アプリ ワーカー
    Hako
    ワーカー

    View Slide

  29. アプリ
    アプリ
    Hako
    ワーカー
    ワーカー
    Barbeque
    Barbeque
    マスターとワーカーは

    別々に増やせる
    必要な分だけ

    起動している

    View Slide

  30. アプリ
    Barbeque
    Barbeque
    アプリ ワーカー
    Hako
    ワーカー
    運用はAWSにおまかせ

    スケールもしてくれる

    View Slide

  31. Barbeque
    Barbeque
    Hako
    アプリ
    アプリ ワーカー
    ワーカー
    これらのコンテナは

    同じイメージから起動している
    起動時のコマンドライン引数が違うだけ

    unicorn vs. rake barbeque:execute

    View Slide

  32. アプリ
    Barbeque
    Barbeque
    アプリ
    Hako
    ワーカー
    ワーカー
    デプロイも楽になって

    最高ですね?

    View Slide

  33. Railsでの使い方

    View Slide

  34. View Slide

  35. #BSCFRVF$MJFOUDPOGJHVSFEP]DPOGJH]
    [email protected]
    [email protected]
    DPOGJHFOEQPJOUIUUQTCBSCFRVFFYBNQMFDPN
    FOE
    config/initializers/barbeque.rb

    View Slide

  36. DMBTT4PNF+PC"QQMJDBUJPO+PC
    EFGQFSGPSN QBSBN QBSBN

    EPTPNFUIJOHBXFTPNF
    SFRVJSFTBMPOHUJNF
    FOE
    FOE
    app/jobs/some_job.rb

    View Slide

  37. [email protected] QBSBN QBSBN

    適当なところで

    View Slide


  38. ActiveJob準拠で

    大変便利

    View Slide

  39. その他の機能
    • ローカルでのジョブ実行(開発用)
    • AWS SNS契機でのジョブ実行
    • べんりなWeb UI

    View Slide

  40. View Slide

  41. View Slide

  42. View Slide

  43. そろそろみなさん
    使いたくなってきた

    View Slide

  44. https://github.com/cookpad/barbeque

    View Slide

  45. Hakoが

    あるからこそできる

    View Slide

  46. Hakoの利点を

    最大限に活用している

    View Slide

  47. 非同期ジョブ基盤は

    単体ではない

    View Slide

  48. Cookpadの

    非同期ジョブ基盤は

    インフラに統合されている

    View Slide