OSレイヤーモックみたいなのを考え始めた

数週間前からぼんやり考えているのだけど、古いシステムをやりかえるときに新しい環境がエラーなく動くかどうかみたいなのを事前に検証したいケースってあると思う。

nginxとかのレイヤーでトラフィックをコピーし、新旧に同じリクエスト流しても、バックエンドのAPIが実行されちゃったりして外部連携が必要なシステムでは十分に検証できないし、意図しない動作をするケースが有る。

そういうったケースに対応する実装として、カーネルレイヤーで本番サーバのトラフィックを録画的に記録して、検証用サーバにパケットのFrom/Toを書き換えつつ再生するようなカーネルモジュールあるとアプリケーションからは意識することなくテストできそうだなぁと考えている。

例えばテストアプリケーションからDBにSQLクエリ投げたとしても、実態としてはカーネルレイヤーでモックして、アプリから見るとDBサーバにさもクエリを投げて、さもレスポンスが帰ってきたように見えるけど、実態はそのサーバ内で実行されてるカーネルモジュールがモックしてるような感じ。

eBPF使えばちょい楽に実装できるだろうけど、こういうのが必要なのは古いカーネルを持つサーバなのでカーネルモジュールで書くことになりそう。