DMM x ZOZOを支える基盤技術のメモ
DMM x ZOZOを支える基盤技術 https://dmm.connpass.com/event/129128/
参加者数:200
DMMを支えるプラットフォーム基盤の裏側
ユーザーの回遊・リテンションを最大化するサイクルとは? 石垣 雅人, DMM.com, @i35_267
資料:https://speakerdeck.com/i35_267/dmmwozhi-erupuratutohuomuji-pan-falseli-ce
複数サービスを支えるアカウント管理、決済といった共通機能を基盤として提供。
ユーザに複数サービスを回遊してもらいたい。
送客のリコメンド技術で数%向上しただけでも、売り上げに大きく貢献できる。
ZOZOSUITEによる計測システムの裏側と今後の展開について
初代ZOZOSUITE計測システムの構成
- プライベートブランドを世界展開したかったので、 AWSバージニアリージョンにシステムを構築した。 日本からはレイテンシが高いが、全体を考慮した上で決定した
問題1:Lambdaのコールドスタート問題
問題2:GDPR
問題3:商品サイズ管理の組合せが柔軟がゆえに膨大になる
- 商品の仕様変更もあるので、スキーマレスのDynamoDBで管理
レコメンド/検索の大規模展開に関する課題と解決策
藤井 亮太, DMM.com, @r_megane
レコメンドの種類は167種類
ABテスト用ダッシュボードを作成。
- 1本/月だったのが、5本/2週間に高速化
課題
- Solrのver 4を8にアップグレード
- しかし、多くのサービスにSolrが利用されているため、無停止アップグレードが困難
- 検索ライブラリからSearchAPI→Solrにして検索リクエストをSearchAPIに集約
- 巨大なプログラムファイルがあり、リファクタリングが困難。。。
- ログベーステストを実施
ZOZOTOWN HTTPS化におけるSREチームのアプローチ
Forward Secrecy(ECDHE)
- クライアントとサーバ間で使い捨ての共通鍵を利用してセキュリティ向上
SSL Labs
過去のシステム構成
- LBがHTTPSの複合処理を担当
- FW兼LBの役割が多く、アクセス増の場合に負荷が懸念されていた
- 使っている機器でECDHEに変更するとカタログスペックよりも、大幅に低い性能が出てしまう問題があった
変更後のシステム構成
アクセス数、WAFの検知率など実際の運用負荷に近い状態を 1/Nの規模で再現して負荷テストを実施
DMMの不正対策システムと運用サイクル
寺西 一平, DMM.com
本日の不正の対象
- アカウント乗っ取り、
- 不正種別の割合として、アカウントの乗っ取りが70%
- 対策することで、乗っ取りを50%以上防止できた
対策の施行1
- 過去の購入時と、その時のIPアドレス、ブラウザ情報に変化があったら 不正と判断したが、正当判定率が2%と全然ダメだった
- なぜ?
対策の施行2
- 確実に本人の購入である操作を検出
- 不正ユーザの特徴を含む購買の検出
- 日本語のページに台湾からロシア語でアクセス
- 正当安定率13%まで改善
しかし、対策を行うと不正ユーザも対策を行うので、いたちごっこになる
- 不正ユーザ検出パターンを追加する体制を整え、毎週追加/削除を実施
- 昨年11月から360パターンが追加された
伝えたいこと
- 不正被害の継続的モニタリング
- 不正の分類をすべき。乗っ取り、クレカ不正利用など
- 横連携が大事
- 守りが一番薄いところが狙われるので、システム、サービス全体で連携することが必要
- 1社では難しいことがあるので、会社横断で連携したい
ZOZOTOWN Azure SQL Database 節約術
宣伝:コーデ相談をリリース
- Amazon Alexaを使ってコーディネートをAIに相談できる
オンプレでDBをセールの時だけスケールアップさせるのがツライ
- 参照系DBをAzureに移行。しかし、費用が高い。。。
コスト低減の施策
- SQL Database オートスケール
- アクセス負荷が時間帯によって変わるので、それに応じてインスタンスタイプを変更
- これをAzure Automationで自動化
- ただし、スケール変更に30分以上かかる
- スケール変更時に10秒程度の切断がある
- スケールダウン時に必要なデータがメモリに乗らなくなる可能性がある
- SQL Database Read scale-out
- いわゆる、DBのマスタスレーブ構成
- Secondary Read Replicaのメトリクス取得が困難で、工夫が必要
上記課題に対してカスタムメトリクスを収集できるようにして、Datadogを利用
k8sのCronJobで定期ジョブスケジューラでメトリクス収集を実行
- メリット
- 実行用コンテナが毎回、作成・破棄されるので、実行環境にゴミがたまらない
- 環境設定の変更が容易なため、1種類のジョブを複数の環境に対して実行しやすい
- Nodeの空きスペースを考慮して実行してくれるため、リソース不足になりにくい
Datadog
- アラートをSlackに通知
- 高アラートはPagerDutyでオンコール
メトリクス収集を行っているk8sシステムの監視はDatadogで行っている
- Datadogにはk8s integrationがある
上記の施策の結果、当初から70%のコスト削減を実現