Sora Cloud を Akamai Connected Cloud へ移行しました

2024 年 8 月に、時雨堂の自社サービスである Sora Cloud を DataPacket というベアメタルクラウドサービスから Akamai Connected Cloud (以降 Linode) へ移行しました。

なぜ移行したのか

自社製品である WebRTC SFU Sora でスケールアウトが実現できるようになったためです

Sora Cloud は時雨堂が開発しているパッケージソフトウェアである WebRTC SFU Sora (以降 Sora) のクラウド版です。

この Sora が Raft ベースの分散システムに対応し、スケールアウトを実現できるようになりました。そのため、DataPacket のベアメタルサーバーで高スペックのマシンを利用する必要がなくなり、低スペックなサーバーをたくさん並べることで、好きなだけスケールできるようになりました。

移行先の選定

条件として、転送量が安いことが第一でした。

もともと Sora Cloud は転送量や利用時間による課金ではなく、転送量に制限がないサービスとして提供したいという思いがありました。DataPacket では「帯域課金」という仕組みがあったため、Sora Cloud との相性が良いサービスとして採用しました。

Linode は転送料金が 1 TB あたり月 5 ドルと格安です。GCP は 100 TB 以上の利用では 1 TB あたり月 85 ドルですので、それと比べるともう破格です。

さらに Linode はインスタンスに転送量が付いてきます。例えば一番安い Nanode と呼ばれる 1 C / 1 G の月 5 ドルのインスタンスには転送量が 1 TB 付いてきます。これらの付いてくる転送量は、時雨堂のアカウント全体で合計されてプールされます。

そのため、Sora Cloud 以外でも、利用するクラウドは全て Linode に集約することで転送量のプールを増やすことができ、ある程度の転送量を確保できます。もしオーバーしたとしても 1 TB あたり月 5 ドルということで、DataPacket で実現していたサービスプランを Linode でも問題なく継続できると判断しました。

Premium CPU

Linode の Premium CPU は EPYC 7003 シリーズを利用しており、 DataPacket と変わらないスペックが利用できるのもありがたいです。

Ansible

時雨堂ではサービスは全て Ansible を利用しているのですが、Linode ではAnsible Collection を提供してくれています。

GitHub — linode/ansible_linode: Linode Ansible Collection
Linode Ansible Collection. Contribute to linode/ansible_linode development by creating an account on GitHub.

Placement Groups

また、良いタイミングで Placement Groups がリリースされたのも大きかったです。

コンピューティング インスタンスをグループに割り当てると、それらは別々のホスト(物理マシン)に配置されますが、同じリージョンに保持されます。これにより、高可用性のための分散モデルがサポートされます。

簡単に言えば、インスタンスが同一の物理マシンに配置されなくなる仕組みです。Sora は分散システムなので、この仕組みを利用することでサービスの可用性が上がります。

移行後のコストダウン

結果として、全体でコストが 1/5 になりました。DataPacket の時よりスケールアウトが気軽にできるため、サービスを運用する際の安心感もあります。インスタンスを増やすだけでスケールできるようになるのは本当に楽です。

もともとは Sora Cloud はベアメタルサーバーを利用した高コストなサービスと割り切っていたのですが、Linode への移行によりコストを抑えてサービスが提供できるようになりました。

今後

現在 Postgres は SaaS を利用していますが、Linode での Postgres サービスがリリースされたら切り替えてさらにコストダウンを行う予定です。

Linode の S3 互換オブジェクトストレージも 1 TB の転送量がついて 250 GB で月 5 ドルと格安なのもあり、ログ保存先として利用していく予定です。

また、Sora Cloud では 2025 年に Inbound (クライアントから Sora への通信) の利用帯域は課金対象に含めないという変更を予定しています。これは DataPacket と異なり、Linode では Inbound の転送量が無料なためです。

Read more

Rust の MP4 ライブラリを公開しました

先日、Rust で書いた MP4 ライブラリを OSS として Apache License 2.0 にて公開しました。 GitHub - shiguredo/mp4-rust: MP4 libraryMP4 library. Contribute to shiguredo/mp4-rust development by creating an account on GitHub.github.com 以前公開した C++ のMP4 ライブラリは、 Go で書かれた MP4 ライブラリを参考に開発しましたが、今回は MP4 関連の ISO の仕様書を購入し、しっかり仕様を読み込んで開発を行いました。 なぜ今更 MP4 ? これまで、自社製品であるWebRTC

By voluntas

WebRTC SFU Sora 2024 年ロードマップ

WebRTC SFU Sora (以下 Sora) をリリースしてから昨年の 12 月で 9 年目に入りました。ここ最近は OBS を利用した WebRTC の配信に対応したり、より便利な録画機能を提供したりしています。 今回は 2024 年に提供を予定している機能を紹介していきます。今年の大きなアピールポイントは「クラスターリレー機能」と「マルチコーデック対応」の 2 つです。 クラスターリレー機能 現在の Sora のクラスター機能は耐障害性を目的としたものです。特定のクラスターノードに障害が発生しても、再接続すれば別のノードに接続でき、サービスが継続できます。 ただ、ある同一のチャネル (一般的にルームと呼ばれる概念と同じモノです) に参加するクライアントは特定のクラスターノードにしか接続できないという課題がありました。そのため、「どのクラスターノードに接続しても同一のチャネルに参加できる」ようにすることでチャネルのスケールアウトを実現したいと考えていました。 Redis などのデータベースを用意すれば、どのクライアントがどのノードに接続しているかなどの情報を共有する

By voluntas

録画と合成、追加料金なし

WebRTC SFU Sora のクラウド版である Sora Cloud では、 Sora の強みの一つである録画機能が利用できます。また時雨堂が OSS として公開している録画合成ツール Hisui も、クラウド版 Hisui Cloud として提供しています。 クラウド版の映像配信サービスで録画というと、「1 分いくら」というイメージがあると思います。実際、 1 分 2 円程度で録画サービスを提供していることが多いです。また、録画したファイルの置き場の費用がかかる場合もあります。 映像を合成する場合も同様に、合成時間や合成するファイル自体の合計時間などによって費用が発生します。合成は CPU リソースを消費するので、費用がかかるのは当たり前と言えばそのとおりですが、安くても 1 分 2 円程度で提供されることが多いようです。 Sora Cloud ではこの録画と合成を追加料金なしで利用できるようにしました。 録画 Sora の録画機能では、配信している音声と映像を WebM ファイルにします。変換などをせずに録画をするため、

By voluntas