Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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 趣味: 海外旅行 / 英語 / 映画

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

AbemaTV, Inc. All Rights Reserved
 6 ABEMA 無料動画・話題の作品が楽しめる新しい未来のテレビ

Slide 7

Slide 7 text

AbemaTV, Inc. All Rights Reserved
 AbemaTV, Inc. All Rights Reserved
 7 7 ABEMA とは

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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 を作成する

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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 の環境変数を上書き ❏ タイムアウト時間を伸ばす

Slide 20

Slide 20 text

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 並列処理で実行完了が高速に

Slide 21

Slide 21 text

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 失敗時のリトライが簡単に

Slide 22

Slide 22 text

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 失敗時のリトライが簡単に

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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 直列処理

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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 などの外部サービスは自前で設定する必要がある

Slide 28

Slide 28 text

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 とも連携できる

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

AbemaTV, Inc. All Rights Reserved