PARA/03_Resources/R006_잡다한_것들/글쓰기/레거시 코드는 안 아름다움.md

레거시 코드는 안 아름다움

개요

레거시 코드의 아름다움 - 레거시 존중의 필요성이라는 글에서 레거시 코드의 가치를 논했다.

그러나 이는 '레거시 코드: 희망편'이라고 할 수 있으며,
긍정적인 측면을 과장했다는 점을 인정해야 한다.
현실에서 레거시 코드의 문제점은 결코 쉽게 해결할 수 있는 것이 아니다.

문제점

  1. 기술 부채의 증가

    • 문제점:
      시간이 지날수록 기술 부채가 눈덩이처럼 불어난다.
      "나중에 고치자"가 영원한 "나중에"가 되곤 한다.
    • 현실
      새 기능 추가 시 기존 코드를 건드리지 않으려고 꼼수를 쓰다 보면, 코드는 점점 더 복잡해진다.
  2. 유지보수의 어려움

    • 문제점:
      문서화 부족, 복잡한 의존성, 일관성 없는 코딩 스타일로 인해 코드 이해가 어렵다.
    • 현실:
      "이 함수가 뭘 하는 건지 3일째 파악 중입니다"라는 말이 팀 내에서 농담이 아닌 현실이 되곤 한다.
  3. 보안 취약성

    • 문제점:
      오래된 라이브러리와 프레임워크는 알려진 보안 취약점에 노출될 수 있다.
    • 현실:
      "업데이트하면 다른 게 깨질까봐 걱정돼요"라는 말이 보안 업데이트를 미루는 핑계가 되곤 한다.
  4. 성능 및 확장성 제한

    • 문제점:
      레거시 시스템은 현대적인 대규모 트래픽이나 데이터를 처리하기에 적합하지 않을 수 있다.
    • 현실:
      서비스가 성장할수록 야근의 주된 이유가 "서버가 또 죽었어요" 로 바뀌는 경험을 하게 된다.
  5. 개발자 사기 저하

    • 문제점:
      최신 기술을 배우고 싶어하는 개발자들의 의욕이 꺾이기 쉽다.
    • 현실:
      "이 기술, 스택 오버플로우에 질문해도 답변이 안 달려요"라는 농담 섞인 불평이 나오기 시작한다.
  6. 비즈니스 대응력 저하

    • 문제점:
      새로운 비즈니스 요구사항에 신속하게 대응하기 어려워진다..
    • 현실:
      "그 기능 추가하려면 6개월은 걸릴 것 같아요"라는 말이 비즈니스 팀의 한숨을 자아낸다.
  7. 높은 유지 비용

    • 현상:
      레거시 시스템 유지에 드는 비용이 점점 증가한다.
    • 아이러니:
      "새로 만드는 게 더 싸겠어요"라는 말이 농담이 아닌 진지한 제안으로 들리기 시작한다.

결론

레거시 코드는 양날의 검과 같다.
그 안에 담긴 경험과 안정성은 분명 가치가 있지만, 동시에 현대 소프트웨어 개발의 발목을 잡는 요인이 될 수 있다.

중요한 것은 균형 잡힌 시각이다.
레거시 코드의 가치를 인정하면서도, 점진적인 개선과 현대화를 위한 노력을 게을리하지 말아야 한다.
때로는 레거시 코드와 씨름하며 얻는 경험이 우리를 더 나은 개발자로 만들어주기도 하니까.

그러니 레거시 코드를 대할 때는 인내심을 가지고, 배움의 자세로 접근하되, 개선의 여지는 늘 열어두는 것이 좋겠다.
그리고 가끔은... 그냥 깊은 한숨을 내쉬어도 괜찮지 않을까?

댓글

첫 번째 댓글을 남겨보세요.