amazon aurora移行 · cluster endpoint, reader endpoint ......

38
Amazon Aurora移行 ~ マガシークの変 ~ 2017/7/5 システム開発本部 システム開発部 藤本

Upload: others

Post on 09-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

Amazon Aurora移行 ~ マガシークの変 ~

2017/7/5 システム開発本部 システム開発部

藤本 忠

Page 2: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

自己紹介

1

氏名:藤本 忠(ふじもと ただし)

所属:システム開発本部 システム開発部

社歴:2012年4月 ~

担当:サーバ、ネットワークの設計・構築・運用保守

サイトリニューアル、データセンター移行などを経験

関心:クラウド全般、IoT、データ分析基盤

趣味:テニス、錦織圭

Page 3: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

マガシークについて

2

主力4事業

MAGASEEK

事業

OUTLET事業

dfashion

事業

ECソリューション事業

事業内容 インターネットを活用した婦人服・紳士服

などの販売

設立 2003年4月1日

従業員数 150名(2017年3月31日現在)

男女比4:6

売上高 181億円(2017年3月期)

事業所

本社/東京都千代田区三番町3-8

泉館三番町ビル3F

magaco/神奈川県座間市広野台2丁目10-8

プロロジスパーク座間2 3F ※magacoとは当社物流センターの愛称

取扱い

ブランド数 約2000ブランド

Page 4: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

マガシーク事業

3

メンズからレディス、ドメスティックから

インポートブランドまで幅広い商材を揃え、

独自のレコメンドシステムで使えば使うほ

どお客様の好みに合った商品を提案する

「自分のためのセレクトショップ」をコン

セプトにした総合ファッションECサイトを

運営しています。

http://www.magaseek.com/

Page 5: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

アウトレットピーク事業

4

メンズからレディスまで人気ブランドの旬

の商品を24時間365日オフプライスで手に

入れることができる国内最大級のアウトレ

ットファッションECサイトを運営していま

す。

良質な商品をリーズナブルに提供するとい

うコンセプトのもと、商品のセレクトから

配送まで高いクオリティのサービスを提供

しています。

http://www.outletpeak.com/

Page 6: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

d fashion事業

5

NTTドコモが運営する「d マーケット」内

のファッション通販サイト。マガシークと

ドコモの共同運営で、ドコモポイントが使

えたり商品代金を月々の携帯電話料金と一

緒にお支払いいただけたりと、「d fashion」

ならではの利便性が特長です。ドコモだけ

でなく、各社スマートフォン・タブレット・

PCからのアクセスが可能となり、ますます

便利にご利用いただけます。

http://fashion.dmkt-sp.jp/

Page 7: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

ECソリューション事業

6

アパレルメーカーや百貨店のオフィシャル

ECサイト運営業務を受託するサービスを展

開しています。当社が蓄積してきたEC運営

のノウハウ、インフラを最大限活用しサイ

トの構築から運営・プロモーションまで、

トータルなワンストップサービスを行って

います。

Page 8: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

本日のプログラム

7

移行理由 移行概要

ゴール設定

接続アーキテクチャ

運用フェーズ

DMSによるデータ移行

トラブル事例

最後に

開発フェーズ

移行フェーズ

Page 9: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

本日のプログラム

8

移行理由 移行概要

ゴール設定

接続アーキテクチャ

運用フェーズ

DMSによるデータ移行

トラブル事例

最後に

開発フェーズ

移行フェーズ

Page 10: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

移行理由

9

事業要因

年2回のセールがアクセスのピーク

セール期はアプリサーバをクラウドでスケール

システム全体のスケーラビリティを確保したい

今のオンプレ環境では限界

Page 11: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

移行理由

10

システム要因

ハードウェア、ソフトウェア老朽化

システムのレガシー化

スピード感ださないと

変えられない

Page 12: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

移行理由

11

外部要因

2015年10月 東京リージョンで

Amazon Aurora利用可能に

今やるしかない

Page 13: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

RDBはOracle RACから

Amazon Aurora

ゴール設定

12

システム全体をオンプレ環境から

クラウド環境

外部連携インタフェースにより移行できない一部環境は除く

Page 14: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

RDBはOracle RACから

Amazon Aurora

ゴール設定(結果)

13

システム全体をオンプレ環境から

クラウド環境

外部連携インタフェースにより移行できない一部環境は除く

Page 15: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

本日のプログラム

14

移行理由 移行概要

ゴール設定

接続アーキテクチャ

運用フェーズ

DMSによるデータ移行

トラブル事例

最後に

開発フェーズ

移行フェーズ

Page 16: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

15

接続アーキテクチャ

背景

弊社のPHP基盤に、

MariaDB Connector/Javaドライバーのような

Amazon Auroraのフェイルオーバーに対応できる

機能なし

Page 17: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

16

接続アーキテクチャ

要件

● Auroraのフェイルオーバーに即時反応

● レプリカのスケール管理が容易

● 利用システムごとにレプリカノードを分別

● read-write splitの実現

Page 18: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

17

接続アーキテクチャ

