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

gokartで動かすバッチのコストと実行時間の両立戦略 / Strategies for ba...

gokartで動かすバッチのコストと実行時間の両立戦略 / Strategies for balancing cost and execution time for batches run by gokart

■イベント :【Sansan×エムスリー】gokartで爆速開発!MLOps勉強会
https://sansan.connpass.com/event/288525/

■登壇概要
タイトル:gokartで動かすバッチのコストと実行時間の両立戦略
発表者: 技術本部 研究開発部 研究員 新井 和弥

◉ 研究開発職 採用情報
募集中のポジションや関連記事など
https://media.sansan-engineering.com/

◉ Sansan Tech Blog
Sansanのものづくりを支えるメンバーのテックブログ(R&Dメンバーの連載も多数)

https://buildersbox.corp-sansan.com/

Sansan R&D

July 12, 2023
Tweet

More Decks by Sansan R&D

Other Decks in Technology

Transcript

  1. 写真が入ります 新井 和弥 Sansan株式会社 技術本部 研究開発部 Architectグループ エンジニア 前職ではデータエンジニアとしてB2B SaaS企業のABMプラット

    フォームプロダクトの開発に従事。2022年Sansan株式会社入社。 研究開発部Architectグループ ML Platform所属。研究員とともに DevOps/MLOpsに向き合う。チームの生産性を大事にしている。 中部支社勤務。 Please call me KAZY.
  2. Circuitって何? - 研究開発部のアプリケーション基盤 > 2022/05頃に誕生 > Kubernetes(AWS EKS) > 合計50くらいのアプリやバッチが動く

    - gokartも15個ほど稼働中 > 某氏も大絶賛なネーミング 詳細な紹介はこちら https://speakerdeck.com/sansan_randd/about-circuit-r-and-ds- application-platform おしゃれ、すごい、感動
  3. Spot Instance x Dynamic workspace dir - スポットインスタンスを使う > 安い

    - gokartのworkspace_directoryでキャッシュ > S3に置いて中断リスクの緩和 > 実行時間の増加を最小限にする - 動的にworkspace_directoryを変更 > 定期実行時は毎回新しいworkspace_directory > Timepointと呼んでいる ConfigMapで実現 https://github.com/kubernetes/community/tree/master/icons
  4. CronWorkflowで定期ConfigMap更新 - CronWorkflowで定期的にConfigMapの更新 > ConfigMapの作成・更新権限を付与 - ConfigMap取得した値を元に環境変数設定 - 環境変数経由でworkspace_directoryを設定 -

    実現 > 定期実行時→新しいworkspace_direcotry > スポットインスタンス中断/一時エラー→既存の workspace_direcotry ConfigMapで実現 https://argoproj.github.io/workflows/
  5. CronWorkflowで定期ConfigMap更新 - 定期的にConfigMapを更新するマニフェスト apiVersion: argoproj.io/v1alpha1 kind: CronWorkflow metadata: name: timepoint

    spec: schedule: "0 0 * * mon" timezone: Asia/Tokyo workflowSpec: entrypoint: main templates: - name: main resource: action: apply manifest: | apiVersion: v1 kind: ConfigMap metadata: name: batch-timepoint data: timepoint: '{{=sprig.dateInZone("2006-01-02", sprig.now(), "Asia/Tokyo")}}'
  6. - Timepointにより動的に環境変数を設定するCronJob apiVersion: batch/v1 kind: CronJob metadata: name: hoge-batch spec:

    schedule: "0 0 * * mon" jobTemplate: spec: template: spec: containers: - name: batch image: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/batch env: - name: TIMEPOINT valueFrom: configMapKeyRef: name: timepoint key: timepoint - name: WORKSPACE_DIRECTORY value: s3://workspaces_dirctory/hoge-batch/$(TIMEPOINT) CronWorkflowで定期ConfigMap更新