Upgrade to Pro — share decks privately, control downloads, hide ads and more …

3日間で使い捨て!イベント用有料ライブ配信サービスの構築

Kazuki Miura
December 14, 2019

 3日間で使い捨て!イベント用有料ライブ配信サービスの構築

『Talk Abstract』
社内でゴーサインが出てから、サービス公開までわずか1ヶ月。内製でのwebサービスの構築は今回が初めてでした。 「やらない事をいかに増やすか」を念頭に考え、無駄を排除していったら結果的にサーバレス アーキテクチャになっていました。awsのフルマネージドサービスであるMedia Servicesを中心に、フロントエンドはNuxt.jsによるSPAで構築しました。認証はAuth0, 決済はStripe, 動画プレイヤーはTHEO PlayerなどSaaSとの連携をLambdaで実現し、手間を減らしていきました。 初内製案件という事で、技術的な壁より社内政治の壁の方が大変でしたのでその話も。

『Talk Description』
[アーキテクチャ]
・NTT東日本のCloudGatewayを用いてDirect conncet
・MediaLiveのVPC inputから映像入力
・MediaPackageでNEXTSCAPEさんのMulti DRM Kitで映像を暗号化
・MediaPackageをCloudFrontを接続して、THEO Playerで再生
・プレイヤー再生時にLambdaからDRM認証をかけている(widevine/playready/Fairplay Streaming)
・Nuxt.jsのページにTHEO Playerを埋め込んだものをS3に配置
・S3 + CloudFront + Route53 + ACM でhttps://ドメインで公開

[SaaS連携]
・決済サービスはStirpe
・Elementsを採用。フォームのデザインを合わせたかった
・認証サービスはAuth0
・Lockを採用。ログインはSNSの4種類のみ(FB,TW,LINE,Google) -Ruleで作成したuser_metadataにらStripeの購入情報を保持
・この時の処理もLambdaから各種APIを叩いている
・購入状態に合わせて画面制御をするためにフロントからAuth0のAPIを叩く。
・これがsafariでだけ動かなかったので、Lambdaで叩くことに。
・上限が怖かったのでここだけGCPのCloud Funtionを用意

[結果]
・無事に開発も終わり、黒字で終了することができました。

Kazuki Miura

December 14, 2019
Tweet

More Decks by Kazuki Miura

Other Decks in Technology

