Slide 1

Slide 1 text

DMMにおける 会員基盤プラットフォームへの AWS導入から活用事例の紹介 株式会社DMM.comラボ 岩崎 磨 / 飯田 涼太 / 西村 政輝 2017.6.2 AWS Summit Tokyo 2017 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 1

Slide 2

Slide 2 text

法務情報 • DMMは第三者の製品・サービスについて、特定の製造者やサービス 提供者につき、製品やサービスを評価するものではありません。 • 当社事例は、あくまで当社事案であり各社のシステム・サービス 要件等によって、機能、パフォーマンスその他の面で該当しない 場合があります。 • 本プレゼンテーションは当社構築したAWSシステムに関する技術者 の現時点での感想に基づいています。 • Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 2

Slide 3

Slide 3 text

3 発表者紹介 IT戦略本部 本部長 I ♥ Infrastructure. システム本部 チームリーダー I ♥ Kanazawa. システム本部 リードエンジニア I ♥ Scala. Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 4

Slide 4 text

• はじめに • DMMのクラウドへの取り組み状況 • 事例前半 • 会員基盤フロントエンド改修に合わせてAWS移行した話 • 事例後半 • 内製基盤アプリケーションのAWS移行における マネージドサービス活用例 4 アジェンダ Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 5

Slide 5 text

DMMのサービス紹介 5 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 6

Slide 6 text

DMMのクラウド利用状況 6 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 7

Slide 7 text

• 毎年前年度比率2倍強で利用リソース量増加 • ゲームでの活用から基盤への展開フェーズへ 7 DMMでのクラウド利用状況推移 EC2利用時間 2017年データは 5月時点での予測値 2014年 2015年 2016年 2017年 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 8

Slide 8 text

DMMクラウド推進の取り組み 8 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 9

Slide 9 text

大切にしていること ・スピード感 何かあっても作ってからごめんなさいするスタイル(DS方式) ・標準化ではなくリファレンス化 ルール(標準化)の押し付けでは活用は広がらない エンジニアが作った機能を横展開して皆の効率をあげていく軸 9 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 10

Slide 10 text

勉強会はたくさん開催 エンジニアはみんな勉強会大好き! 新社屋セミナースペースを活用してAWS勉強会を連日開催 10 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 11

Slide 11 text

開発者向けAWS自由利用環境の提供 DMMのエンジニア・デザイナーはAWS環境を私的利用でも自由に 利用できるようにしました。 名付けて ”AWS実弾演習場” • DMMの開発者1人ひとりにアカウントを発行しAWSサービスが好きなように 試せる環境を提供 • コストについては使いすぎ抑止のためにBillingAlertを設定 • 新機能のAWS Organizationsでアカウント作成、BillingAlert設定、権限剥奪 については集中的に運用 11 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 12

Slide 12 text

会員基盤フロントエンド改修に 合わせてAWS移行した話 事例紹介前半 DMM会員機能の一部のAWS移行について 2017.6.2 AWS Summit Tokyo 2017 12 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 13

Slide 13 text

背景としてオンプレ上で稼働する モノリシックなサービス基盤が存在。 急激な事業拡大による運用コスト肥大化が課題 もっと事業をリードできるスピード感を求めて マイクロサービス化を進めていく中で AWSを利用したら解決が捗りました! 13 事例の概要 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 14

Slide 14 text

●当時基盤の課題点 ●私たちの解決事例 ●まとめ 14 アジェンダ Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 15

Slide 15 text

当時の基盤の課題点 15 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 16

Slide 16 text

1. もっと運用をツール化できる 2. もっと検証精度を上げられる 3. 検証時間も短縮できる 16 当時の基盤の課題点 基盤として、まだ改善の余地が見込める Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 17

Slide 17 text

インシデントやイベント対応など 運用がツール化できておらず属人化しがち → 対応が後手に回り復旧時間が長期化 17 担当者 連絡 担当者 対応 障害 復旧 課題点の具体例1 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 18

Slide 18 text

サーバの維持管理を含めた費用対効果の観点から 検証環境と本番環境の構成が一部異なり → 検証環境では再現しない場合がある 検証環境 OK ユーザ環境 NG 開発環境 OK 18 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点の具体例2

Slide 19

Slide 19 text

