Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Add bindings for retrieving system metrics #4

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

chocolate-pie
Copy link

Summary

システムメトリクスを取得する高速パスを用意しサーバーメトリクスのパフォーマンスを改善 misskey-dev/misskey#13641
ここで実装していないものはNode.jsのビルトインモジュールを使用するか従来の方法を使用する予定 cc: @syuilo, @acid-chicken

@chocolate-pie chocolate-pie marked this pull request as ready for review May 19, 2024 11:09
@acid-chicken
Copy link
Member

Thank you for your contribution.

  • slacc の方針としては、クレートの中身は可能な限り小さな Misskey バックエンド専用の napi バインディングに留める状態を維持したいです (モジュール単位でnpmパッケージに分ける & モノリポにする #2)
    • 元々このリポジトリは slacc クレートの開発およびクロスビルドと npm の出荷のみに焦点を当てています
    • slacc-system-metrics はおそらく Misskey 以外のプロジェクトでも有用になる可能性があります。もし slacc をモノリポとして拡張した場合、ワークフローが複雑化したり、将来的に当該クレート単体の出荷や slacc 自体のバインディングの変更要望を受けることになるかもしれません。一般に、ライブラリが広く使われるのは良いことですが、残念ながら slacc においては先述の理由からその限りではありません
    • slacc-system-metrics を別のリポジトリに分離することが望ましいかと思います
  • slacc-system-metrics のバインド追加と関連のない差分があるようです。これらの差分の適用が必要な場合、別の PR で先にご提案をいただくのが望ましいかと思います

@chocolate-pie
Copy link
Author

chocolate-pie commented May 28, 2024

例えこの変更がマージされてもsrc/lib.rsで再エクスポートしているのでNPMパッケージは増えませんし、crates.ioに個別にクレートを公開する場合でもOrogeneのようにすれば手間をかけることなく出来るのではないでしょうか?(slacc-system-metricsはプラットフォームごとに実装が違い動作確認が大変なため別のクレートに分割してありますが通常のケースでは分割する必要はないと思います)

@acid-chicken
Copy link
Member

というのは、可能な限り slacc リポジトリ上にロジックを持ちたくないということを意図しています

@chocolate-pie
Copy link
Author

しかし同じような働きをする有名なサードパーティライブラリとしてsysinfoクレートがありますがこれはDisk I/Oの取得に対応していませんしパフォーマンスもこの実装より悪いので代替手段としては検討しづらいのです。私がslaccのコア部分となるクレート・リポジトリを別で作ってslaccをそれに依存させることもできますがそれでよろしいですか?

@acid-chicken
Copy link
Member

リポジトリの構造のみに焦点を当てる限りはそれが望ましいです。
実際の slacc-system-metrics に相当するリポジトリおよびクレートについては、以下の中から望ましい形を選択できればと思います。

  • misskey-dev 上にリポジトリおよびクレートを作成し @chocolate-pie さんを collaborator として招待する
  • @chocolate-pie さんのリポジトリを misskey-dev で fork して依存する形とする

@chocolate-pie
Copy link
Author

わざわざslaccに機能付け加えるのにmisskey-devにリポジトリを作るのはメンテナビリティが下がりそうですしslacc-system-metricsだけではなくslaccの主要機能をCargoのワークスペースで管理したリポジトリを作ることはできませんか?

@acid-chicken
Copy link
Member

  • slacc-system-metrics はおそらく Misskey 以外のプロジェクトでも有用になる可能性があります。もし slacc をモノリポとして拡張した場合、ワークフローが複雑化したり、将来的に当該クレート単体の出荷や slacc 自体のバインディングの変更要望を受けることになるかもしれません。一般に、ライブラリが広く使われるのは良いことですが、残念ながら slacc においては先述の理由からその限りではありません

と述べたとおりなので、本リポジトリにおいてそれは望ましい状態ではありません

@chocolate-pie
Copy link
Author

すみません、これはslacc-system-metricsの機能だけではなくslaccの主要機能をワークスペースで管理したslaccとはまた別のリポジトリのことを指しています。私の理解が正しければこのリポジトリはサードパーティライブラリの薄いラッパーであるslaccを公開するためだけにあるのでワークフローを頻雑化したくないということですよね?こんな感じ:

私はこうしたい:(リポジトリを機能ごとに増やしたくない)

  • misskey-dev (https://github.com/misskey-dev)
    • slacc (https://github.com/misskey-dev/slacc. なるべくここにはロジックは書かない。NPMにしか公開しない)
    • slacc-core (仮称。 slaccの主要機能(今はslacc-system-metricsだけ)をワークスペースで管理する。NPMには公開しない、crates.ioとかはわからない)
      • crates/slacc-system-metrics (システム情報を取得するためのライブラリ)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants