Slide 1

Slide 1 text

Page.1 ©IPG inc. All Rights Reserved. 株式会社IPG 開発部 TPMチーム兼ITチーム チームリーダー ⽊村徹 AWS DMSを活⽤した異種データベース間の 継続的レプリケーション

Slide 2

Slide 2 text

Page.2 ©IPG inc. All Rights Reserved. CHAPTER 0 / ⾃⼰紹介 ⽊村 徹 Toru Kimura • 株式会社IPG • 2006年からIPGに参画 • Technical Program Manager • 番組情報基幹システム(minds)および機械学習 プロジェクトの開発チームリーダー • ⾮エンジニア

Slide 3

Slide 3 text

Page.3 ©IPG inc. All Rights Reserved. CHAPTER 0 / アジェンダ AGENDA 1. IPGについて 2. AWS DMSを選んだ理由 3. AWS DMSを使ってみる 4. AWS DMSを導⼊する 5. まとめ 6. 今後の改善 ※ AWS Database Migration Service 以降資料上では、AWS DMS、DMSと略させて頂きます。

Slide 4

Slide 4 text

Page.4 ©IPG inc. All Rights Reserved. CHAPTER 1 IPGについて

Slide 5

Slide 5 text

Page.5 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて Gガイド受信機(TV/レコーダー/セットトップBOX) 放送型Gガイド AD シンジケーテッドGガイド メーカー スマホ/タブレット向け対応アプリ 3キャリア標準プリイン 通信型Gガイド 株式会社IPG 設⽴:1999年4⽉22⽇ 主要株主:電通、TiVo Corporation、東京ニュース通信社 電⼦番組表(EPG)サービス「Gガイド」のサービス企画、開発、運⽤

Slide 6

Slide 6 text

Page.6 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて ⾒る・聴く・楽しむコンテンツと⼈々との最適な コミュニケーションを担うインフラになる

Slide 7

Slide 7 text

Page.7 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて mindsの仕組み minds ウェブ モバイル テレビ コンテンツ 全国放送局 番組情報

Slide 8

Slide 8 text

Page.8 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて mindsで取り扱うデータ 番組情報 250,000 番組/⽇ 放送局 200 局 1,000 ch プラットフォーマー 10 社 バッチプログラム 40 本 オペレーションUI 10 本 APIサービス 40 本 テレビ 56,000,000 台 モバイル 2,000,000 MAU ウェブサービス 140,000,000 PV

Slide 9

Slide 9 text

Page.9 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて minds構成図 • データベースエンジンには、Oracleを 採⽤ • システム連携、ユーザ⼊⼒など、⼊り 組んだ構成となっている • オンプレの構成そのままAWS化

Slide 10

Slide 10 text

Page.10 ©IPG inc. All Rights Reserved. CHAPTER 1 / IPGについて 1. システムが密結合となっていて変更に対 する影響範囲が⼤きい 2. 社内にOracleに精通しているエンジニア が少ない 現状の課題

Slide 11

Slide 11 text

Page.11 ©IPG inc. All Rights Reserved. CHAPTER 2 AWS DMSを選んだ理由

Slide 12

Slide 12 text

Page.12 ©IPG inc. All Rights Reserved. CHAPTER 2 / AWS DMSを選んだ理由 1. トライ&エラーのできる新たな環境 2. Oracleからの脱却 3. 既存のシステムは、安定的に維持 要件の整理

Slide 13

Slide 13 text

Page.13 ©IPG inc. All Rights Reserved. • 同種のデータベース間での移⾏ • データベースの異種間移⾏ • 開発とテスト • データベースの統合 • 継続的なデータレプリケーション DMSとの出会い DMS活⽤にあたってのポイント CHAPTER 2 / AWS DMSを選んだ理由

Slide 14

Slide 14 text

Page.14 ©IPG inc. All Rights Reserved. CHAPTER 3 AWS DMSを使ってみる

Slide 15

Slide 15 text

Page.15 ©IPG inc. All Rights Reserved. • AWS Summitへの参加 • ソリューションアーキテクトへの構成相談 • ハンズオンの活⽤ • AWS Cloud Formation を使って環境を⾃動⽣成 • AWS Schema Conversion Tool(SCT)を使ったスキーマ変換 • DMSのセットアップと実⾏ Ø AWS アカウントを持っていれば1時間程度で習得可能 DMSの理解を深める AWSイベントの活⽤ CHAPTER 3 / AWS DMSを使ってみる

Slide 16

Slide 16 text

Page.16 ©IPG inc. All Rights Reserved. CHAPTER 3 / AWS DMSを使ってみる ターゲットデータベースを決める AWS Schema Conversion Toolによる検証 • Oracle からの移⾏先として、 機能互換性の観点から⼀般的には PostgreSQL が選ばれるケースが 多い • ⼀⽅で、社内でよく利⽤していた デー タベースエンジン は、MySQL • 移⾏対象の Oracle データベースを AWS Schema Conversion Tool (SCT) でチェック • それぞれのエンジンの互換性を確認

Slide 17

Slide 17 text

