【レポート】担当者だったら心をかなり強く持つ必要がある…世界最大規模のECサイト移行ミッション!Amazon.com におけるデータベース移行事例 #AWSSummit

2020.09.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ご機嫌いかがでしょうか、豊崎です。2020年9月8日から30日まで開催されるAWS Summit Onlineを自宅から拝聴しています。

本記事で取りあげるセッションは、「Amazon.com におけるデータベース移行事例」です。

セッション情報

スピーカー

アマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ソリューションアーキテクト 北澤 英崇

概要

Amazon.com では、オンプレミスで稼働していたシステムを AWS へ移行しました。この移行では、これまで利用していた商用データベースから Aurora with PostgreSQL Compatibility などの AWS データベースへの移行を実施しています。本セッションでは、このデータベース移行をどのように実現したか、移行プロジェクトを推進するにあたって実際に行ったチャレンジ、データベース戦略についてお話ししたいと思います。

レポート

Amazon.comのレガシーデータベース基盤

当初(1995年)のAmazon.comは以下のようなUIサイトでした。

  • 見た目はシンプルですが、バックエンドのアーキテクチャは当時最も革新的なシステムの一つだった
    • WEBアプリケーションサーバからの注文
    • 注文データをOracleDBに格納
    • 商品が発送後、トランザクション完了前に銀行とお客様のクレジットカード会社の支払い処理を実行

  • しかしビジネスが大きくなり、より多くの注文が発生すると様々な様々な問題が発生する
    • 中心となるDBがダウンしたら
      • オンライン注文に影響が出るだけではない
      • 注文済み商品の発送や支払い処理も停止していた
  • モノリシックから複数のへ分割
    • 注文サービスやクレジットカード決済サービスなどサービスごとに分割したアーキテクチャへ
    • 各サービスごとに拡張が可能
    • SOAの考えを実装

  • しかしRDBのスケーラビリティ部分に課題は残った
    • キャパシティオーバーに対しては垂直なスケールで対策
    • スケールアップにはダウンタイムが発生する
    • また垂直スケールにはハードウェア限界がある

  • スケールアウトによる負荷分散を検討
    • データベース シャーディングで対応
    • データベースはキャパシティオーバーになるとデータを分割配置することで分散をはかる
    • どのデータがどのデータベースに格納されているかはシャードトラッカーで管理
    • データはシャードキーによって格納されるデータベースが決まります。
    • アプリはシャードトラッカーで処理したいデータがどのデータベースにあるか判断して適切なデータベースに接続する
    • データモデルや基盤となるデータベースアーキテクチャを変更することなくシステム全体の処理量が増加

  • Amazonのビジネスがさらに拡大
    • データベース及びデータ量が膨大に
    • 2017年時点で
      • データベース数:7000
      • 総データ量:70PB
      • 世界中で数百万の受発注、決済、処理
      • 分析対象データ
        • データ量:50PB
        • テーブル数:75000

データベースを移行した理由

  • 決断に至った課題
    • スケーリングの問題
      • プライムデーなどの大規模イベントの拡張作業に60週間もかかるチームがあった
      • ベンダーからのサポートを受けていてもスケール時の障害リスクが高かった
      • 夏のプライムデー、冬のブラックフライデー&サイバーマンデーで年2回のピークが発生
        • スケーラビリティは重要な課題に
    • レイテンシー問題
      • Amazon,comにとってレイテンシーの改善は非常に重要なファクター
      • データ量、ユーザ数が増えていく中で改善をするためには2-4倍の改善が必要だった
      • データは70PBかつ指数関数的に成長
        • 運用管理のコストが膨大
    • ハードウェア、ソフトウェアに関する問題
      • システム規模が大きくなるにつれてコストが過剰にかかっていた
      • ハードウェアについては納品設置までのタイムラグ
        • 納品タイミングとビジネス的に必要な時期を合わせることが困難
      • ソフトウェアについてはベンダー側のライセンス変更によってコストが上がってしまう
    • 拡張性、可用性と運用のリスク
      • スケールアップとスケールダウンの両方が必要だった
        • ピークイベントに伴う必要キャパシティの山がくる
        • それ以外についてはスケールダウンを求められた
      • データに関する一貫性
        • Amazon.comの規模では非常に難しい問題
  • これらの問題によってAmazon.comはクラウドを決断する

