メモリ安全性への要請
2024年2月、ホワイトハウス国家サイバー長官室(Office of the National Cyber Director)は、CISA、NSA、同盟国の機関によるガイダンスを受けて、テクノロジー業界にメモリ安全な言語の採用を呼びかけました。政府や重要インフラの調達の枠組みでは、メモリ安全性のロードマップを求める動きが始まっています。方向性はすでに定まりました。PHP、C++、Java、Node、Pythonで書かれた大規模なシステムを運用するすべての組織にとっての問題は、移行を自らのスケジュールで計画するのか、他者のスケジュールで強いられるのかです。
ダウンタイムなしで移行する方法
システムのマッピング。
すべてのサービス、依存関係、データフロー、利用側を文書化します。多くの組織が、存在を忘れていたシステムを発見します。
順序付け。
サービスをリスク、価値、結合度で順位付けします。最初の移行対象は、手法を実証するために選びます。華々しさのためではありません。
ストラングラーパターン。
新しいRustサービスを既存サービスの横に配置し、ミラーされたトラフィックを受け取らせ、その結果を自動的に比較します。
一致の検証。
移行を先に進めるのは、新旧が実際の本番トラフィックで一致したときだけです。必要なだけ時間をかけます。
1サービスずつの切り替え。
トラフィックは、数秒で元に戻せるスイッチを介してRustへ移ります。
廃止と引き継ぎ。
旧サービスを退役させ、文書を完成させ、貴社のチームは新サービスについてのトレーニングを終えた状態になります。
移行に適したもの
- PHPのモノリス(Laravel、Symfony、レガシー)を、APIゲートウェイの背後にあるRustサービスへ
- スループットやメモリに問題を抱えるNode.jsサービス
- ライセンス、メモリ、レイテンシのコストが構造的な問題になっているJavaやC#のサービス
- メモリ安全性に関するインシデントの履歴があるCやC++のコンポーネント
- Python自体がボトルネックになっているPythonのデータ処理・推論パイプライン
クライアントに率直に伝えていること
すべてを移行すべきではありません。
経理部門の4人が使うレポートツールはPHPのままにします。貴社の売上を扱う決済経路はそうはいきません。その議論を行うのが、2週目に作成するシステムマップです。そしてそれは、この案件で最も価値のある文書になります。