『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を用意
[結果]
・無事に開発も終わり、黒字で終了することができました。