メディア向けデータストアサービスを
リリースして直面したツラミ
〜X-Tech後日談〜
Future Corporation Yasuhiro Murata
JAWS DAYS 2019 2019/02/23
Self Introduction
村田 靖拓(むらた やすひろ)
l 2014/10 新卒でFutureへ入社
l Technology Innovation Group所属
l フロントエンド畑育ち(OSS - Urushi)
l AWSを利用したビッグデータ処理基盤構築(モビリティIoT, IIoT)
l DynamoDB, Elasticsearchを使ったデータストアサービス構築
l 最近はGCPを使ったIoTプラットフォーム構築
l 趣味はテニスとドラム 運動量増やしたいのでボルダリングを検討中
l 五反田で飲み歩くマン おすすめ店のストックは13軒あります。日本酒寄りです。
l JAWS-UG登壇2回目です!お世話になっておりますmm
@famipapamart
Future とは ??
Futureとは??
コンサルからSIまでこなす会社です
• B to Bでシステムを提案・構築しています
• OSSの制作・公開もしています(有名なのは脆弱性スキャンツールのVuls)
本日のメイントピック
• データストアサービスとは?~X-Techのふり返り~
• DynamoDBのツラミ
• Amazon ESのツラミ
本日のトピックから外したもの
• 各種AWSサービスの概要レベルの話(Capacity Unitとは等々)
• 機能面の話(本日の内容は非機能に寄ってます)
もくじ
• データストアサービスの要件
• システムアーキテクチャの話
• Cross Region Replicationの話
• Capacity Unitとスロットリングの話
• データ再インデクシングの話
• まとめ
データストアサービスの要件
データストアサービスの要件
あらゆるコンテンツを格納、すばやく検索できること
• あらゆるメディア形式に対応すること
• コンテンツは記事・写真・動画など様々な種類がある
• 格納したコンテンツ群から欲しいものをすばやく取得できること
• 大量の過去記事を参考に新しい記事を書くことは日常茶飯事
システムアーキテクチャの話
システムアーキテクチャの話(1/2)
gRPC
Client
東京リージョン
シンガポールリージョン
Replication
Program
gRPC
Server
サービスの概要構成図
NLB
DynamoDB
Amazon ES
DynamoDB
システムアーキテクチャの話(2/2)
今回採用したアーキテクチャ
• DynamoDB
• KVSとして採用
• ひとつのキーに紐付き柔軟にデータを格納
• キーアクセスですばやく対象データにアクセス
• CUの許す限り応答性能は一定
• Amazon Elasticsearch Service
• DynamoDBが不得意とする検索を一手に担う
• 全文検索要件を踏まえElasticsearchを採択
• マネージド利用の方針から自前構築ではなくAmazon ES
Cross Region Replicationの話
Cross Region Replicationの話(1/5)
平常時のDR構成図
gRPC
Client
東京リージョン
シンガポールリージョン
Replication
Program
gRPC
Server
NLB
DynamoDB
Amazon ES
DynamoDB
Cross Region Replicationの話(2/5)
gRPC
Client
東京リージョン
gRPC
Server
切り戻し時のDR構成図
Replication
Program
シンガポールリージョン
Copy data
via S3
Cross Region Replicationの話(3/5)
切り戻しの考え方
• 東京リージョン壊滅を想定
• 実際は「DynamoDBだけダウン」等が起こりうる現実的なラインだろうが、Disasterパターンごとに復
旧シナリオを考えるのはなかなかキツい
• 切り戻しもDynamoDBを起点にリージョン間のデータ同期をとる方式でGO
• Cross-Region-Replication ホントウニアリガトウ
• でも...東京リージョンにはGlo(ry
• Global Tableは利用せず、awslabsのdynamodb-cross-region-libraryを利用
• ただし同期開始前のデータの移送には考慮が必要(※)
• Live Stream data はDynamoDB Streams経由でCross-Region-Replicate
• Existing dataはDynamoDB Streamsのキューが失効する24時間以内になにかしらの方式でコピーして
おく必要がある
• Live Stream dataのキューを半永続化することでExisting dataの移送時間制約はなくなった
再掲 with 追記
Cross Region Replicationの話(4/5)
Global Tableは使いませんでした
• サービス制約と切り戻し時の想定シナリオが合致しなかった
• Global Tableを設定する2つ以上のテーブルはそれぞれのデータ件数が0でなければならない
• DR発動時はメイン側は空っぽ(or障害により少なくとも再作成)・DR側はデータありの状態となり、そ
こからGlobal Tableを作成することができない
東京リージョン
シンガポールリージョン
両方
データ0件
障害発生!!
シンガポール側は
データn件
Cross Region Replicationの話(5/5)
(おまけ)Data Pipelineはとても優秀な子でした
• DynamoDBのexport/import機能がとても便利
• 調査等で多量データを一括取得したくなった際都度厄介になってくるのがCU
• プログラム側でうまく意識してあげないとすぐスロットリング発生
• Data PipelineはCU使用率を設定するとその範囲内で稼働してくれるのでうれしい
• とはいえ今はOn DemandなCU設定があるのでそちらを使えばスロットリングの悩みはなくなるはず
export import
Capacity Unitとスロットリングの話
Capacity Unitとスロットリングの話(1/2)
お客様の業務にはスパイクがつきもの
• 世間でイベントごとがあればデータ流量は一気に増える
• 政界の動き(衆議院総選挙)
• スポーツ界の動き(有名選手の活躍、オリンピック)
• 他にも日常にはニュースが様々
Capacity Unitとスロットリングの話(2/2)
お客様の業務にはスパイクがつきもの
• スロットリングを発生させないためのチューニングが大切
• 直近5分の未使用CUを使ってもなお足りない場合はスロットリングとなる
• CU Auto scalingの発動がスパイクに追いつかないケースが多々
• Auto scalingのしきい値を下げることで問題を解消
• デフォルト70%からどれくらい下げるか、を探っていく
しきい値40%の波形 しきい値70%の波形
データ再インデクシングの話
データ再インデクシングの話(1/4)
Amazon ESはindexのclose/openができない
• Mappingの変更は可能
• テーブル定義の変更等あっても項目追加で対応できればオンライン変更が可能
• SettingはDynamicとStaticの2種類存在する
• Dynamic
• Search logのしきい値など
• Static
• Analyzer定義など
• Dynamicなものはオンラインで変更できる
• Staticなものはオンラインで変更できない
• Indexのclose/openを行うことで変更可能なものも存在する
• Analyzer定義はその一つ
データ再インデクシングの話(2/4)
Analyzer定義の変更 → データ再インデクシング
• 本番稼働後の追加要件でanalyzer定義の変更が必要になり、データ再インデクシン
グに踏み切った
• ↓↓のような手順で実施
index
①既存indexの
snapshotを取得
②Snapshotから別名
でリストア
③既存indexを削除 ④定義変更後の
indexを新規作成
⑤再インデクシング
index
restored restored restored
new
restored
new
データ再インデクシングの話(3/4)
Analyzer定義の変更 → データ再インデクシング
• 実績値
• 約30万件(1件約50k, トータル14.5G)相当のデータを再インデクシング
• ②のリストアは1分程度
• ⑤の再インデクシングは10分程度
index
①既存indexの
snapshotを取得
②Snapshotから別名
でリストア
③既存indexを削除 ④定義変更後の
indexを新規作成
⑤再インデクシング
index
restored restored restored
new
restored
new
データ再インデクシングの話(4/4)
再インデクシングやってみて
• できればもうやりたくないw(結構ヒヤヒヤしました)
• ある程度のメンテ時間を確保できた & データ量がそこまで多くなかった というの
もあり無事に実施することができた
• Staticなsettingについては稼働前までにしっかり固めておく
まとめ
まとめ
• アーキテクチャ
• DynamoDBとAmazon ESが各々の弱いところを補完しあってくれた
• マネージドサービスを使うことで、制約もあったが運用面でのメリットをしっかり享受できた
• Cross Region Replication
• Global Tableは使えなかったけど、awslabsのライブラリにすごく助けられた
• CUとスロットリング
• Auto scaling使う場合は、しきい値をチューニングすること
• データ再インデクシング
• できればもうやりたくない笑
• Staticなsettingについてはしっかり固めておくのが吉
We are hiring !!!
We are hiring !!! ~面白い仕事がたくさんあるよ~
Future、こんな仕事やってます!
• 大手メディア企業様向けの新基幹システム開発
• AWS!
• DynamoDBやAmazon ESなどマネージドサービスを活用
• GoでAPI開発
• モビリティIoTプラットフォーム開発
• AWS!
• Glueを用いたETL処理
• AIで画像解析したり、音声認識も取り組んでいます
• 最近はGCP案件も増えてきています
We are hiring !!! ~興味を持った方はぜひ!~
どこに応募していいか
分からない
ポジションマッチング(複数のコンサルタント職種に興味のある方向け)
やりたいことが明確 テクノロジースペシャリスト、ITコンサルタントなど
第2新卒の採用も始めました!!
We are hiring !!! ~会社紹介イベントもやってます~
開催
2019年 2月23日(土曜日)13:30~(受付13:15)
※16:00終了予定
会場 本社 アートヴィレッジ大崎セントラルタワー(受付14階)
プログラム
1.フューチャーアーキテクトのご紹介
2.先輩社員によるコンサルタントの働き方
具体的な仕事(プロジェクト)の中身
3.コンサルタントとの座談会
オフィス見学したい!!も大歓迎
[DynamoDB][AmazonES]メディア向けデータストアサービスをリリースして直面したツラミ ~X-Tech後日談~

[DynamoDB][AmazonES]メディア向けデータストアサービスをリリースして直面したツラミ ~X-Tech後日談~