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
DMSを利用して、オンプレOracleの大規模データを Auroraへ継続的にレプリケーション...
Search
Recruit
PRO
August 02, 2022
Technology
0
650
DMSを利用して、オンプレOracleの大規模データを Auroraへ継続的にレプリケーションした事例の紹介/アップデート紹介とちょっぴりDiveDeepするAWSの時間 第19回
2022/06/23 AWS主催「アップデート紹介とちょっぴり DiveDeep する AWS の時間 第19回」での、辛の講演資料になります。
Recruit
PRO
August 02, 2022
Tweet
Share
More Decks by Recruit
See All by Recruit
事業の財務責任に向き合うリクルートデータプラットフォームのFinOps
recruitengineers
PRO
2
310
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
360
プロダクトマネジメントの分業が生む「デリバリーの渋滞」を解消するTPMの越境
recruitengineers
PRO
3
960
あなたの知らない Linuxカーネル脆弱性の世界
recruitengineers
PRO
4
360
dbtとBigQuery MLで実現する リクルートの営業支援基盤のモデル開発と保守運用
recruitengineers
PRO
5
270
『ホットペッパービューティー』のiOSアプリをUIKitからSwiftUIへ段階的に移行するためにやったこと
recruitengineers
PRO
4
1.8k
経営の意思決定を加速する 「事業KPIダッシュボード」構築の全貌
recruitengineers
PRO
4
450
Browser
recruitengineers
PRO
12
4.2k
JavaScript 研修
recruitengineers
PRO
9
2.3k
Other Decks in Technology
See All in Technology
形式手法特論:コンパイラの「正しさ」は証明できるか? #burikaigi / BuriKaigi 2026
ytaka23
16
4.5k
First-Principles-of-Scrum
hiranabe
3
1.5k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
60k
Oracle Cloud Infrastructure:2025年12月度サービス・アップデート
oracle4engineer
PRO
0
200
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
270
AWS re:Invent2025最新動向まとめ(NRIグループre:Cap 2025)
gamogamo
0
160
ファインディにおけるフロントエンド技術選定の歴史
puku0x
0
170
202512_AIoT.pdf
iotcomjpadmin
0
180
AI with TiDD
shiraji
1
340
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
9
4.3k
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
430
善意の活動は、なぜ続かなくなるのか ーふりかえりが"構造を変える判断"になった半年間ー
matsukurou
0
320
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
13k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
74
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
160
The Limits of Empathy - UXLibs8
cassininazir
1
200
It's Worth the Effort
3n
187
29k
Abbi's Birthday
coloredviolet
0
4.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
420
Claude Code のすすめ
schroneko
67
210k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
What does AI have to do with Human Rights?
axbom
PRO
0
1.9k
Transcript
DMSを利用して、オンプレOracleの大規模データを Auroraへ継続的にレプリケーションした事例の紹介 株式会社リクルート 辛剣徳
目次 1. じゃらんnetについて 2. クラウド在庫検索基盤について 3. AWS DMSについて 4. AWS
DMS利用時の課題 5. まとめ 2
辛剣徳(Shin Kento) 2021年 リクルート中途入社 「じゃらんnet」のバックエンド開発・運用を担当 自己紹介 3
じゃらんnet 4
• 宿・ホテル予約のWebサービス • 宿予約だけでなく、パッケージツアー、レンタカー、ゴルフなどの様々なサービスを提供 じゃらんnetとは 360°トラベルパートナー 宿泊施設・地域のパートナーとして、旅行業 界に貢献 5
• 環境:オンプレミス • アプリケーション:Java • DB:Oracle じゃらんnetのシステム 6
在庫検索機能 7
条件(エリア、日付、予算など)に合う在庫(宿泊施設、部屋タイプ、プランの組み合わせ ) を検索する。 じゃらんの在庫検索機能 条件入力 検索結果 宿泊施設 プラン 部屋タイプ 8
• 大量のユーザーからの高頻度なアクセス • 大規模なデータ量(宿 x プラン x 部屋 x 日付)
在庫検索機能の特徴 宿データ プランデータ 部屋データ 在庫データ アクセス数、処理時間共に大きく、DBに高負荷を与える機能 データ 検索処理 検索結果 • 結合 • 料金計算 • 条件抽出 • ソート 9
1. DBへの負荷が大きく、オンプレのDBではオンデマンドなスケーリングが難しい 2. 検索以外の機能とも密結合しており、改修時の影響範囲が大きい 検索機能の課題 既存のシステムでは、在庫検索機能を利用した新しい機能を追加したくて も、コストが大きく、気軽に追加できない 既存環境とは独立した、在庫検索機能を提供するシステムが必要 10
クラウド在庫検索基盤 11
在庫検索機能の課題を解決するために構築されたクラウド上の在庫検索 API クラウド在庫検索基盤とは オンプレ環境とは独立したサブシステム AWS アクセス数に応じてスケーリングでき、検索処理を高速に 実行できるハイパフォーマンスなDB Aurora (MySQL) アクセス数に応じてスケーリングできるアプリケーション実
行環境 ECS オンプレDBからAWSへの継続的なデータ同期 DMS 求める要件 採用技術 12
13 クラウド在庫検索基盤の役割 役割 環境 リクエスト種 別 データの 鮮度 データの 整合性
本体システム 検索・予約などの主要機能 オンプレミス 更新リクエストを含む リアルタイム 厳密な整合性が求められる クラウド在庫検索基盤 UX改善のための新機能や A/Bテスト クラウド(AWS) 参照リクエストのみ ほぼリアルタイム (数分程度の遅延は許容 ) ある程度の結果整合を許容 セキュリティ 個人情報データを扱う 個人情報データは扱わない
クラウド在庫検索基盤の位置づけ 本体システム (オンプレ) クラウド在庫検 索基盤(AWS) DB DB フロント画面 予約機能 決済機能
在庫検索機能 ・・・ 在庫検索機能 在庫検索機能のみ再構築 必要なデータを同期 (14テーブル、数十億レコード ) 主要予約導線の検索リクエストは引き 続き本体システムへ 在庫検索機能を利用した新しい機能で のリクエストはクラウド在庫検索基盤へ 14
クラウド在庫検索基盤のシステムアーキテクチャ 15 オンプレ環境 DirectConnectによりDMSと オンプレ環境を接続 クラウド在庫検索基盤 DMSの更新処理をWriter、 APIからの参照リクエストを Readerに振り分け 各コンポーネントは全て
Multi-AZで構成
AWS DMS 16
• Database Migration Service • 異種間のデータベースの移行をサポート • ダウンタイムなく移行が可能 • CDC(継続的なレプリケーション)が可能
AWS DMSとは 17
クラウド在庫検索基盤におけるDMSの利用 DMSの利用により以下を達成 Oracle → MySQLへの異種間DB移行 サービス停止のないオンライン下での全同期 レイテンシ平均1分程度のほぼリアルタイムな同期 18
① レプリケーションインスタンス、移行タスクを作成 ② ターゲットDBにテーブルを準備 ③ 既存データの全同期(フルロード)を実施 ④ 継続的同期(CDC)を開始 DMSの利用手順 19
DMSの利用手順① インスタンス、タスクを作成 ① レプリケーションインスタンスの作成 インスタンスサイズ等を指定 ② エンドポイントの作成 ソース、ターゲットそれぞれに接続するためのエンドポイン トを作成 ③
タスクを作成 移行タイプにフルロード & CDCを指定 20
タスク設定のテーブルマッピングを利用することで、連携対象のレコード、カラムを指定することが可 能。 テーブルマッピング 特定の日付以降の在庫データに 制限 個人情報カラムを連携対象から 除外 • 連携レコードを指定(選択ルール) •
連携カラムを指定(変換ルール) 21
移行対象のテーブル • 移行対象のテーブルをターゲットDBに作成する。 • Oracleのデータ型に対応する適切なMySQLのデータ型を選択する。 • ロード速度を高めるために、セカンダリインデックスはフルロード完了後に作成する DMSの利用手順② ターゲットテーブルの準備 ソースDB(Oracle)
ターゲットDB(Aurora MySQL) 移行対象に対応す るテーブルを作成 DMS (レプリケーションインスタンス) 22
• サービス稼働中に既存データの移行 (フルロード)を実施。 • DMSはソースDBにSELECTを実行し、取得したデータをターゲット DBにロードする。 • ソースDBへの負荷を最小限にするため、複数テーブルの並列なロードは行わない。 DMSの利用手順②フルロード ソースDB(Oracle)
ターゲットDB(Aurora MySQL) DATA DATA ソースDBへ の更新操作 ※フルロード中の 更新差分はDMSの メモリ内にキャッ シュされる SELECT LOAD 23
• フルロード中にキャッシュされた変更差分を適用しきった後、新規更新の適用が始まる。 • Oracleがソースの場合、LogMinerによりREDOログファイルを解析し、 SQLを生成してターゲット DBに連 携する。 ◦ REDOログファイル: 更新履歴を記録するログファイル
◦ LogMiner: Oracleの提供するログファイルの解析機能 DMSの利用手順③ CDC ソースDB(Oracle) ターゲットDB(Aurora MySQL) ソースDBへ の更新操作 REDOログ ファイル LogMinerに よる解析 SQL SQL 24
フルロード結果 Table1 Table2 Table3 Table4 Table5 Table6 Table7 Table8 Table9
Table10 Table11 Table12 Table13 25 • 合計所要時間 8時間程度 • 平日日中のアクセスの少ない時 間帯に、2日に分けて実施。
26 CDC結果 • スループット:平均数 500 rows/s • レイテンシ:平均1分程度 ソース側の更新頻度の増加や、CPU高騰時はレイテ ンシが増加。
DMS利用時の課題と対応 27
課題① 適切なタスク数の検討 28 レイテンシ DBへの負荷 データの 整合性 耐障害性※ タスク数を増やした場合 タスク数を減らした場合
タスクの数だけ並列でCDCを実行できるが、以下のようなトレードオフが存在する ※ タスクが停止した際に影響が及ぶテーブルの数 小さい 大きい 整合性を保ちにくい 高い 大きい 小さい 整合性を保ちやすい 低い 小規模なテーブルを扱うタスクと大規模なテーブルを扱うタスクの 2タスクに分け、大 規模テーブルの再ロードリスクを減らす方針
• ソースの更新頻度に対しターゲットへの適用が追いつかず、レイテンシ (同期遅延)が上昇してしまう。 • 特にオンライン下でのフルロードでは、フルロード中の更新差分が蓄積され大きなレイテンシになってし まう。 課題② CDCレイテンシの増大 フルロード CDC
フルロード&CDC時のレイテンシの推移 フルロード終了時点で 3時間のレ イテンシが発生 CDC中もソースの更新に適用が追 いつかず、レイテンシが 6時間まで 拡大 29
ソースDBで実行された複数のトランザクションを、ひとつの処理にまとめて適用する機能 • メリット: ターゲットDBへの適用頻度を抑えることができる • デメリット: ソースのトランザクション変更されるため、厳密な参照整合性が損なわれる BatchApply機能 ソースDB(Oracle) ターゲットDB(Aurora
MySQL) 複数のトランザクションが バッチ化される 30
• BatchApplyの有効化により、無効化時と比較してターゲットへの適用スループットが劇的に (100倍程度)改善した。 BatchApply機能の効果 BatchApply有効化時のレイテンシの推移 フルロード CDC フルロード終了後、変更 差分を即座に適用 CDC中のレイテンシは
最大10分程度で安定 31
CDCタスクを一時停止後、ソースDBの負荷高騰により再開に一度失敗したことで、一部 のINSERT処理を欠損してしまった。(DMSのログから検知) 課題③ データ差分の発生 ソースDB(Oracle) ターゲットDB(Aurora MySQL) LogMinerに よる解析 SQL
SQL 欠損データの復旧が必要だが、 サービス停止の伴うフルロードはなるべく避けたい 同期失敗 32
• DMSの検証タスクを利用することで、ソース、ターゲットのデータ差分を検出することができる。 • 検証後、フルロードではなく、検知した差分のみを手動で復元することで対応 • 恒常的に検証タスクを稼働させると、ソース DBの負荷が大きくなるため、タスクの停止や不審なログを検知 した都度実行する方針を採用。 検証タスクの利用 ソースDB(Oracle)
ターゲットDB(Aurora MySQL) CDCタスク 検証タスク ソース、ターゲットのレコードを抽出し差分を検出す る 33
検証タスク実行結果 34 • 検証タスクのコンソール画面 • 検証実行時の検証保留中のレコード数の推移 既存のデータの検証 CDCにより新しく連携されるデータの検証
まとめ 35
• DMSにより簡易にデータ移行を実現できるが、機能面、性能面で注意 点も多いため、本番適用前に十分に検証してから利用するのが大事。 • タスクのエラーや、データ差分の発生は完全には避けきれないという前 提で、失敗した際に再フルロードや検証を実施できる運用にするべき。 DMSを利用しての所感 36
• 導入成果 ◦ 平均1分程度のレイテンシでほぼリアルタイムな同期を実現 ◦ いくつかの新機能やA/Bテストなどで高速に実施できるようになった。 導入成果・今後の展望 37 • 今後の展望
◦ アクセス数の大きい機能や、処理負荷の高い検索処理など本体システムで実現 できない機能での利用拡大を目指す。 ◦ 検索性能そのものを改善し、検索速度、スループットの向上を目指す。 ← 在庫検索クラウド基盤利用例 在庫カレンダー画面
• じゃらんnetでは在庫検索処理の負荷が大きな課題であったが、クラウド 在庫検索基盤の導入によって、検索処理の負荷をオフロードし、機能追加 のしやすい環境を実現することができた。 • オンプレシステムからクラウドへのデータ同期は、異種DB間の移行・ほぼ リアルタイムな同期・大規模データという難易度の高いものだったが、 DMSにより実現することができた。 結び 38
We’re Hiring!!! 39 採用サイト(テクノロジー職): https://recruit-saiyo.jp/technology/ Tech Blog: https://engineers.recruit-jinji.jp/ じゃらんnetでは バックエンドエンジニア、SREエンジニア等、
様々な職種で一緒に働く仲間を募集しています • 大規模システムの課題を解決する • クラウドを武器に開発生産性を上げる 上記に興味がある方はぜひご応募ください!