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

AWS Step Functionsで実現するジョブ基盤 -プロダクトチームを支える基盤づくり-

AWS Step Functionsで実現するジョブ基盤 -プロダクトチームを支える基盤づくり-

AWS Step Functionsで実現するジョブ基盤
プロダクトチームを支える基盤づくり

株式会社hacomono プラットフォーム部プラットフォーム2G
有働 開(Kai Udo)

Platform Engineering Meetup #12
https://platformengineering.connpass.com/event/348986/

hacomono Inc.

April 07, 2025

More Decks by hacomono Inc.

Other Decks in Technology

Transcript

  1. 2 自己紹介 • 有働 開(ウドウ カイ) ◦ GitHub,Qiita @u-kai •

    経歴 ◦ 2020年~2024年 製造業にて社内クラウド基盤・開発基盤の企画 /構築など ◦ 2024/07~ hacomono プラットフォーム部に所属
  2. 3 会員管理・予約・振替・キャンセル・決済・請求管理・売上管理・債権管理 入退館・EC・POS・本人認証カメラ・QRリーダー・ ・総合フィットネスクラブ ・ヨガ・ピラティス ・パーソナルジム ・24時間ジム フィットネスクラブ ・屋外運動場 ・屋内運動場

    ・体育館 ・水泳プール ・学校 ・レジャー施設 公共運動施設 ・Jリーグ(サッカー) ・Bリーグ(バスケットボール) ・野球チーム・サッカーチーム etc スポーツチーム ・スイミングスクール ・ダンス・バレエスクール ・ゴルフスクール ・テニススクール ・カルチャースクール ・空手・体操スクール ・サッカースクール 運動スクール ウェルネス施設の手続きをすべてデジタル化 ウェルネス産業を、新次元へ。
  3.       5 Confidential Corporate Book 組織構成 Engineering Organization Product データ

    デザイン 開発 基盤 CTO室 IoT データ戦略部 UX部 運用保守部 モバイル部 SRE部 プラットフォー ム部 インターン CTO室 QA部 リアーキテク チャ&イネー ブルメント部 Engineering Office部 IoT部 デザイン部 フルタイム 128名 業務委託 32名 (2025年3月現在) PM PM部 新規事業 開発室 データ基盤部 新規事業 開発室 情報 システム サポート サポート部 フィーチャー 部 情報 システム部
  4. 6 hacomonoのプラットフォーム部 ミッション 「プラットフォーム部の役割は、各サービスやプロダクトで共通して使われる機能を提供し、 hacomonoがグロースするhacoを提供する」1) 体制 • メンバー6名 + VPoPE(VP

    of Platform Engineering) 1):https://techblog.hacomono.jp/entry/2024/04/09/1100 2): https://techblog.hacomono.jp/entry/2022/12/20/070000 3): https://techblog.hacomono.jp/entry/2023/08/22/110000 4): https://techblog.hacomono.jp/entry/2024/12/02/000000 実績 • マルチテナントアーキテクチャの構築・運用2) • モジュラーモノリスの設計・基盤の構築3) • feature-flag基盤の構築・運用4) • 新ジョブ基盤 (job-manager)の構築・運用 など...
  5. 9 1. マイクロサービス・マルチプロダクト化に向けて • 開発生産性向上などの目的でマイクロサービスを狙っていきたい • 会社の成長に伴ってマルチプロダクト化が計画 /実行されつつある 実行をオーケストレーションするワークフロー管理ツールが必要に •

    複数のAPIを決まった順序で実行する用途が増えてくる ◦ Aサービスでデータを取得→Bサービスへデータ同期→外部サービスへ同期... • ジョブの非同期実行や長期実行、補償などによる一貫性が必要になってくる • etc…
  6. 11 2. 既存ジョブ基盤の課題 既存ジョブ基盤はお客様環境毎に ECSを定期的に起動し、Rakeタスクを実行 → シンプルな構成かつモノリスなロジックのため、開発難易度が低くジョブの追加も容易 しかし お客様環境毎にECS Taskを一斉に起動

    既存のジョブ基盤 • 高頻度に実行されるジョブが存在 & コンテナの起動時間が長くコスト効率が悪い • お客様増加によるECSや外部APIなどのRateLimitへの懸念 • モノリスなロジックのため並列実行が難しい • Rake内で複雑なワークフローを組むのは難しい
  7. 12 job-manager利用によって解決する課題 • サーバレスアーキテクチャの利用によって 全ECSコストの約20%を削減 お客様環境毎にECS Taskを一斉に起動 既存ジョブ基盤 job-manager 任意の並列度でAPIを実行

    • 分散されているAPIのオーケストレーションを可能にしたことで ◦ 流量調整が容易に ◦ 並列実行性向上 ◦ 再実行性向上 • 複雑なワークフローをAWSマネージドな機能で作成可能に
  8. 13 3. プロダクトチームへ開発 /運用の委譲 しかし • SFnやAWSの基本知識や細かい仕様を把握する必要がある • hacomonoアーキテクチャの把握や、ジョブに必要なデータ収集などの難しさも 単にAWSを利用してもらうのではなく、

    プラットフォームとして必要な機能を搭載 し、 最終的にはプロダクトチームにジョブの開発 /運用を委譲できる状態に持っていく ことを 一つの目標にjob-managerを開発 プロダクトチームが自律的な開発 /運用を可能な状態を目指したい
  9. 18 プロダクトチームで開発 /運用可能?? job-managerのDeploy フロー提供 job-managerのE2Eテスト提供 実行 feature-flag基盤の提供 設定/反映 実行

    job-managerのコード自動生成提供 カスタマイズ (Optional) API(≒プロダクト機能)の実装・テスト・デプロイ・運用 プラットフォーム部 プロダクトチーム job-managerの開発ではなく、機能開発に注力できるようにした 今後もフィードバック/改善要望いただきながら、目標に近づけていく予定 設定/実行 変更の検証/適用 job-managerコンポーネントやツールの バージョンアップ 機能の 開発~運用 ジョブの開発 ジョブのテスト ジョブのデプロイ ジョブのリリース ジョブの運用
  10. 19 現状の社内利用について • プロダクトチームへjob-managerを普及中 • 既存ジョブ基盤からコスト削減効果が高いジョブを job-managerに移行中 • 外部APIに依存している新規ジョブをjob-managerで実装済み and

    実装中 ◦ 流量調整によるRateLimitエラーの回避を実現 ◦ 並列実行数向上によるジョブ実行の効率向上が実現 • 一部のチームのみがjob-managerに関心があり普及活動が十分ではない いくつかのジョ ブでは狙い通り まだまだ普及 活動に力を入 れるべき
  11. 20 これから • さらに普及していく プラットフォーム部 リアーキテクチャ& イネーブルメント部 プロダクトチーム 協力 フィードバック・改善要望

    採 採 改善 • 既存ジョブからの移行 • 機能FB • 適用箇所の特定 • 普及方法の模索 • 移行ライブラリなどの開発援助 など • フィードバック/要望を基に改善を続ける 価値提供 普及活動