サードパーティライブラリの落とし穴

  • サードパーティライブラリの落とし穴

最近話題になったサードパーティのロギングライブラリの脆弱性について。これは低门槛でリモートコマンドを実行できる。ログライブラリとリモートコマンドは全く関係ないように見えるが、余計なサードパーティライブラリはどこにでもある。

読んだコードが増えるほど、多くのオープンソースコードのレベルが非常に低いことに気づく。何千ものスターがあっても、スターは需要を表すだけで、開発レベルを表すわけではない。

オープンソースの利点は、より多くの人が開発に参加できることで、特徴が急速に増加し、バグが修正され、コードがレビューされることだ。しかし、レベルはまちまちだ。

強力なコミット制約がなければ、コードの品質を保証するのは難しい。

コードが増えれば増えるほど、攻撃面も増える。

再発明は良くないと言われているが、製品のニーズはベビーカーのタイヤのようなものだ。プラスチックのタイヤでも壊れることはない。飛行機のタイヤを装着しても、攻撃面とメンテナンスコストが増えるだけだ。そのため、ベビーカーのタイヤだけが必要なら、大材小用は避けた方が良い。

メンテナンスコストが高い。サードパーティライブラリには専門のプロセスと人員が必要。ファーウェイが改造したテストフレームワークは、コンパイラをアップグレードするとテストが失敗し、テストフレームワークとコンパイラのアップグレードが衝突し、メンテナンス時に大量の時間を費やして改造しなければならない。参加者として、サードパーティライブラリを改造する困難さを痛感した。もし改造した機能がオープンソースに戻せればまだ良いが、自分のニーズのために侵入的にカスタム開発すると、メンテナンスが非常に難しくなる。

サードパーティライブラリに対してファーウェイは一連のプロセスを作り、非常に高いハードルを設けている。

ハードルが非常に厳しく、サードパーティライブラリを追加するには18級の専門家と20級の部長のレビューが必要で、基本的に有名なサードパーティライブラリだけが使用できる。

すべてのサードパーティライブラリはthirdpartyフォルダに置かれ、全量コンパイル時にCIとソースライブラリを比較し、侵入的な変更を厳しく禁止している。

専用のツールでサードパーティライブラリのバージョンを追跡し、これは外部委託の人員が管理している。開発者がバージョンアップを申請するには申請が必要で、部長の承認が必要だ。

部長にこのようなことを処理させるのは難しい。プロセスが非常に煩雑になると、実際にはそうしないように勧めていることになる。

サードパーティライブラリに対しては、軽率に信じるべきではなく、自分たちの開発を信じるべきだ。