弊社配信基盤を支えるHashiCorp OSS

弊社配信基盤を支えるHashiCorp OSS

2019年10月23日「Mitchell Hashimoto in Tokyo! HashiCorp Meetup」にて登壇
https://hashicorp.connpass.com/event/146776/

F4793241992daf0be6df122689881509?s=128

Masahito Yano

October 23, 2019
Tweet

Transcript

  1. 弊社配信基盤を支えるHashiCorp OSS 合同会社DMM.com EC&デジタルコンテンツ本部 動画配信事業部 配信基盤スクラムチーム プロダクトオーナー (@yanoshi)

  2. ようこそDMMへ! 2

  3. P E R S O N A L D A

    T A YANO MASAHITO 矢 野 完 人 2016年新卒入社 動画配信基盤開発 プロダクトオーナー ID: yanoshi 所属 合同会社DMM.com EC&デジタルコンテンツ本部 動画配信事業部 配信基盤スクラムチーム お仕事内容 弊社の動画を概ね配信する基盤開発 キャッシュアーキテクチャとか エンコードとかDRMとか 弊社の画像配信サーバーの基盤開発
  4. 本日の経緯 4

  5. 5 HashiCorp meet upで 登壇する人居ないかなぁ(ちらっ 古巣(CTO室)の上司

  6. 6 良いっすよ!(雑な返答)

  7. まさかの Michell Hashimotoさん の後 7

  8. もしかして: 20分枠、私だけ? 8

  9. 恐縮です(。>﹏<。) (ほんとに私で大丈夫なのかな?;) 9

  10. 改めて皆さん 「DMM」 をご存知でしょうか? 10

  11. 40以上のサービス 11

  12. 月間25億PV / 会員数2900万人 12

  13. もはや全容を把握できないけど 巨大なサービス! 13

  14. ということで… 14

  15. ということで… HashiCorpのプロダクトが 大活躍! 15

  16. 16 試しに検索結果数を 調べてみた

  17. 17 試しに検索結果数を 調べてみた 全部紹介していたら日が暮れる(遠い目)

  18. 18 動画配信基盤での活用例をご紹介

  19. 19 動画配信基盤での活用例をご紹介 What’s 動画配信基盤?

  20. DMM動画 FANZA動画 これらの動画を配信しています

  21. 21

  22. 22 WARNING 注意事項 2018年3月、 DMM.comの成人向け事業(現 FANZA)は 株式会社デジタルコマース社に継承されました。 ただし、システムの開発や運用、一部の営業業務 はデジタルコマース社からDMM.comに委託されて おり、プラットフォームはDMM.comが継続して

    提供することで合意しております。
  23. 23 WARNING 注意事項 2018年3月、 DMM.comの成人向け事業(現 FANZA)は 株式会社デジタルコマース社に継承されました。 ただし、システムの開発や運用、一部の営業業務 はデジタルコマース社からDMM.comに委託されて おり、プラットフォームはDMM.comが継続して

    提供することで合意しております。
  24. 24 WARNING 注意事項 2018年3月、 DMM.comの成人向け事業(現 FANZA)は 株式会社デジタルコマース社に継承されました。 ただし、システムの開発や運用、一部の営業業務 はデジタルコマース社からDMM.comに委託されて おり、プラットフォームはDMM.comが継続して

    提供することで合意しております。 みんな覚えて帰ってね!
  25. 弊社配信基盤を支えるHashiCorp OSS 合同会社DMM.com EC&デジタルコンテンツ本部 動画配信事業部 配信基盤スクラムチーム プロダクトオーナー (@yanoshi)

  26. 今日の目標 「HashiCorp、便利だねー」 ってみんなで言い合おう! 26

  27. 27 お品書き 再生URLを支えるConsul ライセンス認証を支えるPacker/Terraform 配信基盤を支えるConsul

  28. 28 お品書き 再生URLを支えるConsul ライセンス認証を支えるPacker/Terraform 配信基盤を支えるConsul

  29. 29 再生URLを支えるConsul https://speakerdeck.com/tinoji/dmmdong-hua-falseke-yong-xing-wozhi-eruconsul 弊チームの菊地さん(@_tinoji)が前回のmeetupで登壇

  30. 30 再生URLを支えるConsul https://speakerdeck.com/tinoji/dmmdong-hua-falseke-yong-xing-wozhi-eruconsul 弊チームの菊地さん(@_tinoji)が前回のmeetupで登壇 割愛

  31. 31 お品書き 再生URLを支えるConsul ライセンス認証を支えるPacker/Terraform 配信基盤を支えるConsul

  32. 32 ライセンス認証を支えるPacker/Terraform 「普段業務で動画を配信してるよ」って方

  33. 33 ライセンス認証を支えるPacker/Terraform 動画は常に「安全」に再生できないとダメ (by コンテンツホルダー)

  34. 34 ライセンス認証を支えるPacker/Terraform 動画は常に「安全」に再生できないとダメ (by コンテンツホルダー) そこでDRM!

  35. 35 DRMとは: コンテンツ保護の仕組み DRMとは? Digital Rights Management (デジタル著作権管理) 雑に言うと、コピーされない仕組み

  36. 36 DRMとは: コンテンツ保護の仕組み DRMとは? [デファクトスタンダード] Widevine (Google) FairPlay (Apple) PlayReady(Microsoft)

    Primetime DRM (Adobe) ハリウッドはこの辺を使わないと 配信許諾もらえない
  37. 37 DRMとは: コンテンツ保護の仕組み DRMの仕組み OS or Chrome 物理層 プレイヤー 動画

    HWデコーダ SWデコーダ HDCP 見れないぞ! 盗聴者
  38. 38 DRMとは: コンテンツ保護の仕組み DRMのコスト サブスクリプション(無料の場合も) + 自プラットフォーム以外への配信時に 従量課金される物が多い

  39. 39 DRMとは: コンテンツ保護の仕組み DRMのコスト マルチDRMで構築 プラットフォームに最適なDRMを選択 ↓ コスパ最高

  40. 40 ライセンス認証を支えるPacker/Terraform 近頃CMAF(Common Media Application Format) に対応しマルチDRMな基盤をAWS上に新設 DMM Player v2で利用

    随時展開中
  41. 41 各 サ ー ビ ス の 認 証 レ

    イ ヤ ー AWSでDRMコア ビジネスロジックを分離 mlic
  42. 各 サ ー ビ ス の 認 証 レ イ

    ヤ ー 42 構築は全てTerraformで mlic
  43. 各 サ ー ビ ス の 認 証 レ イ

    ヤ ー 43 構築は全てTerraformで 「便利だねー」 mlic
  44. 44 ライセンス認証を支えるPacker/Terraform あれ? コンテナで良くね? Packer要らなくね? てかECS+Fargateとか EKSでも良くね?

  45. 各 サ ー ビ ス の 認 証 レ イ

    ヤ ー 45 Windows Server!!! mlic
  46. 46 DRMとは: コンテンツ保護の仕組み DRMとは? [デファクトスタンダード] Widevine (Google) FairPlay (Apple) PlayReady(Microsoft)

    Primetime DRM (Adobe)
  47. 47 DRMとは: コンテンツ保護の仕組み DRMとは? [デファクトスタンダード] Widevine (Google) FairPlay (Apple) PlayReady(Microsoft)

    Primetime DRM (Adobe)
  48. 各 サ ー ビ ス の 認 証 レ イ

    ヤ ー 48 Fargate使えないしEKSも無理… Windows Server!!!
  49. 各 サ ー ビ ス の 認 証 レ イ

    ヤ ー 49 なのでPackerでイメージを作ってるよ! mlic Windows Server!!!
  50. 各 サ ー ビ ス の 認 証 レ イ

    ヤ ー 50 Packer、Windowsにも対応しててすごい! mlic Windows Server!!!
  51. 各 サ ー ビ ス の 認 証 レ イ

    ヤ ー 51 「便利だねー」 mlic Windows Server!!!
  52. 52 お品書き 再生URLを支えるConsul ライセンス認証を支えるPacker/Terraform 配信基盤を支えるConsul

  53. 改めて弊社動画事業の 規模感 53 規模感

  54. 配信基盤はほぼオンプレ! 54 規模感

  55. 圧倒的コンテンツ量 35万 件以上 55 規模感

  56. 圧倒的対応デバイス数 テレビ スマホ ゲーム 56 規模感

  57. 売上もいっぱい 57 規模感 これくらい

  58. ストレージもいっぱい! 58 増加 現状 10PB 1.2PB/年 規模感

  59. 負荷もいっぱい! 59 0 50 100 150 200 250 300 2013

    2014 2015 2016 2017 2018 対外トラフィック 2013 2014 2015 2016 2017 2018 197Gbps 215Gbps 259Gbps 121Gbps 103Gbps 280Gbps 規模感
  60. 60 配信基盤を支えるConsul 大量のオリジンサーバーを管理し 大量のトラフィックを捌かないと いけない!

  61. • なるべく高速な記憶装置キャッシュを貯める • キャッシュヒット率を高める 61 負荷分散に関する戦略 Simple is the best!!!

  62. 62 負荷分散に関する戦略 小 大 コンテンツ数 ユーザー数 キャッシュ オリジン 例1: コンテンツが少なくてユーザーが多い

  63. 63 負荷分散に関する戦略 コンテンツ数 ユーザー数 キャッシュ オリジン 例2: コンテンツが多くてユーザーが少ない 大 小

  64. 64 負荷分散に関する戦略 じゃあ弊社は?

  65. 65 負荷分散に関する戦略 コンテンツ数 ユーザー数 キャッシュ オリジン 弊社: コンテンツが多くてユーザーが多い 大 大

    コスパが悪い!
  66. 66 負荷分散に関する戦略 ということで コンテンツごとに 振り分けちゃおう

  67. 67 STキャッシュ STストレージ STオリジンWowza ユーザー 負荷 中 負荷 大 負荷

    最大 ContentID: hogefuga0001 負荷 小 現在のアーキテクチャ
  68. 68 STキャッシュ STストレージ STオリジンWowza 負荷 小 負荷 大 負荷 最大

    ユーザー ContentID: hogefuga0001 負荷 中 現在のアーキテクチャ
  69. 69 STキャッシュ STストレージ STオリジンWowza 負荷 小 負荷 最大 ユーザー ContentID:

    hogefuga0001 負荷 中 負荷 大 現在のアーキテクチャ
  70. 70 STキャッシュ STストレージ STオリジンWowza 負荷 小 ユーザー ContentID: hogefuga0001 負荷

    中 負荷 大 負荷 最大 CDN 色々と賢い! 現在のアーキテクチャ
  71. 71 どうやって実現? 現在のアーキテクチャ Wowzaで動的にストリーム生成 OpenRestyでキャッシュサーバー等にロジック Consulで各サーバーのノードマネージメント

  72. 72 どうやって実現? 現在のアーキテクチャ Wowzaで動的にストリーム生成 OpenRestyでキャッシュサーバー等にロジック Consulで各サーバーのノードマネージメ ント

  73. 73 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL
  74. 74 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL OpenRestyのShared Memoryにアクセス情報がたまる ContentA: 100reqs/sec ContentB: 1000reqs/sec ContentC: 0reqs/sec Node1 ContentA: 200reqs/sec ContentB: 1500reqs/sec ContentC: 1reqs/sec Node2 … Node3
  75. 75 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL 配信サーバーがManagerノードへデータを転送 ContentA: 100reqs/sec ContentB: 1000reqs/sec ContentC: 0reqs/sec Node1 ContentA: 200reqs/sec ContentB: 1500reqs/sec ContentC: 1reqs/sec Node2 … Node3 ContentA: 500reqs/sec ContentB: 10000reqs/sec ContentC: 2reqs/sec ⚡Consul Event ⚡
  76. 76 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL 定期に 収集
  77. 77 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL 負荷分散情報を各ノードが自発的に回収! ContentA: 500reqs/sec ContentB: 10000reqs/sec ContentC: 2reqs/sec ContentA: 普通 ContentB: ヤバい ContentC: 無風 ⚡Consul Event ⚡
  78. 78 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL 定期に 更新 ContentA: 普通 ContentB: ヤバい ContentC: 無風
  79. 79 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL 適宜 リダイレクト 持っているデータを元に 適宜リダイレクト ContentA: 普通 ContentB: ヤバい ContentC: 無風
  80. 80 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL いつも 快適
  81. 81 1 0: 1 0 P M Wowza OpenResty 負荷分散後の

    配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL 結果整合性が担保された 安全な配信基盤!
  82. 82 配信基盤を支えるConsul とっても賢い!!!!! とっても安定!!!!!

  83. 83 配信基盤を支えるConsul キャッシュヒット率が 30%程度から80%程度に!

  84. 84 配信基盤を支えるConsul 大幅にCDNコストカット 導入開始 キャンペーン キャンペーン 1/8程度 に!

  85. 85 配信基盤を支えるConsul やばいトラフィックが来ても大丈夫! DLは 急上昇 STは CDNへ 影響は 軽微!

  86. 86 配信基盤を支えるConsul ありがとうConsul!!!!

  87. 87 配信基盤を支えるConsul 「便利だねー」

  88. 88 お品書き 再生URLを支えるConsul ライセンス認証を支えるPacker/Terraform 配信基盤を支えるConsul

  89. 89 お品書き 再生URLを支えるConsul ライセンス認証を支えるPacker/Terraform 配信基盤を支えるConsul HashiCorpのプロダクト 便利だね!

  90. 90 宣伝 こんなHashiCorpプロダクトを 活用している弊社は 常に仲間を求めています! dmm-corp.com

  91. 91 おしまい dmm-corp.com 利用素材情報: "Twemoji" by Twitter, Inc and other

    contributors is licensed under CC-BY 4.0