移行戦略と学んだ教訓

  • Amazon.comはOracleを停止して約7500のデータベースの移行が完了したことを2019/10に発表
  • 移行元のOracleはRDBだが移行先は目的別に作られたデータベースをコンセプトとした
    • 適材適所のデータベースを利用する
    • より高いパフォーマンス、可用性が求められる場合はDynamoDB
    • DWH用途の場合は、Redshift
    • RDBを使う場合でもAmazon AuroraやAmazon RDS

データベースの移行

  • AWS Database Migration Serviceや、AWS Schema Conversion Toolを活用
  • AWS DMSはデータベースのデータを移行するためのサービス
    • OracleからPostgreSQLなど異なるデータベースエンジン間での移行が可能
  • AWS SCTは異なるデータベース間でのテーブル定義、スキーマ、ストアドプロシージャを変換

具体的な移行戦略

#1:可視性の向上
  • データベースの全体像が把握できていなかった
    • データベースのメタデータを取得し、接続ログを分析し関連性を可視化
    • また新たなデータベースや移行完了したデータベースの情報も付与
    • それにより移行のオーナーの明確化、影響範囲、移行進捗状況が可視化された
  • テーブルの使用状況やスキーマに関する詳細情報が必要となった
    • CRUD(Create/Read/Update/Delete)の情報収集を開始
    • マテリアライズドビューによる相関が追跡可能に
  • アプリケーションが利用しているテーブルの可視化
    • Java ClassのWrapperを作成してAppが実行するSQLを分析
    • AppのSQLレベルで収集分析することで可視化が可能に
  • 可視化によって綿密な移行計画の実行が可能になった

#2:経営陣からのサポートを加速
  • 当初経営陣が移行計画の状況を把握できていなかった
    • 複数のダッシュボードを作成
    • データベース移行の進捗を可視化したグラフ
    • 進捗を把握し説明責任を果たすためのレポート体制

#3:社内のOracleDBAからの支援を得る
  • 当初OracleDBAからの反発があった
    • 反発の原因は移行に対する疑念や恐れ
    • 実際の技術的課題とは違った
    • FUD:Fear Uncertainly Doubt(恐れ、不確実性、疑念)
  • 移行によるメリットを考える
  • OracleDBAへのキャリアパスとトレーニング機会を提供
    • DB移行スペシャリスト
    • データベースエンジニア
    • システム開発エンジニア
    • ソリューションアーキテクト
    • AWS認定資格者
    • などなど

#4:移行エンジニアの増強
  • 各チームのDB移行のプロフェッショナルを作ろうと考えていた
    • 当初、プロフェッショナルの育成がうまくいかなかった
    • 情報のシェアをすることで育成が加速
      • 定期的な勉強会
      • リファレンスアーキテクチャ
      • ベストプラクティス
      • デザインパターン
      • Tipsのシェア
      • など

デザインパターンの例
  • OracleからAuroraへ移行する際の段階的な移行を想定したリファレンスアーキテクチャ
  • 以下例ではオンプレミスにOracleがありAWS DMSを使用してAmazon Aurora PostgreSQLへデータ移行している
  • 移行データについては継続的に検証する

  • 左側のアプリケーションは2つに分かれている
    • 1つは移行前のOracleDBに対するサービスコール
    • もう1つは移行済みのDBに対するサービスコール
  • DBはスキーマ単位で移行を行うなど、全体が移行完了していない場合も想定
    • APIを複数用意し段階的にアプリケーションを移行する

  • 移行先に予期しない問題が発生した際のOracleへの切り戻しも検討する
  • 切り戻しを想定し、Aurora PostgreSQLからRDS OracleへAWS DMSでデータを複製
  • 予期しない問題で切り戻しが必要な場合でも、オンプレではなくAWS上での切り戻しが行える

移行の効果

  • 約7500のデータベースをOracleからAuroraもしくはRDSに移行
  • 303以上のビジネスクリティカルなサービスをDynamoDBに移行
    • 商用のデータベースからの脱却し、ビジネス観点でのデータベースの選択が可能に
  • 運用管理コストの削減
    • 40-90%削減
  • レイテンシーの改善とイノベーションを実現
    • 処理量が2-4倍になるもレイテンシーは40%削減
  • プライムデーの様なイベント時のシステム拡張作業個数鵜の削減
    • 1/10に削減

Amazon.com 事例コンテンツは以下からご参照いただけます。

感想

クラウドへの移行を検討した時に多くのシステムではデータ移行について検討を行う必要が出てきます。巨大ECサイトであるAmazon.comの移行での成功例、大変参考になりました。