時雨堂では WebRTC P2P 向けのシグナリングサーバを無料で利用できる Ayame Labo というサービスを提供しております。今回 Ayame Labo の中身をリニューアルしました。
リニューアル理由
もともと、基本的には放置して運用するという方針だったのですが、今年に入って TURN サーバの利用が多く、想定外の転送量が利用されてしまうという問題が発生してしまいました。1 日で転送量 250 G 程度利用されていたりもしました。
Ayame Labo はとても安いサーバで運用しているのですが、さすがに転送量がひどいこともあり、TURN サーバは独立して運用する事にしました。
Ayame Labo の簡単な構成
Ayame Labo で運用しているシグナリングサーバは非公開の Erlang/OTP で書かれた Ayame 互換のシグナリングサーバです。
TURN サーバには coturn を採用しています。シグナリングサーバと coturn の連携には Redis を採用しています。
Ayame Labo サービス自体は Go と SQLite を利用しています。
リニューアル後の構成
UI などは一切変更していません。変わったのは中身だけです。
ドメインの変更
自社サービス向けに shiguredo.app というドメインを取得し、Ayame Labo を ayame-labo.shiguredo.app というドメインに変更しました。
TURN サーバ
TURN サーバと Redis サーバをシグナリングサーバから切り離しました。TURN サーバは別途新規に立てるようにしました。
TURN サーバには最近 Vultr が公開した Intel ハイパフォーマンスプランの月 $ 6 のサーバを利用しています。
- TURN サーバで利用可能な転送量を 1 TiB から 2TiB に増加しました。
- TURN-UDP / TCP / TLS をすべて 443 番ポートに変更しました。
- 接続ごとの TURN への帯域は 100 KB/s に制限しました。
Redis サーバ
Redis サーバは Redis Enterprise Cloud を採用しました。GCP / Tokyo リージョンでデータベースの容量が 30 MiBまでなら無料で利用できる太っ腹っぷりです。100 MiB でも月 $ 7 で利用できます。
Ayame / Ayame Labo サーバ
Ayame 互換サーバ (Erlang/OTP) も TURN サーバと同様の月 $ 6 のサーバを利用しています。
Ayame Labo サーバは Gin から echo に書き直そうと思ったのですが、急ぎでもないこともあり後回しにしました。
監視サーバ
監視には時雨堂サービス用に運用している VictoriaMetrics / Grafana を利用しています。こちらも Vutlr + Vultr Block Storage で運用しています。
クラウド間通信
クラウド間通信は Tailscale を利用しました。Vultr 同士なので VPC Peering もできますが、月 $ 20 をケチりました。
日本国内のみの利用
もともと Ayame Labo は利用規約も日本語であり、日本の方が日本国内で利用する事を想定していたのですが、海外からの利用が増えてきたこともあり、今回のリニューアルで Cloudflare WAF を利用し、アクセスを日本国内のみとしました。
今後も気軽に利用できる WebRTC P2P シグナリングサーバ + TURN サーバを無料で提供していければと思います。