Page.17 ©IPG inc. All Rights Reserved. ステージングシステムで試してみたところ、以下の問題が顕在化しました。 A) フルロード時にソースデータベース(Oracle) の負荷が上がること で業務影響が発⽣ B) フルロードが、10時間を経過しても終わらない CHAPTER 3 / AWS DMSを使ってみる 実際に試す ステージング環境を使って、DMSを実施

Slide 18

Slide 18 text

Page.18 ©IPG inc. All Rights Reserved. CHAPTER 3 / AWS DMSを使ってみる A) フルロード時にソースデータベース(Oracle) の負荷が上がることで業務影 響が発⽣ Ø 原因として、ソースデータベースの Read Throughput が上がったことで、 Network 帯域の上限に達し影響を及ぼしたことが判明 B) フルロードが、10時間を経過しても終わらない Ø 原因としては、以下の3点が影響していることが判明 I. テーブルマッピングを明⽰的に指定しなかったため、テンポラリのテーブルなども⾃動 で作成されターゲットテーブルでエラーになっていた II. AWS SCTで⾃動作成されるスキーマは、外部キーやインデックスが設定されたままのた め、フルロードの⻑時間化を引き起こしていた III. ターゲットデータベースのインスタンスサイズが、⼩さかったため書き込みにかかる処 理速度に影響を与えた

Slide 19

Slide 19 text

Page.19 ©IPG inc. All Rights Reserved. ステージングで問題が顕在化したことで、改めて以下整理の上、導⼊構成の検討 1. 既存の Oracle 環境は、システム停⽌や構成変更が容易には⾏えないため、Oracle 環境 には最低限の影響で実⾏ができる必要がある 2. フルロードの時間が短くすることは、障害復旧におけるRTO(Recovery Time Objective)を短くし、サービスレベルを向上させる 3. インフラは、ダブルコストになる。新しい環境は、できる限り最低限のインフラ構成 でランニングコストを抑える CHAPTER 3 / AWS DMSを使ってみる DMS導⼊にあたって 問題の整理

Slide 20

Slide 20 text

Page.20 ©IPG inc. All Rights Reserved. CHAPTER 4 AWS DMSを導⼊する

Slide 21

Slide 21 text

Page.21 ©IPG inc. All Rights Reserved. 1. 移⾏テーブルの明⽰化 2. ターゲットデータベースでの外部キーとインデック スの調整 3. ソース/レプリケーション/ターゲットのそれぞれの インスタンスサイズの調整 CHAPTER 4 / AWS DMSを導⼊する DMS導⼊にあたって アクションの決定

Slide 22

Slide 22 text

Page.22 ©IPG inc. All Rights Reserved. データ量調整 所要時間 無し 12 時間 有り 7 時間 CHAPTER 4 / AWS DMSを導⼊する アクション.1 移⾏テーブルの明⽰化 • ソースデータベースのデータ量としては、約 500 テーブル/ 約 15 億 ⾏のデー タが存在 • サービス利⽤に必要なテーブルを選別することで、約 160 テーブル/ 約 3.5 億 ⾏ に削減 • 移⾏タスクに設定する Mapping rule で、すべてのテーブルに対してルールを 作成し、各テーブルの “rule-action” に "include"(移⾏する) or "exclude" (移⾏しない) を明⽰的に設定 データ調整有/無時のフルロード時間

Slide 23

Slide 23 text

Page.23 ©IPG inc. All Rights Reserved. 実⾏⽅法 所要時間 インデックスを付けたままのフルロード 12時間 実⾏⽅法 所要時間 インデックスをすべて外してフルロード 5 時間 インデックスをすべてに付与(8プロセス並列) 13 時間 CHAPTER 4 / AWS DMSを導⼊する アクション.2 ターゲットデータベースでの外部キーとインデックスの調整 • フルロード時間を約半分以下に削減したが、フルロード後に外部キー制約及びイ ンデックスを付け直すための時間に、フルロードにかかる時間以上にかかった • 1テーブルあたりの⾏数が少ないケースでは有⽤かもしれない。 • 今回は外部キー制約及びインデックスを付けたままフルロードを実施

Slide 24

Slide 24 text

Page.24 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する アクション.3 ソース/レプリケーション/ターゲットのそれぞれの インスタンスサイズの調整 • フルロード時は、⼤きなインスタンスサイズでフルロードにか かる時間を短縮 • 差分適⽤であるCDC(Change Data Capture)では、必要最⼩ 限のインスタンスサイズで構成 ※ ただし、本番 Oracle環境のインスタンスの停⽌も構成変更もできない

Slide 25

Slide 25 text

Page.25 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ① フルロード専⽤インスタンスの⽴ち上げ ② フルロード専⽤インスタンスからフルロード ③ インスタンスサイズの変更 ④ CDCタスクの実⾏

Slide 26

Slide 26 text

Page.26 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ① 本番 Oracle から Snapshot を取得して フルロード専⽤ Oracleインスタンスと して復元 ü Snapshotの作成時刻を記録する(コンソールから確認) ü 復元したフルロード専⽤ Oracleインスタンスは、既存業務系に接続しない ü フルロード専⽤ oracleインスタンスのインスタンスサイズは⼤きなサイズ で復元する

