サードパーティライブラリの落とし穴
Categories:
- サードパーティライブラリの落とし穴
最近話題になったサードパーティのロギングライブラリの脆弱性について。これは低门槛でリモートコマンドを実行できる。ログライブラリとリモートコマンドは全く関係ないように見えるが、余計なサードパーティライブラリはどこにでもある。
読んだコードが増えるほど、多くのオープンソースコードのレベルが非常に低いことに気づく。何千ものスターがあっても、スターは需要を表すだけで、開発レベルを表すわけではない。
オープンソースの利点は、より多くの人が開発に参加できることで、特徴が急速に増加し、バグが修正され、コードがレビューされることだ。しかし、レベルはまちまちだ。
強力なコミット制約がなければ、コードの品質を保証するのは難しい。
コードが増えれば増えるほど、攻撃面も増える。
再発明は良くないと言われているが、製品のニーズはベビーカーのタイヤのようなものだ。プラスチックのタイヤでも壊れることはない。飛行機のタイヤを装着しても、攻撃面とメンテナンスコストが増えるだけだ。そのため、ベビーカーのタイヤだけが必要なら、大材小用は避けた方が良い。
メンテナンスコストが高い。サードパーティライブラリには専門のプロセスと人員が必要。ファーウェイが改造したテストフレームワークは、コンパイラをアップグレードするとテストが失敗し、テストフレームワークとコンパイラのアップグレードが衝突し、メンテナンス時に大量の時間を費やして改造しなければならない。参加者として、サードパーティライブラリを改造する困難さを痛感した。もし改造した機能がオープンソースに戻せればまだ良いが、自分のニーズのために侵入的にカスタム開発すると、メンテナンスが非常に難しくなる。
サードパーティライブラリに対してファーウェイは一連のプロセスを作り、非常に高いハードルを設けている。
ハードルが非常に厳しく、サードパーティライブラリを追加するには18級の専門家と20級の部長のレビューが必要で、基本的に有名なサードパーティライブラリだけが使用できる。
すべてのサードパーティライブラリはthirdpartyフォルダに置かれ、全量コンパイル時にCIとソースライブラリを比較し、侵入的な変更を厳しく禁止している。
専用のツールでサードパーティライブラリのバージョンを追跡し、これは外部委託の人員が管理している。開発者がバージョンアップを申請するには申請が必要で、部長の承認が必要だ。
部長にこのようなことを処理させるのは難しい。プロセスが非常に煩雑になると、実際にはそうしないように勧めていることになる。
サードパーティライブラリに対しては、軽率に信じるべきではなく、自分たちの開発を信じるべきだ。