Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

p@YPの裏側

Posted at
Page 1 of 40

ぷろぐれ

  • PeCaStarter
  • 東方緋想天 ストーリーRTA (難易度N) WR
  • p@YP ← New!

アジェンダ

  1. どうしてYPを作ったのか
  2. YPの構成
  3. 問題点

1. どうしてYPを作ったのか

主にこれらの理由によります;

  • 主要YPが同時期にメンテになった
  • YP4Gを使うのがつらい
  • 過去の自作YPを掘り返す気になれない
  • 最近のツール・インフラを活用して楽したい

次の資料からより詳しく


主要YPが同時期にメンテになった

image.png


主要YPが同時期にメンテになった

image.png


主要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作ろう


きゃすけで告知した通り、作りました。

https://p-at.net

image.png


p@ の由来

p@ )))


2. YPの構成

  • Vercel
  • GCP (Google Cloud Platform)

Vercel

概要

  • Node.js などの http サーバーをデプロイできるやつ
  • 非営利ならタダで使える
  • バージョン切り替えとかスケーリングとかをよろしくやってくれる
  • アプリケーション側を適切に設定すればキャッシュもやってくれる
  • DBとかは無い
  • 生 http 禁止 https のみ可能

Vercel

具体的に何をやらせているかというと;

  • YP4G代わり
  • トップページその他表示

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

    1. Vercel から PeerCast への暗号通信経路
    • Vercel 側が index.txt を作る時に PeerCast のチャンネル一覧を取得する
    • Vercel から直接 PeerCast にアクセスすると暗号化されない
    • のでここを経由することで経路が暗号化される
      • オレオレ証明書によるhttps通信
      • let's encryptでの証明書発行も試したけど、何度もデプロイすると簡単にレート制限を突破するのでやめた

Compute Engine

コンテナ2: nginx

    1. 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はよ


おわり

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?