Transcript

  1. ࡾӜҰथ  130'*-& ळాग़਎݉ۀ೶Ո ถ  ౦ژͷେֶ ػց ΁ ৽ଔͰࡳຈ)5#

    ์ૹ༗ਓ؂ࢹ αʔόిݯ෺ཧอक σʔλ์ૹͳͲ ୲౰ ৽نϚωλΠζ ๺ւಓςϨϏ์ૹ
  2. ݄ Ր ਫ ໦ ۚ ౔ ೔   

        ٳ ٳ        ٳ  ॕ       ٳ  ॕ       ٳ        ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ௐࠪɾυΩϡϝϯτಡΜͰ৮ͬͯΈΔ ࣮૷ɾ୯ମςετ ࣮૷ɾ݁߹ςετ ࣾ಺εςʔδϯάςετɾमਖ਼ νΣοΫ νΣοΫ νΣοΫ όοΫΞοϓߏங 4$)&%6-&
  3. )5# %JSFDU$POOFDU .FEJB-JWF .FEJB1BDLBHF $MPVE'SPOU 71$ 6TFST &WFOUTJUF KTPO 9.-

    PDUFUTUSFBN $MPVE'SPOU 4 -BNCEB "1*(BUFXBZ &MFNFOUT 3PVUF "$. 4FDSFUT .BOBHFS 'JFMEQJDLVQWBO -PDL %3.4BB4 1BZNFOUT4BB4 *%4BB4 $*$% 3FQPTJUPSZ %FWFMPQFST 1SPKFDU .BOBHFNFOU 2"$POTVMUBOU .BOBHFS 4BGBSJ༻ "SDIJUFDUVSF
  4. 3&26*3&.&/5 ˔ Πϕϯτ͸̏೔ؒ ˔ ༗ྉ഑৴ ˔ ഑৴͸̍೔ʙ෼ ˔ ҧ๏μ΢ϯϩʔυରࡦඞਢ ˔

    ಉ࣌ࢹௌ̍ສਓΛ૝ఆ ˔ ౰೔ͷ໰͍߹ΘͤରԠ·Ͱ΍Δ  ꆃ 㕼 傈  Ꟛ㜥⳿䏄ـ٦أꟚ䏄 ىصٓ؎ـװ⳿䏄13ة؎يזו ⼯⵸⚥ַ׵嚂׃ְ؎كٝز׾׋ֻׁ׿׀欽䠐׃גת ׅԒ  ً؎ٝ؎كٝز儎ך鿇 ؔ٦فصؚٝإٌٖص٦⳿怴罏ز٦ؙءّ٦ չ痥㔐וֲדى٦颣պ涪邌խקַ  ؜أز،٦ذ؍أز-*7&ىص⟰歗갫♶ず 넝堀峔㶨 랲葿ׅ׫׸ $IJNB 〢愮ⶌ OPOPD 䩧껷柰Ꟍず㥨⠓ /03% ،ؙٕٔ؝٦ٕ %&1"1&1& ˟儗꟦כ✮㹀דׅկ鿪さח״׶㢌刿ׅ׷㜥さָ֮׶תֿׅ ה✮׭׀✪䪫ֻ׌ְׁկ  ꆃ 㕼 傈  Ꟛ㜥⳿䏄ـ٦أꟚ䏄 ىصٓ؎ـװ⳿䏄13ة؎يזו ⼯⵸⚥ַ׵嚂׃ְ؎كٝز׾׋ֻׁ׿׀欽䠐׃גת ׅԒ  ً؎ٝ؎كٝز儎ך鿇 ؔ٦فصؚٝإٌٖص٦⳿怴罏ز٦ؙءّ٦ չ痥㔐וֲדى٦颣պ涪邌խקַ  ؜أز،٦ذ؍أز-*7&ىص⟰歗갫♶ず 넝堀峔㶨 랲葿ׅ׫׸ $IJNB 〢愮ⶌ 〢愮ⶌ OPOPD 䩧껷柰Ꟍず㥨⠓ 筁ꅿת׃׹ /03% ،ؙٕٔ؝٦ٕ %&1"1&1&
  5. )-4 %"4) )-4 %"4) 4 %JSFDU$POOFDU 71$ 71$ */165 ඇެ։Ξοϓϩʔυ

    ίϯςϯπ*% ෆਖ਼Ξοϓϩʔυରࡦ :PV5VCF ຊฤ %3.4BB4 .FEJB-JWF ಈըϑΝΠϧ .FEJB1BDLBHF $MPVE'SPOU ߪೖલ֬ೝ ߪೖ ࠶ੜ֬ೝ ຊฤ࠶ੜ 35.1
  6. )-4 %"4) )-4 %"4) 4 %JSFDU$POOFDU 71$ 71$ */165 ඇެ։Ξοϓϩʔυ

    ίϯςϯπ*% ෆਖ਼Ξοϓϩʔυରࡦ :PV5VCF ຊฤ %3.4BB4 .FEJB-JWF ಈըϑΝΠϧ .FEJB1BDLBHF $MPVE'SPOU ߪೖલ֬ೝ
  7. )-4 %"4) )-4 %"4) 4 %JSFDU$POOFDU 71$ 71$ */165 ඇެ։Ξοϓϩʔυ

    ίϯςϯπ*% ෆਖ਼Ξοϓϩʔυରࡦ :PV5VCF ຊฤ %3.4BB4 .FEJB-JWF ಈըϑΝΠϧ .FEJB1BDLBHF $MPVE'SPOU ߪೖલ֬ೝ
  8. )-4 %"4) )-4 %"4) 4 %JSFDU$POOFDU 71$ 71$ */165 ඇެ։Ξοϓϩʔυ

    ίϯςϯπ*% ෆਖ਼Ξοϓϩʔυରࡦ :PV5VCF ຊฤ %3.4BB4 .FEJB-JWF ಈըϑΝΠϧ .FEJB1BDLBHF $MPVE'SPOU ߪೖલ֬ೝ ҆ఆੑॏࢹ ౰೔ ؂ࢹͨ͘͠ͳ͔ͬͨ
  9. )-4 %"4) )-4 %"4) 4 %JSFDU$POOFDU 71$ 71$ */165 ඇެ։Ξοϓϩʔυ

    ίϯςϯπ*% ෆਖ਼Ξοϓϩʔυରࡦ :PV5VCF ຊฤ %3.4BB4 .FEJB-JWF ಈըϑΝΠϧ .FEJB1BDLBHF $MPVE'SPOU ߪೖલ֬ೝ .VMUJ%3.,JU ಈըΛ҉߸Խ εΫγϣແޮԽ )-4%"4)Ͱ ͦΕͧΕରԠ
  10. )-4 %"4) )-4 %"4) 4 %JSFDU$POOFDU 71$ 71$ */165 ඇެ։Ξοϓϩʔυ

    ίϯςϯπ*% ෆਖ਼Ξοϓϩʔυରࡦ :PV5VCF ຊฤ %3.4BB4 .FEJB-JWF ಈըϑΝΠϧ .FEJB1BDLBHF $MPVE'SPOU ߪೖલ֬ೝ 4ʹ௚઀อଘ ͨͩ͠ NUTஅยϑΝΠϧ ͳͷͰ ཁίϯόʔτ
  11. )-4 %"4) )-4 %"4) 4 %JSFDU$POOFDU 71$ 71$ */165 ඇެ։Ξοϓϩʔυ

    ίϯςϯπ*% ෆਖ਼Ξοϓϩʔυରࡦ :PV5VCF ຊฤ %3.4BB4 .FEJB-JWF ಈըϑΝΠϧ .FEJB1BDLBHF $MPVE'SPOU ߪೖલ֬ೝ ίϯςϯπ*% ͱ͍͏࢓૊Έ Ծʹམͱ͞Εͯ΋ :PV5VCFͰͷ ऩӹԽΛ๷͙
  12. 4BB4׆༻ KTPO 9.- PDUFUTUSFBN 4 -BNCEB "1*(BUFXBZ 4FDSFUT .BOBHFS %3.4BB4

    1BZNFOUT4BB4 *%4BB4 4BGBSJ༻ $MPVE'SPOU -PDL &MFNFOUT 41"
  13. 4BB4׆༻ 4 4FDSFUT .BOBHFS %3.4BB4 1BZNFOUT4BB4 *%4BB4 4BGBSJ༻ $MPVE'SPOU -PDL

    &MFNFOUT 41" ಡΈऔΔؔ਺͕ 4BGBSJ/( ࢓༷  -BNCEBͰճආ ͔͠͠ɺ ಉ࣮࣌ߦ਺͕ෆ҆ ্ݶ؇࿨ਃ੥ͨ͠
  14. 4BB4׆༻ 4 4FDSFUT .BOBHFS %3.4BB4 1BZNFOUT4BB4 *%4BB4 4BGBSJ༻ $MPVE'SPOU -PDL

    &MFNFOUT 41" (PPHMF $MPVE'VODUJPOT (PPHMF $MPVE 'VODUJPOT "84 -BNCEB ඵ͋ͨΓ ԯճ ඵ͋ͨΓ ສճ ඵ͋ͨΓ ճ
  15. )5# %JSFDU$POOFDU .FEJB-JWF .FEJB1BDLBHF $MPVE'SPOU 71$ 6TFST &WFOUTJUF KTPO 9.-

    PDUFUTUSFBN $MPVE'SPOU 4 -BNCEB "1*(BUFXBZ &MFNFOUT 3PVUF "$. 4FDSFUT .BOBHFS 'JFMEQJDLVQWBO -PDL %3.4BB4 1BZNFOUT4BB4 *%4BB4 $*$% 3FQPTJUPSZ %FWFMPQFST 1SPKFDU .BOBHFNFOU 2"$POTVMUBOU .BOBHFS 4BGBSJ༻ "SDIJUFDUVSF /P$PEF -PX$PEF ΄ͱΜͲ͕ ίϐϖͰ͍͚ͨ
  16. ݄ Ր ਫ ໦ ۚ ౔ ೔   

        ٳ ٳ        ٳ  ॕ       ٳ  ॕ       ٳ        ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ʷ
  17. ݄ Ր ਫ ໦ ۚ ౔ ೔   

        ٳ ٳ        ٳ  ॕ       ٳ  ॕ       ٳ        ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ʷ
  18. ݄ Ր ਫ ໦ ۚ ౔ ೔   

        ٳ ٳ        ٳ  ॕ       ٳ  ॕ       ٳ        ࠂ஌ ϦϦʔε ຊ൪ᶃ ຊ൪ᶄ ຊ൪ᶅ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ग़ ʷ ग़ ʷ