pandazx's blog

データ分析など雑多な技術ブログ

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による計測システムの裏側と今後の展開について

指原 卓也, ZOZOテクノロジー

初代ZOZOSUITE計測システムの構成

問題1:Lambdaのコールドスタート問題

  • 安定的なリクエストがあればLambdaコンテナが再利用されるが、 まったくリクエストがない時間が続いてからリクエストがあると コンテナ作成から処理が行われるので時間がかかってしまう

問題2:GDPR

  • EUのデータを扱うために、アイルランドリージョンに移行した
    • (日本からのレイテンシがより高くなるのでは?)
    • (グローバルで1つのシステムにする理由がいまいちわからなかった)

問題3:商品サイズ管理の組合せが柔軟がゆえに膨大になる

  • 商品の仕様変更もあるので、スキーマレスのDynamoDBで管理

レコメンド/検索の大規模展開に関する課題と解決策

藤井 亮太, DMM.com, @r_megane

レコメンドの種類は167種類

ABテスト用ダッシュボードを作成。

  • 1本/月だったのが、5本/2週間に高速化

課題

  • Solrのver 4を8にアップグレード
  • しかし、多くのサービスにSolrが利用されているため、無停止アップグレードが困難
  • 検索ライブラリからSearchAPI→Solrにして検索リクエストをSearchAPIに集約
  • 巨大なプログラムファイルがあり、リファクタリングが困難。。。
  • ログベーステストを実施
    • ユーザからのリクエスト時に実行されるメソッド、引数、変数などをログに出力し、 それをHadoopでテストケースを自動生成 (類似テストを絞り込む実用的に使えるテストケースが出来るの?)
    • これにより、仕様不明でもテストケースを作成できる
    • 2人で4か月でリファクタリングを完了
    • (無停止アップグレードをどうやったかの説明がなかった。残念)

ZOZOTOWN HTTPS化におけるSREチームのアプローチ

横田 工, ZOZOテクノロジー

Forward Secrecy(ECDHE)

  • クライアントとサーバ間で使い捨ての共通鍵を利用してセキュリティ向上

SSL Labs

  • 自社サイトのSSL状況を評価してくれるサイト
  • B判定だった
  • 対策
    • RSA -> ECDHEに変更
    • 不要なciphersなどを精査

過去のシステム構成

  • LBがHTTPSの複合処理を担当
  • FW兼LBの役割が多く、アクセス増の場合に負荷が懸念されていた
  • 使っている機器でECDHEに変更するとカタログスペックよりも、大幅に低い性能が出てしまう問題があった

変更後のシステム構成

  • WAFがHTTPSの複合処理を担当
  • 複合後にL7のFWを通している
  • SSL Labsの判定がA判定になった

アクセス数、WAFの検知率など実際の運用負荷に近い状態を 1/Nの規模で再現して負荷テストを実施

DMMの不正対策システムと運用サイクル

寺西 一平, DMM.com

本日の不正の対象

  • アカウント乗っ取り、
  • 不正種別の割合として、アカウントの乗っ取りが70%
  • 対策することで、乗っ取りを50%以上防止できた

対策の施行1

  • 過去の購入時と、その時のIPアドレス、ブラウザ情報に変化があったら 不正と判断したが、正当判定率が2%と全然ダメだった
  • なぜ?
    • ネットカフェからのアクセス
    • 様々なWi-Fiスポットからのアクセス
    • VPN利用
    • ブラウザのプラベートブラウズ
    • 上記は不正ユーザばかりで、正規ユーザを見れていなかった

対策の施行2

  • 確実に本人の購入である操作を検出
  • 不正ユーザの特徴を含む購買の検出
    • 日本語のページに台湾からロシア語でアクセス
  • 正当安定率13%まで改善

しかし、対策を行うと不正ユーザも対策を行うので、いたちごっこになる

  • 不正ユーザ検出パターンを追加する体制を整え、毎週追加/削除を実施
  • 昨年11月から360パターンが追加された

伝えたいこと

  • 不正被害の継続的モニタリング
  • 不正の分類をすべき。乗っ取り、クレカ不正利用など
  • 横連携が大事
    • 守りが一番薄いところが狙われるので、システム、サービス全体で連携することが必要
    • 1社では難しいことがあるので、会社横断で連携したい

ZOZOTOWN Azure SQL Database 節約術

鶴見 純一, 杉山 弘二, ZOZOテクノロジー

宣伝:コーデ相談をリリース

  • 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%のコスト削減を実現