제목: 레거시는 마약이 아니라 시스템의 상태다

“레거시가 나쁘지 않다는 말은 마약이 나쁘지 않다는 말과 같다”는 비유는 성립하지 않는다.

마약은 인체에 미치는 생리적 위해성을 기준으로 평가한다. 반면 레거시는 조직이 물려받아 운영 중인 기존 시스템을 뜻한다. 오래됐다는 정보만으로 안전성, 품질, 유지비용을 판정할 수 없다.


레거시 시스템은 기술 부채일 수도 있지만, 동시에 다음 자산을 포함할 수 있다.


  • 오랫동안 검증된 동작
  • 문서화되지 않은 업무 규칙
  • 기존 데이터와 호환성
  • 장애 대응과 운영 노하우
  • 고객의 작업 흐름


따라서 판단 기준은 “오래됐는가”가 아니라 다음이어야 한다.


  • 실제 장애와 취약점이 얼마나 발생하는가
  • 변경과 배포에 얼마나 많은 비용이 드는가
  • 지원과 인력 수급이 가능한가
  • 현대화와 재작성 중 어느 쪽의 위험이 낮은가
  • 교체했을 때 기능 회귀와 서비스 중단 위험은 얼마인가


이미 쓴 개발비만을 이유로 유지한다면 매몰비용의 오류가 맞다. 그러나 재작성비, 데이터 이전비, 병행 운영비, 기능 회귀 위험은 앞으로 발생할 실제 비용이다. 이것까지 매몰비용이라고 무시하면 경제적 분석이 아니라 계산 포기다.

소프트웨어는 휴대전화처럼 2년이 지나면 물리적으로 닳아 고장 나는 물건도 아니다. 실행 환경과 요구사항이 변하므로 유지보수는 필요하지만, 임의의 사용 연한이 폐기 기준은 아니다.

“백엔드는 러스트가 아니면 비정상”이라는 결론 역시 기술적 논증이 아니다. 백엔드 기술은 처리량, 지연 시간, 개발 속도, 생태계, 인력, 장애 복구, 운영 비용에 따라 선택한다. 러스트는 일부 영역에서 훌륭한 선택이지만 모든 문제의 유일한 답은 아니다.

그리고 JSP와 PHP를 프론트엔드 기술이라고 분류한 것부터 기술적으로 틀렸다. 둘 다 일반적으로 서버에서 요청을 처리하고 응답을 생성하는 데 사용된다.

레거시는 숭배할 대상도, 혐오할 대상도 아니다.

측정하고, 비교하고, 유지하거나 현대화하거나 교체하면 된다. 그게 공학이다.