モノリシックかつ複雑な基盤となっており 変更は小さくても、影響が小さいとは限らない → 常にじっくり時間をかける保守的な対応 19 Web Server Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点の具体例3

Slide 20

Slide 20 text

私たちの解決事例 20 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 21

Slide 21 text

virtual private cloud Availability Zone Availability Zone 21 課題点1: 復旧時間の短縮に向けて Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 22

Slide 22 text

22 Multi-AZでの Clustering Multi-AZの Auto Scaling Groupを設定 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点1: 復旧時間の短縮に向けて virtual private cloud Availability Zone Availability Zone

Slide 23

Slide 23 text

基本的に人の手を介さずに 設定に従った自動復旧を設定することで → Multi-AZ高可用性とAWSの マネージドサービスにより復旧までを時短化 23 担当者 連絡 担当者 対応 障害 復旧 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点1: 復旧時間の短縮に向けて

Slide 24

Slide 24 text

必要な時だけ、全く同じ構成の環境を用意 ユーザ用 検証用 24 課題点2: リリース前の検証精度向上に向けて Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 関係者ONLY

Slide 25

Slide 25 text

ユーザアクセスを 解放 25 検証が済んだらアクセスもリソースも解放 リソースを解放 ユーザ用 検証用 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点2: リリース前の検証精度向上に向けて

Slide 26

Slide 26 text

26 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点2: リリース前の検証精度向上に向けて

Slide 27

Slide 27 text

27 Ansible + Packerでベースとなる Amazon Machine Imageを 用途ごとに作成 構成をstackとしてテンプレ化し AWS CloudFormationで環境を量産 課題点2: リリース前の検証精度向上に向けて Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 28

Slide 28 text

クラウドのオンデマンドなリソースに AWS CloudFormationをかけ合わせることで サーバを遊ばせずに、いつも同じ状態で検証可 → 無駄もなく効率的に、事前検証精度を向上 28 検証環境 OK ユーザ環境 OK 開発環境 OK Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点2: リリース前の検証精度向上に向けて

Slide 29

Slide 29 text

29 Web Server Web Server LB Web Server Web Server マイクロサービスとして分離し、影響範囲を明確化 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点3: 検証時間の短縮に向けて

Slide 30

Slide 30 text

30 マネージドサービスを利用した 変更管理により漏れなく対応しつつ 新規に生成した環境でスピーディな検証が可能に Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点3: 検証時間の短縮に向けて

Slide 31

Slide 31 text

AWSを利用することでマイクロサービスとして 影響範囲を明確にするだけでなく その時々に応じた最適なリソースを スピーディかつ正確に構成して検証可能に 31 じっくり 検証 日時調整 対応 周知 実施 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 課題点3: 検証時間の短縮に向けて

Slide 32

Slide 32 text

まとめ 32 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 33

Slide 33 text

● マネージドサービスの活用 ○ Multi-AZの高可用性で障害を抑制 ○ 障害時の自動復旧で時短化 ● 潤沢なリソースとCloudFormationの利用 ○ 同一環境を無駄なく生成・破棄 ○ 検証精度を向上しつつ、時間も短縮 33 まとめ Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 34

Slide 34 text

内製基盤アプリケーションの AWS移植における マネージドサービス活用例 事例紹介後半 DMMの高ワークロードを支える API Gateway / OAuth2認可基盤 2017.6.2 AWS Summit Tokyo 2017 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。 35

Slide 35

Slide 35 text

• プロジェクト概要・構成図 • AWS移行で得られたもの • AWS移行で注意したところ • スケーリングと性能見積もり • サービスディスカバリ 35 アジェンダ Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 36

Slide 36 text

プロジェクト概要・構成図 36 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 37

Slide 37 text

オンプレミスで製造・構築した内製 DMM API GatewayをAWSへ移行するプロジェクト • 最重要なのは、耐障害性 • DMM.comのプラットフォーム基盤の窓口となるシステム • 障害発生時の影響範囲が大きい • APIの窓口としての安定性と低いレイテンシも必要 • オンプレミス側との通信にAWS Direct Connectも導入する 37 プロジェクト概要 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 38

Slide 38 text

今回のAWS移行対象 38 オンプレ時の構成図 LB (L4) LB (L4) … … 内製 DMM API Gateway / OAuth2 認可基盤 (Akka Streams and HTTP製) Backend API servers ・モバイル端末 ・提携先システム etc. www.dmm.com / co.jp 他サブドメインなど (数千リクエスト毎秒) ® Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 39

