Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

ようこそDMMへ! 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

本日の経緯 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

まさかの Michell Hashimotoさん の後 7

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

40以上のサービス 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

ということで… 14

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

21

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

36 DRMとは: コンテンツ保護の仕組み DRMとは? [デファクトスタンダード] Widevine (Google) FairPlay (Apple) PlayReady(Microsoft) Primetime DRM (Adobe) ハリウッドはこの辺を使わないと 配信許諾もらえない

Slide 37

Slide 37 text

37 DRMとは: コンテンツ保護の仕組み DRMの仕組み OS or Chrome 物理層 プレイヤー 動画 HWデコーダ SWデコーダ HDCP 見れないぞ! 盗聴者

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

各 サ ー ビ ス の 認 証 レ イ ヤ ー 43 構築は全てTerraformで 「便利だねー」 mlic

Slide 44

Slide 44 text

44 ライセンス認証を支えるPacker/Terraform あれ? コンテナで良くね? Packer要らなくね? てかECS+Fargateとか EKSでも良くね?

Slide 45

Slide 45 text

各 サ ー ビ ス の 認 証 レ イ ヤ ー 45 Windows Server!!! mlic

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

各 サ ー ビ ス の 認 証 レ イ ヤ ー 51 「便利だねー」 mlic Windows Server!!!

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

負荷もいっぱい! 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 規模感

Slide 60

Slide 60 text

60 配信基盤を支えるConsul 大量のオリジンサーバーを管理し 大量のトラフィックを捌かないと いけない!

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

70 STキャッシュ STストレージ STオリジンWowza 負荷 小 ユーザー ContentID: hogefuga0001 負荷 中 負荷 大 負荷 最大 CDN 色々と賢い! 現在のアーキテクチャ

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

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

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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 ⚡

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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 ⚡

Slide 78

Slide 78 text

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: 無風

Slide 79

Slide 79 text

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: 無風

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

81 1 0: 1 0 P M Wowza OpenResty 負荷分散後の 配信URL Storage Proxy Cache OpenResty Origin Device Redirector st-api VODST Manager CDN 配信URL 結果整合性が担保された 安全な配信基盤!

Slide 82

Slide 82 text

82 配信基盤を支えるConsul とっても賢い!!!!! とっても安定!!!!!

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

91 おしまい dmm-corp.com 利用素材情報: "Twemoji" by Twitter, Inc and other contributors is licensed under CC-BY 4.0