Language⚡ パフォーマンス・速度🛠️ 開発体験(DX)
Mirrativ
Mirrativ、レガシーなPerlサーバーサイドをGoへ段階的に刷新
PerlGo
既存Perlアプリを一気に書き換えず、Unix Domain Socket経由でPerlからGoの機能を呼び出す方式を確立し、新機能はGoで実装する方針へ移行した。
何が起きたか
Mirrativは長年運用してきたPerl製サーバーサイドの資産を活かしつつ、新規実装はGoへ寄せていく方針で技術移行を進めている。当初はPerl XSバインディングでCGO経由のGo共有ライブラリを直接呼び出す方式を試みたが、PerlのpreforkモデルとGoのgoroutineベースの並行処理モデルが衝突し、fork後の子プロセスがハングする問題が発生した。この問題を解決するため、Goランタイムを正しく初期化した親プロセスがUnix Domain Socket経由でfork済み子プロセスからのリクエストを処理する構成に変更し、イベントループライブラリによる性能最適化も併用した。この結果、既存のPerlコードベースを大規模に書き換えることなく、Perlアプリケーションから安全にGoの機能を呼び出せる基盤を確立した。
2021-01-01
他の事例も見る