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

cronworkflowを用いた バッチ障害時の運用改善

cronworkflowを用いた バッチ障害時の運用改善

南條綾乃

March 13, 2023
Tweet

Other Decks in Technology

Transcript

  1. cronworkflowを用いた
    バッチ障害時の運用改善
    氏名: 南條綾乃
    2023/03/13 Kubernetes Novice Tokyo #23

    View Slide

  2. 自己紹介
    名前: 南條綾乃
    会社: 株式会社NTTデータ(2021年入社)
    業務: バックエンド開発
    実家で飼っている柴犬と亀

    View Slide

  3. バッチの良い運用設計とは?

    View Slide

  4. 良い運用設計とは
    回復性
    可観測性
    管理力
    処理の進行状態を把握できるか
    処理の完了状態を把握できるか
    障害を検知し適切な行動を選択できるか
    容易に再実行が可能か
    参考: https://www.yamarkz.com/blog/implementation-practices-for-batch-processing
    CNCF Cloud Native Definition v1.0より項目抜粋
    実行コストが少ないか

    View Slide

  5. しかし、これまでは...
    回復性
    可観測性
    管理力
    処理の進行状態を把握できるか
    処理の完了状態を把握できるか
    障害を検知し適切な行動を選択できるか
    容易に再実行が可能か
    参考: https://www.yamarkz.com/blog/implementation-practices-for-batch-processing
    CNCF Cloud Native Definition v1.0より項目抜粋
    実行コストが少ないか
    APを修正して
    から実行
    手動で
    再実行
    手動で
    再実行

    View Slide

  6. cronworkflowを用いて
    "バッチの良い運用設計"を
    目指したので、その取り組みにつ
    いてLTさせていただきます!

    View Slide

  7. cronworkflowって何?

    View Slide

  8. cronworkflowとは
    Kubernetes上で実行されることを想定したワークフローエンジン
    である、argo workflowの一種
    KubernetesのCRD(Custom Resource Definition)として実行
    cronjobと同じ設定を使用し実行可能

    View Slide

  9. 何を実施したの?

    View Slide

  10. 実施したこと
    ・障害時に動かす処理をコマンドライン引数で管理
    ・障害時にバッチを自動実行

    View Slide

  11. 実施したこと

    View Slide

  12. というのも..
    これまでの障害時の運用
    ・手動でバッチを再度実行
    ・障害時用のバッチのイメージを読み込み直して再デプロイ

    View Slide

  13. 管理コストが少ないか
    これまでの問題の解決
    回復性
    可観測性
    管理力
    処理の進行状態を把握できるか
    処理の完了状態を把握できるか
    障害を検知し適切な行動を選択できるか
    容易に再実行が可能か
    参考: https://www.yamarkz.com/blog/implementation-practices-for-batch-processing
    CNCF Cloud Native Definition v1.0より項目抜粋
    APを修正
    しない仕組み
    自動で
    再実行
    手動で
    再実行

    View Slide

  14. 以下のようなイメージ
    障害時に障害用のバッチを自動で実行させる
    障害時
    別のAP

    View Slide

  15. マニフェストファイル
    どんなん?

    View Slide

  16. 設定の全容

    View Slide

  17. 障害発生時
    通常時
    helmfileで設定時は、
    コメントアウトのように記載

    View Slide

  18. コマンドライン引数での
    処理の管理って?

    View Slide

  19. コマンドライン引数での処理の管理
    execを定義
    (defaultは空)
    ここで、モードにより
    呼び出したいメソッド
    を変える

    View Slide

  20. ここまでで
    回復性、管理力は解決!

    View Slide

  21. 実行コストが少ないか
    では..
    回復性
    可観測性
    管理力
    処理の進行状態を把握できるか
    処理の完了状態を把握できるか
    障害を検知し適切な行動を選択できるか
    容易に再実行が可能か
    参考: https://www.yamarkz.com/blog/implementation-practices-for-batch-processing
    CNCF Cloud Native Definition v1.0より項目抜粋
    APを修正
    しない仕組み
    自動で
    再実行
    手動で
    再実行

    View Slide

  22. 可観測性は
    どうやって解決してるの?

    View Slide

  23. Healthchecksで解決!

    View Slide

  24. Healthchecksとは
    ジョブの「起動状態」を監視するサービス
    ※実行状態は監視しない(AP内部でエラーetc)
    予定していた時刻にジョブが正常起動したか
    ジョブの想定実行時間よりも実行時間が長くなっていないか

    View Slide

  25. 運用イメージ
    workflow開始時に
    Started
    終了したら
    OKが届く
    メールやチャット、
    PagerDutyとの
    連携も可能

    View Slide

  26. どうやって使うの?

    View Slide

  27. heathchecksとの疎通方法
    runitorコマンドを使用
    払い出したuuidを設定
    -execで実行するmodeを設定

    View Slide

  28. デモします!

    View Slide

  29. デモ
    ①通常実行
    ②通常実行→障害発生→障害時のAP実行

    View Slide

  30. デモ

    View Slide

  31. 実行コストが少ないか
    まとめ
    回復性
    可観測性
    管理力
    処理の進行状態を把握できるか
    処理の完了状態を把握できるか
    障害を検知し適切な行動を選択できるか
    容易に再実行が可能か
    参考: https://www.yamarkz.com/blog/implementation-practices-for-batch-processing
    CNCF Cloud Native Definition v1.0より項目抜粋
    APを修正
    しない仕組み
    自動で
    再実行

    View Slide

  32. ご静聴
    ありがとうございました!

    View Slide

  33. リマインド機能について
    企業 エンドユーザー
    リンクを発行
    リンクで登録などを実施
    リンクの期限1日前にリマインドメール
    参考:

    View Slide

  34. 詳細
    リマインド対象のリンクを
    DBから取得
    該当するリンク所有者に
    1件ずつメールを送信
    参考:

    View Slide