Slide 39 text

39 AWS移行後の構成図 ap-northeast-1a AWS Direct Connect ap-northeast-1c DMM.com データセンター nginx⇒ ALB HashiCorp Valut ⇒ EC2 Systems Manager パラメータストア MySQL⇒ RDS Aurora ECSクラスタ Redis® Sentinel ⇒ ElastiCache (Redis® Cluster) ・モバイル端末 ・提携先システム etc.. EC2 Systems Mamager Parameter Store Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 40

Slide 40 text

40 ECSタスクと関連するコンポーネント Amazon Kinesis Firehose Amazon S3 Amazon ECS Application Load Balancer ログ収集 APIコール(HTTP) アプリケーション タスク構成 APIコール(HTTPS) ● アプリケーション本体のコンテナ ○ HTTP/HTTPSはALBと連携 ● Agent類はSidecarパターンで用意 ○ Datadog Agent ■ アプリケーション監視 ■ メトリクス収集 ○ fluentd ■ with fluentd-kinesis-plugin ■ Kinesis Firehose ⇒ S3へログ収集 メトリクス 収集 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 41

Slide 41 text

AWS移行で得られたもの 41 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 42

Slide 42 text

1. 堅牢なインフラ環境の入手 • 複数データセンター級の冗長性(Multi-AZ) • インスタンス・プロセス障害時のオートヒーリング 2. ミドルウェア運用からの解放 • 手段:フルマネージドサービスの活用 • ALB+ACM、ECS、RDS、ElastiCache、Kinesis Firehose 42 AWS移行で得られたもの EC2 Systems Manager パラメータストア ↑採用例少ないと思うので次で紹介します! (他はありふれてるサービスのため省略) Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 43

Slide 43 text

•アプリケーション用のシークレット値の取得・格納 •管理コンソールや、AWS CLI、AWS SDKを用いての操作 43 EC2パラメータストアでできたこと AWS KMSと連携し、 シークレット値を 暗号化できた。 ここ! ※ 設定のイメージ例 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 44

Slide 44 text

シークレット値管理のミドルウェア運用等が省力化できた! 44 EC2パラメータストアで嬉しかったこと 省力化対象 before (当社オンプレミス) after (AWS) ミドルウェア運用 HashiCorp Vault (HA構成) HashiCorp Consul (クラスタ構成) nginx 不要 (フルマネージド) SSL証明書管理 必要 ACL設計 HashiCorp Vault固有のACL AWS IAMに統合 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 45

Slide 45 text

AWS移行で注意したところ 45 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 46

Slide 46 text

1. 動的なスケーリングを前提としたElasticな構成 • AWS移行後は、インスタンス利用料が従量課金 ⇒ 節約のためのスケーリングを行うことにした 2. 動的なネットワーク割当への対応 • (例)アプリの設定変更をオートスケール対象全台にプッシュしたい ⇒ AWSのサービスディスカバリ機能の活用で対応 • 内部DNS • AWS CLI/SDK 46 クラウド環境利用における注意点 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 47

Slide 47 text

懸念 • Redis® (Master-Slave構成) のレプリケーション遅延 • 局面:DMM API Gatewayへの連続リクエスト • 例: (Write) 認可要求 → (Read) API利用時の認可判定 対策 • ElastiCache Redis® Clusterを採用した上で、 Redis® Clusterへの参照・更新をプライマリノードのみに限定 • 実質的なMulti-Master構成として活用 • メリット:レプリケーション遅延の考慮が不要 • 負荷対策:Redis® Clusterのシャーディングで分散 47 ElastiCacheのレプリケーション遅延対策 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 48

Slide 48 text

スケーリングと性能見積もり 48 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 49

Slide 49 text

49 オートスケーリング 戦略 DMMのサービスの特 性として、オートスケー ルはスケジュールベース を基本として問題ない。 主要商材がエンターテ イメントということもあ り、ピークタイムが夜間 で不変であるため。 オフピークの負荷は リザーブドインスタンス購入で節約 赤4時間分と黄8時間分は オンデマンドインスタンスで スケールする 出典:DMM 2017 x軸単位:時:分(十の位) y軸単位:秒間リクエスト回数 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 50

Slide 50 text

