오래된 시스템이나 코드베이스를 의미
현재의 최신 기술이나 표준을 따르지 않는 과거에 작성된 코드를 말한다
특징
1. 오래된 기술 스택
- 과거에 사용되던 기술로 작성되어 최신기술과 호환성이 떨어질 수 있다
- 예 : COBOL, FORTRAN, VBScript 등
2. 복잡한 코드 구조
- 코드가 점점 누적되면서 복잡도가 증가하며, 이해하기 어려운 구조가 될 수 있다
3. 문서화 부족
- 작성 당시 문서화가 잘 되어 있지 않거나 문서가 오래되어 최신 상태가 아닐 수 있다
4. 의존성 문제
- 오래된 라이브러리나 프레임워크에 의존하고 있어 최신 환경에서 동작하지 않을 가능성이 큼
5. 안정성
- 레거시 소스 오래된 만큼 안정적으로 동작하는 경우가 많지만, 유지보수나 확장이 어려움
장점
1. 검증된 안정성 :
- 오랜 시간 사용되었기 때문에 잘 작동하고 안정적일 가능성이 큽니다
2. 기존 비즈니스 로직 내장 :
- 중요한 도메인 지식이 코드에 녹아 있어, 새 시스템 설계 시 참고할 수 있습니다
3. 빠른 배포 가능성 :
- 이미 사용 중이므로 급한 상황에서 새 시스템보다 빠르게 배포할 수 있습니다
단점
1. 유지보수 어려움 :
- 복잡하거나 이해하기 어려운 구조로 인해 수정이 어렵습니다
2. 비효율적 성능 :
- 최신 기술보다 성능이 낮거나 불필요한 리소스를 사용할 가능성이 높습니다
3. 최신 기술과의 호환성 부족 :
- 현대적인 시스템과 통합하거나 최신 기술로 확장하기 어려울 수 있습니다
4. 보안 취약점 :
- 오래된 코드에는 최신 보안 패치가 반영되지 않았을 수 있습니다
레거시 소스를 사용하는 이유
1. 코드 재사용
- 기존에 잘 작동하던 코드를 다시 작성하는데 드는 비용과 시간을 절약하기 위해
2. 비용 문제
- 시스템을 완전히 새로 만드는 것보다 레거시 시스템을 유지하는 것이 더 저렴할 수 있다
3. 비즈니스 의존성
- 레거시 시스템이 현재의 핵심 비즈니스 프로세스를 처리하고 있는 경우
레거시 소스를 다룰 때의 접근 방법
1. 코드 분석 :
- 레거시 소스의 구조와 동작을 철저히 분석하여 이해하는 과정이 필요하다
2. 문서화 :
- 코드에 대한 문서화를 통해 이해를 돕고, 향후 작업을 용이하게 만든다
3. 리팩토링 :
- 작동하는 코드를 변경하지 않으면서 코드 구조를 개선하여 유지보수성을 높인다
4. 점진적 개선 :
- 전체를 한꺼번에 교체하지 않고, 일부 기능을 현대화하는 방식으로 점진적으로 개선한다
5. 테스트 추가 :
- 코드에 대한 테스트를 추가하여 의도하지 않은 동작 변화를 방지한다
레거시 소스를 새롭게 개선하는 방법
1. 전체 재작성 (Rewriting) :
- 기존 코드를 완전히 새로 작성한다
- 장점 : 최신 기술로 새롭게 설계 가능
- 단점 : 시간과 비용이 많이 듦
2. 마이그레이션 (Migration) :
- 기존 시스템에서 새로운 시스템으로 데이터를 옮기고, 점진적으로 전환한다
3. 모듈화 (Modularization) :
- 레거시 시스템의 일부 기능을 분리하여 새로운 모듈로 전환
4. API 래핑 (API Wrapping) :
- 기존 시스템 위에 새로운 인터페이스(API)를 추가하여 현대적인 접근 방식을 지원
출처 : ChatGPT