検討案

● DBロードバランサの導入

● Cluster Endpoint, Reader Endpointの利用

● アプリケーション独自基盤で実装

Page 19: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

18

read-write split機能に期待したが、

マスタとレプリカの振り分けが

意図した挙動にならなかった

DBロードバランサの導入

Page 20: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

Cluster Endpoint

フェイルオーバー時30秒程度の

書き込み不能時間が発生

19

Cluster Endpoint, Reader Endpointの利用

Page 21: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

Reader Endpoint

レプリカ全体のラウンドロビンな為、

目的や利用システムに応じた

振り分け制御ができない

20

Cluster Endpoint, Reader Endpointの利用

Page 22: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

21

MariaDB Connector/Javaドライバ

アーキテクチャを参考

独自基盤で開発

要件どおりの制御やオプションを実現

アプリケーション独自基盤で実装

Page 23: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

システム管理者 バックエンドシステム フロントエンドシステム

22

接続アーキテクチャ

構成イメージ

Instance Endpoint

RDS DB

instance

RDS DB

instance read

replica

RDS DB

instance read

replica

RDS DB

instance read

replica

RDS DB

instance read

replica

Instance Endpoint Instance Endpoint Instance Endpoint Instance Endpoint

Amazon

EC2 Amazon

EC2

Amazon

EC2 Amazon

EC2

Amazon

EC2

RDS DB

instance read

replica

Instance Endpoint

Page 24: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

本日のプログラム

23

移行理由 移行概要

ゴール設定

接続アーキテクチャ

運用フェーズ

DMSによるデータ移行

トラブル事例

最後に

開発フェーズ

移行フェーズ

Page 25: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

DMSによるデータ移行

24

データ移行環境

Magaseek data center

AWS Direct

Connect

DMSレプリケーション

インスタンス

Target

Endpoint

Source

Endpoint

Amazon

Aurora

Master

Oracle RAC

DMSレプリケーション

タスク

Amazon

Aurora

Replica

Page 26: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

25

DMSレプリケーションタスクの分割

● 基幹システム全体に影響するデータ移行

DMSによるデータ移行

サービス

停止

(オンプレ)

データ

コンバート

サービス

切替

(AWS)

DMSレプリケーションタスク(一括移行->差分移行)

差分移行期間:約1週間

プレ移行

移行当日

Page 27: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

26

DMSレプリケーションタスクの分割

● 個別系システムのデータ移行

DMSによるデータ移行

サービス

切替

(AWS)

DMSレプリケーションタスク(一括移行->差分移行)

差分移行期間:約1週間

プレ移行

移行当日

Page 28: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

27

こんなこともやりました

DMSによるデータ移行

サービス

停止

(オンプレ)

データ

コンバート

サービス

切替

(AWS)

DMSレプリケーションタスク(一括移行->差分移行)

差分移行期間:約1週間

プレ移行

移行当日

サービス

切替

(AWS) レプリカのみ使用、ラグが許容されるサービスを事前切替

Page 29: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

本日のプログラム

28

移行理由 移行概要

ゴール設定

接続アーキテクチャ

運用フェーズ

DMSによるデータ移行

トラブル事例

最後に

開発フェーズ

移行フェーズ

Page 30: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

運用開始直後から

29

● デッドロックの発生

● ロックタイムアウトが頻発

トラブル事例

Page 31: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

●原因

DELETE処理やSELECT FOR UPDATE処理における

ロック範囲が不適切で競合が発生

MySQL(InnoDB)独自のロック機構

●対応

- インデックス追加、SQLチューニング

- 一時表の利用

30

トラブル事例(原因と対応)

Page 32: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

本日のプログラム

31

移行理由 移行概要

ゴール設定

接続アーキテクチャ

運用フェーズ

DMSによるデータ移行

トラブル事例

最後に

開発フェーズ

移行フェーズ

Page 33: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

32

最後に

Amazon Auroraの性能

● Eコマースサイトのレスポンスが向上

- マルチAZにもかかわらず、約100~200ミリ秒の向上

● バッチ処理の性能が大幅に向上

- 全体的に約3倍のパフォーマンス向上

Page 34: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

AWSのサービスを組みあわせることで

33

最後に

検証やリハーサルが簡単に

実施可能

Amazon

RDS AWS DMS AWS Direct

Connect

× ×

Page 35: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

34

最後に

別のワークに集中できる

アプリーション

移行

タスク

マネジメント

問題解決

Page 36: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

35

最後に

移行当日タスクのPERT図

Page 37: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

×

36

最後に

サーバレス IoT

データ分析

基盤

人工知能 DevOps

マイクロサービス

アプリケーション

改善

Page 38: Amazon Aurora移行 · Cluster Endpoint, Reader Endpoint ... MySQL(InnoDB)独自のロック機構 対応 - インデックス追加、SQLチューニング - 一時表の利用

http://www.magaseek.com

ご清聴ありがとうございました

只今、エンジニアも募集中です!!

http://www.magaseek.co.jp/recruit/

https://en-gage.net/magaseek/

37