Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スタートアップにおけるデータ基盤のパッチワークフローの変遷
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
KAKEHASHI
PRO
June 11, 2021
Technology
9.6k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
スタートアップにおけるデータ基盤のパッチワークフローの変遷
AWS startup 202106
KAKEHASHI
PRO
June 11, 2021
More Decks by KAKEHASHI
See All by KAKEHASHI
Sync と Async ─ useSyncExternalStore を使う者の岐路
kakehashi
PRO
1
220
React Compiler導入の効果と運用の工夫
kakehashi
PRO
3
420
変化の激しい時代をゴキゲンに生き抜くために 〜ストレスマネジメントのススメ〜
kakehashi
PRO
5
2.4k
「SaaSの次の時代」に重要性を増すステークホルダーマネジメントの要諦 ~解像度を圧倒的に高めPdMの価値を最大化させる方法~
kakehashi
PRO
3
4.8k
プロダクトを育てるように生成AIによる開発プロセスを育てよう
kakehashi
PRO
2
2k
チームのモメンタムに投資せよ! 不確実性と共存しながら勢いを生み出す3つの実践
kakehashi
PRO
1
370
FAXが現役の業界でマルチモーダルAIプロダクトを作る
kakehashi
PRO
1
300
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
9
3.6k
器用貧乏が強みになるまで ~「なんでもやる」が導いたエンジニアとしての現在地~
kakehashi
PRO
7
6.3k
Other Decks in Technology
See All in Technology
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
110
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
230
How Timee Delivers Day 1 Production Ready LLM Features
tomoyks
0
190
入門!AWS Blocks
ysuzuki
1
110
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
930
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
0
190
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
160
新しいVibe Codingと”自走”について
watany
6
310
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
640
20260619 私の日常業務での生成 AI 活用
masaruogura
1
160
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
550
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
410
Between Models and Reality
mayunak
4
330
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
390
Tell your own story through comics
letsgokoyo
1
950
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Building Adaptive Systems
keathley
44
3k
Speed Design
sergeychernyshev
33
1.8k
First, design no harm
axbom
PRO
2
1.2k
Site-Speed That Sticks
csswizardry
13
1.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
Transcript
スタートアップにおける データ基盤のバッチワークフローの変遷 株式会社カケハシ 福田 貴之
自己紹介 福田 貴之 株式会社カケハシ データ基盤 ProductOwner 兼 エンジニア 経歴 •
某Y!2007年新卒でモバイル向けサービス開発運用 • ソーシャルゲーム会社でログ基盤を約6年くらいみてた • あとはベンチャーをいくつか...(HR Saasとか) • 2020年より現職 好きなAWSサービス: ECSFargate
Agenda • カケハシの紹介 • 弊社の以前ワークフローの構成と問題点 • ワークフローエンジン選定 • MWAA(Airflow)使ってみた •
まとめ
株式会社カケハシ の紹介
明日の医療の基盤となる、エコシステムの実現 Vision 患者 医薬品 サプライチェーン 薬局 ⽇本の医療体験を、しなやかに。 Mission
事業内容 患者満足と薬局の働き方改革を支援 電子薬歴の先をいく “薬局体験”アシスタント 薬局と患者さんがLINEでつながり、 LINE × 薬剤師で、薬局の外での 服薬期間中も患者を継続フォローする 調剤薬局の
経営診断サービス
数字で見るカケハシ社 https://www.kakehashi.life/5th-anniversary.html
スタートアップにおける データ基盤のバッチワークフローの変遷
以前の弊社データ基盤構成
以前のデータ基盤のアーキテクチャ構成 • サービスはDynamoDB • Lambdaで生データを抜いて、加工をGlueJob、結果は S3に、それらのジョブをStepFunctionsで管理 • この処理結果のS3を使う別チーム(AWSアカウント) が、GlueJobを利用して、RDSに入れたり、Athenaから 利用している。これらはGlueWorkflowで管理
課題に感じていたこと • チームも別々でどこで何が動いているか全貌把握が 難しくなっている • 再集計の困難さ • StepfunctionsもGlueWorkflowもWebコンソールから ワークフローを作っていた ◦
コードで管理されていなかった
ワークフローエンジン選定
何故ワークフローエンジンを使うか • cron(CloudWatchEventsなど)では駄目なのか? ◦ 依存関係のない単発のJOBがある程度ならこちらの方が楽 • バッチを運用してると困ってくること ◦ ジョブごとの依存関係をコードで管理したい....
◦ retry処理や成否通知処理をそれぞれのJobに実装したくない... ◦ どこまで終わっているのか状態管理をしてほしい... ◦ どの部分にどれくらい時間がかかっているのか観測したい... ◦ 失敗時にそこから再集計しやすいようにしたい... • 最初からワークフローを導入するのはオーバースペックな場合も
バッチワークフロー比較 OSSはいくつかあるけれど、、マネージドでやりたい • (OSS)Airflow ◦ Airbnb社 • (OSS)Digdag ◦ TreasureData社
• (OSS)Argo Workflow ◦ k8sネイティブ • (OSS)Luigi ◦ Spotify社OSS • AWS StepFunctions • AWS Glue Workflow • Amazon Managed Workflows for Apache Airflow
AWSマネージドワークフロー所感 • Glue Workflow ◦ Glue Job/Glue Crawlerだけのワークフローなら作るのは一番ラク ◦
S3をGlueJobでETL処理してAthenaで見るみたいな用途だとマッチするのでは ◦ コンソールのジョブの一覧性がちょっと... • StepFunctions ◦ GlueWorkflowよりは多少めんどくさいが自由度もある ◦ 豊富なAWSサービスとの連携 ◦ 思想としてコードを書かずにワークフローが作れる • MWAA(Airflow) ◦ Airflowをマネージドで運用してくれる ◦ ワークフローがコードで管理できる(=かなり書く必要があるが...) ◦ 拡張性もある(boto3でコードを書けになりがちだが...) ◦ UIがわかりやすく再集計などがやりやすい
MWAA使ってみた!
MWAAアーキテクチャ https://docs.aws.amazon.com/ja_jp/mwaa/latest/userguide/what-is-mwaa.html • MetaDatabaseはAurora? • Airflow Scheduler/Workerは ECS Fargate?
MWAAを利用したクロスアカウントでのデータ基盤 • それぞれのAWS環境で管理していた バッチをMWAAから一元するようにした • クロスアカウントでGlueなどを叩く場合は AssumeRoleするような実装をした
MWAA(Airflow)実際運用してみて良かった点 • 半年くらい運用しているが特に問題は起きてない! • DAGの反映がS3にアップロードするだけで即反映される! • 1度コードを書いてpluginファイルにしておけば同じようなワークフローを量産しやす い • コードでワークフローが管理できる安心感(どこで誰が何をやっているのか)
• (冪等に作っておけば)再集計も楽
MWAA(Airflow)実際に運用するにあたって辛いかもな点 • わりと(かなり)コード書く必要があるかも ◦ 再利用は可能だし通知やretry処理を作り込む必要がないとはいえ... ◦ 一部はOperatorsなど用意されているものもあるが(ECSなど) ▪
https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/operators/index. html ◦ GlueJobをワークフロー(DAG)から呼ぶときなどboto3で実装必要 ◦ AssumeRoleが1時間で切れるのでそのあたりの実装も必要 • [MWAA] plugin化したファイルの反映にAirflowの再起動が必要(30分くらいかか る...) def exec_gluejob(**kwargs): client = boto3.client("glue") res = client.start_job_run( JobName=job_name, Arguments=job_args, )
まとめ • スタートアップであっても状況に応じてワークフローを使い分けるのはアリ • 初期工数を考えればチーム/メンバーが少数であればStepFunctionsや GlueWorkflowからバッチワークフロー運用するのはアリ ◦ なんならCloudWatchEvents(cron)のままでも良い場合もある •
AWS環境が分かれてプロダクト/チームが複数存在するようになってきたらMWAAを 導入するのはアリ
カケハシは絶賛採用実施中です!! カジュアル面談からでも!! • サーバサイドエンジニア • フロントエンドエンジニア • SRE • データエンジニア
• プロダクトマネジャー • 開発ディレクター(スクラムマ スター) https://herp.careers/v1/kakehashi