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

20240326_replace_with_cloud_workflows

 20240326_replace_with_cloud_workflows

社内ツールのスケジュールドバッチを Cloud Workflows で置き換えてみた
https://findy.connpass.com/event/312637/

tetsuya28

March 26, 2024
Tweet

More Decks by tetsuya28

Other Decks in Technology

Transcript

  1. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    1 社内ツールの定期実行処理を Cloud Workflows で置き換えてみた 2024 March 26th tetsuya28
  2. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    2 2 はじめに 山本 哲也 ( tetsuya28 ) 株式会社 AbemaTV - Cloud Platform ( 2021 年新卒 ) ABEMA における EKS や GKE をはじめとして開発者が利用する基盤を管理。 CI/CD 、モニタリング、サービスメッシュ、分散トレーシングなど幅広く担当。 技術: Kubernetes / Anthos Service Mesh / Open Telemetry / Grafana / Gatekeeper / Terraform 趣味: 海外旅行 / 英語 / 映画
  3. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    3 3 はじめに 今回は ABEMA のサービスに直接関係あるものではありません ❏ サービスに直接関係ある話や大規模処理などの話はでてきません 大規模処理ではなく定期実行処理のお話です
  4. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    4 4 目次 ❏ ABEMA とは ❏ バッチの目的 ❏ 旧来の構成 ❏ 現在の構成 ❏ Cloud Workflows Tips
  5. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    5 5 目次 ❏ ABEMA とは ❏ バッチの目的 ❏ 旧来の構成 ❏ 現在の構成 ❏ Cloud Workflows Tips
  6. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    8 8 目次 ❏ ABEMA とは ❏ バッチの目的 ❏ 旧来の構成 ❏ 現在の構成 ❏ Cloud Workflows Tips
  7. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    9 9 バッチの目的 本番環境 検証環境 負荷試験環境 開発環境 本番環境 検証環境 開発環境 クラウドごとに複数の環境が存在する
  8. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    10 10 バッチの目的 本番環境 検証環境 負荷試験環境 開発環境 本番環境 検証環境 開発環境 コストの異常に気付きにくい環境
  9. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    11 11 目次 ❏ ABEMA とは ❏ バッチの目的 ❏ 旧来の構成 ❏ 現在の構成 ❏ Cloud Workflows Tips
  10. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    12 12 旧来の構成 - 構成図 Cloud Functions が全てのサービスを終了 / 停止する ❏ 1st gen のイベントドリブンを利用していた Cloud Functions Cloud Scheduler Google Kubernetes Engine Compute Engine Memorystore Pub/Sub
  11. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    13 13 旧来の構成 - 問題点 Cloud Functions Google Kubernetes Engine Compute Engine Memorystore 主に GKE の処理時間が伸びてきた ❏ Cloud Functions 1st gen のタイムアウトは 9 分 ❏ 2nd gen でも HTTP リクエストのみ 60 分 タイムアウト 300以上のマイクロサービスを支えるマルチクラウドアーキテクチャ戦略 | ABEMA Developer Conference 2021 Cloud Scheduler Pub/Sub
  12. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    14 14 目次 ❏ ABEMA とは ❏ バッチの目的 ❏ 旧来の構成 ❏ 現在の構成 ❏ Cloud Workflows Tips
  13. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    15 15 現在の構成 - 構成図 Cloud Scheduler Cloud Run Jobs Workflows Cloud Run Jobs Cloud Run Jobs Cloud Run Jobs Google Kubernetes Engine Compute Engine Memorystore Cloud Spanner Cloud Workflows がそれぞれのサービスの 終了 / 削除を担当する Cloud Run Jobs を作成する
  14. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    16 16 現在の構成 - Cloud Run Jobs 2023 年 9 月にジョブ実行時間を 24 時間まで伸ばす機能が GA
  15. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    17 17 現在の構成 - Cloud Run Jobs 2023 年 10 月にジョブの環境変数を上書きできる機能が GA
  16. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    18 18 現在の構成 - 構成要素 Cloud Scheduler Cloud Run Jobs Workflows 構成をシンプルに保てる
  17. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    19 19 現在の構成 - Cloud Workflows main: steps: - parallel_step: parallel: for: value: target in: ["gke", "gce", "spanner", "bigtable", "redis", "redis-cluster"] steps: - run_job: call: googleapis.run.v1.namespaces.jobs.run args: name: ${"namespaces/" + project_id + "/jobs/" + job_name} location: ${job_location} body: overrides: containerOverrides: - env: - name: TERMINATION_TARGET value: ${target} connector_params: timeout: 21600 # 6 hours result: job_execution ❏ 各サービスに並列化 ❏ Job の環境変数を上書き ❏ タイムアウト時間を伸ばす
  18. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    20 20 現在の構成 - メリット Cloud Scheduler Cloud Run Jobs Workflows Cloud Run Jobs Cloud Run Jobs Cloud Run Jobs Google Kubernetes Engine Compute Engine Memorystore Cloud Spanner 並列処理で実行完了が高速に
  19. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    21 21 現在の構成 - メリット Cloud Scheduler Cloud Run Jobs Workflows Cloud Run Jobs Cloud Run Jobs Cloud Run Jobs Google Kubernetes Engine Compute Engine Memorystore Cloud Spanner 失敗時のリトライが簡単に
  20. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    22 22 現在の構成 Cloud Scheduler Cloud Run Jobs Workflows Cloud Run Jobs Cloud Run Jobs Cloud Run Jobs Google Kubernetes Engine Compute Engine Memorystore Cloud Spanner 失敗時のリトライが簡単に
  21. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    23 23 目次 ❏ ABEMA とは ❏ バッチの目的 ❏ 旧来の構成 ❏ 現在の構成 ❏ Cloud Workflows Tips
  22. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    24 24 Cloud Workflows Tips 並列処理 ❏ parallel を入れるだけで並列処理に ❏ もちろん直列処理も可能
  23. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    25 25 Cloud Workflows Tips 並列処理 main: steps: - parallel_step: for: value: target in: ["gke", "gce", "spanner"] steps: - run_job: call: hoge main: steps: - parallel_step: parallel: for: value: target in: ["gke", "gce", "spanner"] steps: - run_job: call: hoge 直列処理
  24. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    26 26 Cloud Workflows Tips 公式の connector に実装を委譲できる ❏ バックオフリトライや最長 1 年間までポーリングが可能 Connectors reference | Workflows | Google Cloud
  25. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    27 27 Cloud Workflows Tips Make authenticated requests from a workflow 公式の connector でサポートされていなくても .googleapis.com で終わるエンドポイントには自動で認証を行う Google Cloud のほとんどのエンドポイントを利用できる Slack などの外部サービスは自前で設定する必要がある
  26. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    28 28 Cloud Workflows Tips Make authenticated requests from a workflow Cloud Workflows の呼び出し元に Eventarc を利用できる ❏ 130 を超える Google Cloud プロバイダに対応している Eventarc とも連携できる
  27. AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved


    29 29 まとめ ❏ Cloud Workflows を使って業務ワークフローを自動化できる ❏ Audit log の Slack 通知などにも Cloud Workflows を利用しています ❏ Cloud Workflows に任せるところ / 自前で実装するところを見極めよう ❏ 検証中に Cloud Workflows に寄せすぎて黒魔術を作ってしまった