정책 요구
2024년 2월, 미국 백악관 국가사이버국장실(ONCD)은 CISA, NSA, 동맹국 기관의 지침에 이어 기술 업계에 메모리 안전 언어를 채택할 것을 촉구했습니다. 정부와 핵심 기반시설의 조달 체계는 메모리 안전성 로드맵을 요구하기 시작했습니다. 방향은 정해졌습니다. PHP, C++, Java, Node, Python으로 된 주요 시스템을 운영하는 모든 조직에 남은 질문은, 마이그레이션을 스스로 정한 일정에 따라 계획할 것인지, 아니면 다른 누군가의 일정에 떠밀려 하게 될 것인지입니다.
다운타임 없이 마이그레이션하는 방법
시스템 매핑.
모든 서비스, 의존성, 데이터 흐름, 소비자를 문서화합니다. 대부분의 조직은 이 과정에서 잊고 있던 시스템을 발견합니다.
순서 정하기.
리스크, 가치, 결합도에 따라 서비스의 순위를 매깁니다. 첫 번째 마이그레이션은 무리한 도전이 아니라 방법론을 입증하기 위해 선택합니다.
스트랭글러 패턴.
새 Rust 서비스를 기존 서비스 옆에 배치합니다. 새 서비스는 미러링된 트래픽을 받고, 그 결과는 자동으로 비교됩니다.
동등성 검증.
기존 시스템과 새 시스템이 실제 프로덕션 트래픽에서 같은 결과를 낼 때만 마이그레이션을 진행합니다. 시간이 얼마나 걸리든 마찬가지입니다.
한 번에 하나의 서비스씩 전환.
트래픽은 몇 초 안에 되돌릴 수 있는 스위치 뒤에서 Rust로 이동합니다.
폐기 및 인계.
기존 서비스는 폐기되고, 문서화는 완료되며, 귀사 팀은 새 서비스에 대한 교육을 마칩니다.
마이그레이션에 적합한 대상
- API 게이트웨이 뒤의 Rust 서비스로 전환하는 PHP 모놀리스(Laravel, Symfony, 레거시)
- 처리량 또는 메모리 문제가 있는 Node.js 서비스
- 라이선스, 메모리, 지연 시간 비용이 구조적인 문제가 된 Java 및 C# 서비스
- 메모리 안전성 사고 이력이 있는 C 및 C++ 컴포넌트
- Python 자체가 병목인 Python 데이터 및 추론 파이프라인
저희가 고객에게 솔직하게 말씀드리는 것
모든 것을 옮겨야 하는 것은 아닙니다.
재무팀 네 명이 사용하는 보고 도구는 PHP에 그대로 둡니다. 귀사의 매출을 처리하는 결제 경로는 그렇지 않습니다. 2주 차에 저희가 작성하는 시스템 지도가 바로 그 논의가 이루어지는 곳이며, 프로젝트 전체에서 가장 가치 있는 문서입니다.