ぷろぐれ
- PeCaStarter
- 東方緋想天 ストーリーRTA (難易度N) WR
- p@YP ← New!
アジェンダ
- どうしてYPを作ったのか
- YPの構成
- 問題点
1. どうしてYPを作ったのか
主にこれらの理由によります;
- 主要YPが同時期にメンテになった
- YP4Gを使うのがつらい
- 過去の自作YPを掘り返す気になれない
- 最近のツール・インフラを活用して楽したい
次の資料からより詳しく
主要YPが同時期にメンテになった
主要YPが同時期にメンテになった
主要YPが同時期にメンテになった
5日ずれてたらやばかった
危機感
もし何かあった時にYPをサクッと建てられる感じじゃない
→ 自分で建てられる状態になってると安心
→ 誰でも建てられるともっといい
1. どうしてYPを作ったのか
- 主要YPが同時期にメンテになった
- YP4Gを使うのがつらい
- 過去の自作YPを掘り返す気になれない
- 最近のツール・インフラを活用して楽したい
YP4Gを使うのがつらい
YP4G: PeerCast と通信して index.txt を作るサーバーアプリ
自分が使うには YP4G の構成がつらい
- LAMP
- Linux
- Apache HTTP Server
- MySQL
- PHP
近づきたくない
→ より親しみのある環境にしたい
1. どうしてYPを作ったのか
- 主要YPが同時期にメンテになった
- YP4Gを使うのがつらい
- 過去の自作YPを掘り返す気になれない
- 最近のツール・インフラを活用して楽したい
過去の自作YPを掘り返す気になれない
- WP (2011)
- 新YPラッシュの時に乗っかって作った
- チャンネル掲載が独自APIで、対応したPeCaStarter必須
- ソースコード紛失
- DP (2014)
- TypeScript(当時v1.0)が流行り出したぐらいのときに作った
- pcpプロトコル独自実装
- 設計が古くて安定するかどうかわからない
→ 新しく作る&pcp部分はとりあえず peercast-yt に任せる
1. どうしてYPを作ったのか
- 主要YPが同時期にメンテになった
- YP4Gを使うのがつらい
- 過去の自作YPを掘り返す気になれない
- 最近のツール・インフラを活用して楽したい
最近のツール・インフラを活用して楽したい
- Vercel
- 個人利用ならタダ 後述
- GCP
- 手厚い無料枠
- ほか Docker Terraform
Rust
1. どうしてYPを作ったのか
- 主要YPが同時期にメンテになった
- YP4Gを使うのがつらい
- 過去の自作YPを掘り返す気になれない
- 最近のツール・インフラを活用して楽したい
→ よし、YP作ろう
きゃすけで告知した通り、作りました。
p@ の由来
2. YPの構成
- Vercel
- GCP (Google Cloud Platform)
Vercel
概要
- Node.js などの http サーバーをデプロイできるやつ
- 非営利ならタダで使える
- バージョン切り替えとかスケーリングとかをよろしくやってくれる
- アプリケーション側を適切に設定すればキャッシュもやってくれる
- DBとかは無い
- 生 http 禁止 https のみ可能
Vercel
具体的に何をやらせているかというと;
- YP4G代わり
- GCP にいる PeerCast からチャンネル一覧を拾って index.txt を生成する
- トップページその他表示
Vercel
要素技術
- Node.js
- JS
- React
- View ライブラリ
- Next.js フレームワーク
- 設定がほぼ0のReact用サーバー
- ルーティングは定義や実装の代わりにフォルダとファイルの置き方で表現
- ベースのhtmlの用意やreactの埋め込みを勝手にやってくれる
- index.txt (plain/text) を返すのにちょっとコツがいる
2. YPの構成
- Vercel
- GCP (Google Cloud Platform)
GCP
- Compute Engine (VM)
- Cloud Logger
- Cloud DNS
GCP
- Compute Engine (VM)
- Cloud Logger
- Cloud DNS
Compute Engine
- 無料枠の e2-micro 一台、そこに Docker コンテナ 2 台
Compute Engine
コンテナ1: peercast-yt
- 配信者が配信情報を乗せる時に通信する
- チャンネル一覧を作る (外からは見れない。代わりにindex.txtで公開される)
Compute Engine
コンテナ2: nginx
-
- Vercel から PeerCast への暗号通信経路
- Vercel 側が index.txt を作る時に PeerCast のチャンネル一覧を取得する
- Vercel から直接 PeerCast にアクセスすると暗号化されない
- のでここを経由することで経路が暗号化される
- オレオレ証明書によるhttps通信
- let's encryptでの証明書発行も試したけど、何度もデプロイすると簡単にレート制限を突破するのでやめた
Compute Engine
コンテナ2: nginx
-
- PeCaRecorder 用の index.txt
- http://insecure.p-at.net/index.txt
- PeCaRecorderはhttps通信に対応してない
- Vercel は httpsしか公開できない
- PeCaRecorder から nginx にアクセスすると、nginx が代わりにVercelからindex.txtを取ってくる
構成はこんなとこ。
ソースコードは AGPL ライセンスで公開されています。
3. 問題点
- PeCaRecorderがhttpsに対応していない
- 高負荷時の影響が見えない
- PeerCast 本体側に問題が発生したら対応できない
- 誰でも建てられるYPになってない
PeCaRecorderがhttpsに対応していない
- httpsは今では当たり前だがかつては当たり前ではなかった
- 歴史を感じる
- 令和の時代にhttpsを喋れないクライアントが生きているなんて…
- 通信ができない理由がコレだと気づくのに半日くらいかかった
- Vercelが生httpに対応していないのでかなりつらい
- ちなみに競合のNetlifyも生http未対応
- 同じく競合のCloudflare Pagesは未確認
PeCaRecorderがhttpsに対応していない
- しょうがないのでnginxを経由してアクセスする
- p-at.net ドメインは vercel に紐づけちゃっててnginxと紐づけられない
- 苦肉の策として別ドメインをnginxと紐付けることにした
- insecure.p-at.net とかいうめんどくさいドメインを採用
- ただ、このせいで GCP に無駄なコスト(通信料)がかかることになった
- GCP自体は気にするような値段ではない
PeCaRecorderがhttpsに対応していない
誰か新しいPCYPクライアント作って
高負荷時の影響が見えない
- 全然同時配信数たりません
- 本当にSP/TPが同時に消えたときに支え切れるかは全くわからん
- インフラ専門じゃないので実際わからん
- 負荷試験でもする?
- インフラ専門じゃないので実際わからん
PeerCast 本体側に問題が発生したら対応できない
- まだ自分でビルドできてない
- 予定地さんの気分次第
- 落ち着いたらビルドくらいできるようにしたい
誰でも建てられるYPになってない
- 再利用性はYP4G以下
- ドキュメント不足
- 今のとこ予定なし
まとめ
主要YPの同時期メンテで危機感を持ったので最近の技術でYPを作った
長期運用に際してコストに懸念はないけど高負荷や不具合はこの限りではない
https対応PeCaRecorderはよ
おわり