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

マルチAWSアカウント間のストリーミングによるデータ同期/AWS SaaS Builders ...

マルチAWSアカウント間のストリーミングによるデータ同期/AWS SaaS Builders Forum 2024

2024年9月27日に開催された「AWS SaaS Builders Forum 2024」の登壇資料です。
https://pages.awscloud.com/eib-saas-240927-reg.html

-----
Visionalのエンジニアリングに関する最新情報はTwitter、ブログで発信しています!📣

▼Visional Engineering Blog
https://engineering.visional.inc/blog/

▼VISIONAL ENGINEERING Twitter
https://twitter.com/VISIONAL_ENG

Visional Engineering & Design

September 26, 2024
Tweet

More Decks by Visional Engineering & Design

Other Decks in Technology

Transcript

  1. マルチ AWS アカウント間の
 ストリーミングによるデータ同期
 
 
 @AWS SaaS Builders Forum

    2024/09/27
 株式会社ビズリーチ(Visionalグループ)
 リクルーティングプロダクト本部 検索基盤グループ
 中瀬 貴晴

  2. 2008〜 日本ユニシス株式会社(現 BIPROGY株式会社)
 • 主にtoBの物流系システム開発・保守業務を担当 
 • 某ネット銀行へ出向し、クライアント側での基幹システム開発も経験 
 2019〜

    株式会社ビズリーチ
 • 2019〜 キャリトレ
 ◦ グロースを通してインフラからフロントまでの開発経験を積む 
 • 2022〜 ビズリーチ 検索基盤グループ
 ◦ ビズリーチプロダクトの検索に関わる基盤の刷新、保守運用を担当 
 ◦ SIerの経験を活かし、中長期案件の推進なども担当 
 自己紹介
 中瀬 貴晴
 息子にバスケットボールを教えるのが趣味 🏀
 ※「キャリトレ」は 2022年12月にサービス終了しました。 

  3. 各技術要素の選定理由
 • AWS DMS Serverless
 ◦ マルチAWSアカウントでのデータ同期が可能であった 
 ◦ CDCでElasticsearchに同期が必要なデータ更新を確実に捕捉することができた


    ◦ EC2インスタンスを自前で保守する必要がなかった 
 • Amazon Kinesis Data Streams On-Demand
 ◦ DMS経由のCDCをストリームとして処理したかった 
 ◦ DMS以外からのデータ同期が必要になった場合の拡張性を考慮 
 ◦ 時間指定でストリームを再取得することができるため、障害復旧が容易 
 • AWS Fargate
 ◦ 必要最小限の構成で実現したかった(EMR等の学習、運用コストを避けたかった) 
 ▪ 流量がある程度安定しているため動的なスケーリングが必要なかった 
 ▪ 結果整合性を担保すればよかった(チェックポイントによる厳密な再実行の仕組み等は不要) 
 • Apache Flink
 ◦ 社内で使える技術者が多いJVM系の言語で開発したかった
 ◦ 候補としてはApache Flink, Apache Beam, Apache Spark
 ◦ Flinkで書いたコードが読みやすかった 
 ◦ Flinkがストリーミング処理由来のフレームワーク で、window処理に関する機能が豊富そうだった 

  4. 成果
 短期的なビジネス観点だけでなく、長期的な事業成長を支えられる基盤作りが完了
 
 
 ビジネス貢献
 処理の効率化/復旧時間
 属人化の解消と品質
 データ鮮度
 設定変更コスト
 RDBからElasticsearchへの同期処理

    
 600 s → 30 s 
 1/6x 
 20x
 Elasticsearch の設定変更時間  12 h → 2 h 
 日中も実行可能に
 RDBへの負荷(IOPS)
 1/10x
 日次インデックスの所要時間
 1/2 x
 5 h → 2 h 
 障害復旧時間
 15 h → 2 h 
 1/8 x
 • 社内に技術者の多い言 語への書き換え
 (Go -> Kotlin)
 
 • 設計に関するドキュメン トを集約
 
 • データ鮮度の低下によ る障害発生はリリース 後0に

  5. Appendix(index再構築)
 CodeBuildのGitHub Actions Hosted Runnerを活用
 workflowはGitHub Actionsに集約、実行はVPC内のCodeBuildで
 モチベーション
 • CI/CDはGitHub

    Actionsに集約したい
 • Elasticsearchの運用系workflowを定義したい
 • Elasticsearchにアクセスする許可をGitHub Actions に渡すのは心許ない