• スケールアウト時の注意点 • 主としてスケジュールベース、副として負荷ベースを採用 • 懸念:負荷ベースではインスタンス起動やウォームアップが後追い • イベント等のスケーリングだけ個別対応 • スケールイン時の注意点 • ECSはドレイニング後のEC2インスタンスを自動でターミネート してくれない・・・ • 現状(2017.6.2現在)、Lambda等で仕組みの構築が必要! • 補足:オートスケールインはDMMの場合早朝時間帯 → ※社員就寝中・・ .zzZ 50 オートスケール設定で注意したこと Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 51

Slide 51 text

51 ベンチマーク概要 コンポーネント インスタンスサイズ 台数 ECS c4.xlarge (4vCPU/8GB) 4,8,12台で それぞれ確認 RDS (Aurora MySQL) db.r3.xlarge (4vCPU/30.5GB) 4台 (M1・RR3) ElastiCache (Redis® Cluster 3シャード) cache.r3.large (2vCPU/13.5GB) 6台 (M3・RR3) 観点 • リクエスト数ごとのレスポンスタイムはどの程度か • インスタンスのスケーリングに応じてキャパシティもスケールするか 条件 • 下記インスタンスでの秒間1〜10,000リクエスト時のレスポンスタイム Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 52

Slide 52 text

DMM API Gateway (OAuth2認可検証&ルーティング) 52 ベンチマーク構成図 ap-northeast-1a ap-northeast-1c HTTPS HTTP HTTP TLS終端処理 HTTP APIスタブ (ping-pong) 負荷試験 クライアント DMM API Gatewayを中心に負荷試験クライアントとAPIスタブを用意 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 53

Slide 53 text

53 ベンチマーク結果(ECS 4台) ※ タイムアウト10秒 毎秒4,500リクエストが安定限界だったがオフピークはこれで十分そう ※見えにくいですが 大体16ミリ秒くらいです (ms) Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 54

Slide 54 text

54 ベンチマーク結果(ECS 8台) 参考:ECS 4台 毎秒6,500リクエストまで良好な成績 & 毎秒1万リクエストにも対応 (ms) Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 55

Slide 55 text

55 ベンチマーク結果(ECS 12台) 毎秒1万リクエストにも余裕の対応 明らかにオーバースペック (ms) 参考:ECS 4台 参考:ECS 8台 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 56

Slide 56 text

56 ベンチマーク結果(ECS 12台 percenitile値) ※ 外れ値を除外し 95パーセンタイル値まで掲載 AZ間の通信が頻繁に発生した場合でも19ミリ秒程度のレスポンスタイム Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 57

Slide 57 text

サービスディスカバリ 57 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 58

Slide 58 text

ap-northeast-1a ap-northeast-1c 58 LambdaベースでECSのディスカバリを実現 ・・・ API Gateway 管理者 ② しかし、ECS上の DMM API Gatewayは オートスケールする。 IPアドレスとportが 動的に変わっていく。 ・・・ ※管理サイト (新規作成) ③ 解決策の一つとして、ECS上の 配置情報をAWS SDKで取得し、 DMM API GatewayのIPとportを 管理サイトへ通知するLambdaを作成。 Lambdaの実行トリガーには ECSイベントストリームが利用できた。 ① ユースケースとして、 APIルーティング追加や OAuthスコープ追加など、 管理サイトからECS上の DMM API Gateway全台に 更新をBroadcastしたい。 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 59

Slide 59 text

最後に 59 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 60

Slide 60 text

AWS環境への移行で嬉しかったこと •マネージドで高可用なシステムが従来より簡単に構築できた! •高ワークロードなシステムの構築も問題なかった! AWS環境の使いこなしで気を付けたこと •インスタンスの利用料はオートスケールの活用で節約 •サービスディスカバリはSDK等の活用で利用者側が作成 60 まとめ Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。

Slide 61

Slide 61 text

ご清聴ありがとうございました 本日のプレゼンテーションはDMMで構築したAWSシステムに関する技術者の現時点(2017.6.2)での感想に基づいています。 DMMは第三者の製品・サービスについて、特定の製造者やサービス提供者につき、製品やサービスを評価するものではありません。 DMMは第三者の製品・サービスについて、何らかの保証を提供するものではありません。 Copyright © 2017 DMM.com Co., Ltd. All Rights Reserved. 無断複製・転載を禁じます。