過去の登壇資料から勝手にHTBのアーキテクチャレビューをやってみた件(前編)
概要
北海道テレビ(HTB)内では、内製開発にて"hod"と呼ばれる北海道テレビが提供するテレビオンデマンドサービスと"HTB Online Shop"という名前そのままだがHTBの公式グッズなどが買えるサービスをユーザ向けに提供しています。
今回は、そんな2つのサービスのアーキテクチャについてを社外のエンジニアが見た時にここすごくねとか、こここんなことできたら面白そうといった観点で勝手にアーキテクチャレビューを実施していこうと思います。
hodや、HTB Online Shopのアーキテクチャについては、下記にHTBで働く三浦さんの資料が公開されているので、こちらの資料を見ながら進めていきましょう。
ライブコマースサービス
まずは、ライブコマースサービスのアーキテクチャについて深掘りしていきましょう。
ライブコマースサービスというのは、資料中にも記載があるように動画を視聴しながら関連するグッズを販売するそんなサービスとなっています。
なので、ここで重要な要件としては、動画の配信、お客様(視聴しているユーザおよびグッズを購入するユーザ)の情報の管理、決済、認証・認可、ある程度人気が予想されるコンテンツを取り扱う場合、全体のサービスの監視などが挙げられるでしょう。
実際に、取り扱っていたコンテンツも「水曜どうでしょう」に関連するイベントのものだった為、多くのユーザが視聴およびグッズの購入を行った結果、黒字になったとも本資料内には記載があります。
さてアーキテクチャはどうなっているのか?
資料内に、全体のアーキテクチャについての記載がございました。
まず左上から、実際に現地で撮影された映像をAWS Elemental Linkを使用することで、AWS Media Servicesにエンコードしたデータを連携している事が分かります。
ちなみに、AWS Elemental Linkは、AWS Elemental MediaLive用に用意されたエンコーダデバイスのようで、AWS Media Serviceを使うと、図のようMediaLiveからAWS Elemental MediaPackageそして、ライブ配信時に使うCloudFrontにデータを流すそんな構成を作ることができます。
全体のWebサービスとしては、フロントエンドにreactのフレームワークを使用して、Amplifyにホスティング、バックエンドはAPI Gateway + StepFunctionsの構成で全てのデータはAWSが提供するNoSQLデータベースであるDynamoDBに保存する形となっていますね。
特徴的なのは、"Auth0"や"Stripe"といったAWS以外のSaaSを利用してることかもしれません。
重要なのはここで、例えば"Stripe"というSaaSを見た時にこのサービスでは決済機能ついてをより楽に使えるようなサービスとしてユーザに提供しています。代替できるサービスはAWSには無い点が1つ目のポイントです。
2つ目に、Auth0を使っていること。良し悪しはあると思います。私も自社のサービスで認証認可をさせたい場合には、Congitoを使用して組み込むことをよくやるのですが、人によってはCognitoは悩みの種になるかもしれません。確かにそんな時には、使いやすいAuth0を使用して組み込むといった実装をしている点が注目ポイント2つ目です。
といった感じに、自分で実装するのがしんどい機能や、AWSに閉じずに他の連携しやすいSaaSを使用することでアーキテクチャを組まれているポイントは面白いなと個人的に思いました。
ビジネスロジックは、StepFunctionsで実現している
資料にもあるように特徴的な点として、ビジネスロジックをStepFunctionsで実現しているとのことで、下記のようにユーザによるアクションごとに処理を分岐させているそんな実装をしておりました。
ただ、この構成で一番ペインだと述べているのは、LambdaからAWSの外の世界にいるSaaSを呼び出す時ですね。
下記にもあるよう、呼び出し後の待ち時間にSDKを使いAWSのAPIを叩くことと、StripeをLambdaを経由して叩くのではこれだけの差が出てしまっているようです。
朗報が
HTBの三浦さんもサービスのアップデートが公開され歓喜していたのですが、Step Functionsから直接外部のSaaSに対して叩けるようになったというもので、上記図に出てくるLambda を挟まなくても良くなったことはStepFunctions全体を呼び出した時の待機時間も減れべ、決済処理にかかっていた時間も短縮されかつ、余分なコンポーネントが減るので、開発者もこのサービスを利用するユーザもHappyになるそんなアップデートなんじゃないかなと思いました。
まとめ
今回は、HTBさんのライブコマースサービスの全体アーキテクチャを見ていき、ここいいなとか、どうやっているのかを解剖していったのですが、他社で考えられたアーキテクチャを見ていくのは本当に勉強になります。
次回は他のHTBさんのサービスも見ていこうと思います!
本日はここまで!解散!
この記事が気に入ったらサポートをしてみませんか?