레거시 스파게티 코드 개선 전략 (feat. 테스트 그물잡기)
- 레거시 스파게티 코드는 규모와 상관없이 어디에나 존재하며, 역설적으로 현재 동작하는 유일하게 신뢰할 수 있는 부분이다. 🍝
- 개선 전략의 핵심은 '테스트 그물잡이' 비유로, 가장 큰 문제부터 큰 그물(테스트)로 잡고 점차 작은 그물로 범위를 좁혀가는 방식이다. 🎣
- 초기 단계에서는 API 또는 E2E 통합 테스트를 작성하여 시스템의 가장 바깥 부분을 촘촘히 커버하는 것이 중요하다. 🕸️
- 실제 서비스의 리퀘스트/리스폰스 로그를 활용하여 컨트롤러 레벨의 통합 테스트를 구축하고, 이를 통해 기존 동작을 검증한다. 📝
- 개발 DB 대신 로컬 환경에서 반복 가능한 테스트를 통해 코드 장악력을 높이고, 리팩토링 시 불안감을 줄인다. 🛡️
- 테스트 커버리지를 확보한 후에는 잦은 부분 배포를 통해 변경 사항을 검증하고 문제가 발생하면 즉시 롤백하여 '빅뱅' 방식의 위험을 피한다. 🚀
- 큰 그물로 전체를 보호하며 내부의 스파게티 코드를 '수술'하듯 부분적으로 개선하고, 이때 전체 테스트가 깨지지 않는지 지속적으로 확인한다. 🩺
- 전면 개편을 하더라도 기존 시스템의 유즈 케이스와 동작 방식을 이해하기 위해 유사한 테스트 기반 접근 방식이 필요하다. 🔄
- 궁극적으로는 스파게티 코드를 만들지 않는 것이 최선이지만, 이미 존재하는 경우 이 전략을 통해 점진적으로 개선할 수 있다. 🚫
데브허브 | DEVHUB | 레거시 스파게티 코드 개선 전략 (feat. 테스트 그물잡기)