Slide 27

Slide 27 text

Page.27 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ② フルロード専⽤ Oracle インスタンスをソースデータベースとしてフル ロードタスクを実⾏ ü レプリケーション/ターゲットデータベースインスタンスのインス タンスサイズは⼤きなサイズを選択する ü タスク設定の移⾏タイプ(Migration type)は、既存のデータを 移⾏する(Migrate existing data)を指定する

Slide 28

Slide 28 text

Page.28 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ③ フルロード完了後、インスタンスサイズの変更 ü フルロード専⽤ Oracle インスタンスは削除 ü レプリケーション/ターゲットデータベースインスタンスの インスタンスサイズをスケールダウン

Slide 29

Slide 29 text

Page.29 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する ④ 本番 Oracle をソースデータベースとして、CDCタスクを実⾏ ü ①で取得したSnapshot作成時刻から、SCN(System Change Number)を割り出す ü CDC開始モード(CDC Start mode)に、ログシーケンス番号の指定 (Specify log sequence number)を選択し、 SCN をセットする ex) SELECT timestamp_to_scn(to_timestamp('16/04/2019 13:46:51','DD/MM/YYYY HH24:MI:SS')) as scn from dual; SCN ------------ 12345678

Slide 30

Slide 30 text

Page.30 ©IPG inc. All Rights Reserved. インスタンス サイズ 所要時間 ソースデータベース: レプリケーションインスタンス: ターゲットデータベース: large large large 7時間36分 ソースデータベース: レプリケーションインスタンス: ターゲットデータベース: 2xlarge 2xlarge 2xlarge 2時間30分 ソースデータベース: レプリケーションインスタンス: ターゲットデータベース: 4xlarge 4xlarge 4xlarge 1時間46分 CHAPTER 4 / AWS DMSを導⼊する 各インスタンスサイズとフルロード時間

Slide 31

Slide 31 text

Page.31 ©IPG inc. All Rights Reserved. CHAPTER 4 / AWS DMSを導⼊する 継続的に運⾏する トラブルに強くするには? l ソースデータベース • REDOログのサイズ調整 • オンラインREDOログ ※ REDOログサイズの調整⽅法はこちら • アーカイブログ ※ アーカイブログ期間の調整⽅法はこちら l 監視メトリクス • DMSタスクログのエラー監視 • CDCレイテンシーソース • CDCレイテンシーターゲット • DMSタスクの稼働状態 l マルチAZ • 通常運⾏時は、ソース/レプリケーション/ターゲットを同ゾーンで運⾏ ex) aws dms describe-replication-tasks --filters "Name=replication-task-arn,Values=${taskarn}" --query "ReplicationTasks[0].{Status: Status}" { "Status": "running" }

Slide 32

Slide 32 text

Page.32 ©IPG inc. All Rights Reserved. CHAPTER 5 まとめ

Slide 33

Slide 33 text

Page.33 ©IPG inc. All Rights Reserved. ü 既存環境にフルロード時の負荷を与えない。 ü フルロード時に、インスタンスのリソースを多く取り、フル ロードタスクを短い時間で実⾏することで、RTOを短くする ü CDC時には、最低限のインスタンスサイズに変更することで、 ランニングコストを最⼩限に抑える CHAPTER 5 / まとめ まとめ

Slide 34

Slide 34 text

Page.34 ©IPG inc. All Rights Reserved. CHAPTER 5 / まとめ minds構成図

Slide 35

Slide 35 text

Page.35 ©IPG inc. All Rights Reserved. CHAPTER 6 改善に向けて

Slide 36

Slide 36 text

Page.36 ©IPG inc. All Rights Reserved. u CDCのスタートポイントが曖昧 Ø CDC の開始位置は SCN で指定することが可能です。 現状は Oracle データベースの Snapshot を取得したタイミングの SCN を特定することができません。 そのため、Snapshot の取得時間から、 SCN を特定しているのですが、 秒オーダーの精度なので、そのタイミングでの発⽣した更新の状態が 不定になり、データの消失やデータ重複が発⽣し得ます。 CHAPTER 6 / 今後の改善 改善ポイント

Slide 37

Slide 37 text

Page.37 ©IPG inc. All Rights Reserved. 募集職種 機械学習.アプリ.インフラ. etc… わたしたちが求める⼈材 • ⽣涯エンジニアを希望している⼈。 • 何事も「変化すること」を前提に、変化を受け⼊れ、柔 軟に物事を進める事ができる⼈。 • 常に新しい技術分野にチャレンジし、良い物はチームや 世間に広げたい⼈。 • ユーザーファーストで物事を思考している⼈。 • チームワークを⼤事にしている⼈。 • 効率化のために何でも⾃動化したくなる⼈。 気軽にオフィスに遊びに来てください! ご連絡はこちら(https://ipg.co.jp/recruit/)まで IPGでは、エンジニアを募集しています

Slide 38

Slide 38 text

Page.38 ©IPG inc. All Rights Reserved.