소프트웨어 개발의 세계에서, 복잡한 레거시 시스템의 무게는 개발자의 목에 걸린 사과처럼 느껴질 수 있습니다. 새로운 기능을추가하는 것은 급격한 변화속에서 개발자의 실력을 향상시키고, 유지 보수는 급하게 개발했던 과정이 스쳐 지나가며 기초를 충실히 해야 한다는 마음을 느끼게 만듭니다. 기존 개발에서 완전히 새롭게 개발하는 방식은 솔깃해 보일 수 있지만, 현실적으로 개발자나 사업자에게 선택할 수 있는 최악의 수라고 생각이 듭니다.
오늘 소개할 기술은 스트랭글러 피규어 패턴(The Strangler Fig: A method for Legacy System Migration)이 최근 문제를 해결할 수 있는 강력한 해결책으로 등장합니다.
레거시 시스템의 부담
한때 혁신적으로 개발했지만 시간이 지남에 따라 기존 시스템으로 변화한 시스템은 앞으로 나아가려는 개발에 큰 장애물이 될수 있습니다. 코드베이스가 엉키고, 문서화가 희미해지고, 새로운 기능을 추가하는 것은 개발자에게 허리케인에 바늘에 꿰는 것과 비슷하게 느껴집니다. 이렇게 복잡해지는 것은 혁신을 억압할 뿐만 아니라 버그와 보안 취약성의 위험을 증가시킵니다.
단계적 마이그레이션
레거시 시스템을 해결하기 위한 한 가지 일반적인 접근 방식은 새로운 플랫폼으로 단계적으로 마이그레이션하는 것입니다. 이작업에는 레거시 시스템의 파트별로 꼼꼼하게 잘라내어 최근에 개발한 아키텍처에 이식하는 작업입니다. 이 작업을 통해 통제된전환이 가능하지만, 문제는 기존 시스템과 새로운 시스템이 함께 공존하는 "이중성"의 시기가 만들어집니다.
• 두 개의 코드베이스 유지: 개발 팀은 이제 두 개의 개별 코드베이스를 유지하고 업데이트해야 하는 부담에 직면해 있으며, 이는리소스를 크게 낭비할 수 있습니다.
• 사용자 혼란: 일부 기능은 이전 시스템에 있고 다른 기능은 새 시스템으로 전환되었기 때문에 사용자는 기능에 대해 혼돈이 있을 수 있습니다.
• 분리된 사용자 경험: 사용자가 두 시스템과 상호 작용하면서 사용자 경험이 파편화되어 잠재적으로 좌절감을 초래할 수 있습니다.
스트랭글러 패턴(The Strangler Fig Pattern)
스트랭글러 무화과 패턴은 이러한 문제에 대한 우아한 해결책을 제공합니다. 숙주 나무를 천천히 감싸고 궁극적으로 대체하는식물인 스트랭글러 무화과에서 영감을 받은 이 패턴은 레거시 시스템 내에서 점진적인 기능 대체를 옹호합니다.
작동 방식은 다음과 같습니다.
Façade:The Gatekeeper(파사드:문지기)
스트랭글러 패턴의 중요한 구성 요소는 "파사드"입니다.
이 계층은 사용자에 요청이 있을 때 파사드가 사용자도 모르게 인터페이스의 요청을 가로채는 게이트 키퍼 역할을 합니다. 그런다음 파사드는 액세스되는 기능을 기반으로 요청을 지능적으로 라우팅합니다:
* *레거시 기능:** 요청이 레거시 시스템에 여전히 존재하는 기능(예: AssetCapture 또는 EventInterception)과 관련된 경우, 외관은 해당 요청을 이전 시스템 내의 적절한 구성 요소로 안내합니다.
* *현대화된 기능:** 요청이 새 시스템으로 이미 마이그레이션된 기능과 관련된 경우 파사드는 해당 기능을 현대 아키텍처의 해당 서비스로 라우팅합니다.
스트랭글러 패턴의 장점
• 더 나은 사용자 환경: 사용자들은 백엔드에서 진행 중인 마이그레이션에 대해 행복하게도 알지 못합니다. 기능이 레거시 시스템에 있든 현대 시스템에 있든 관계없이 단일 사용자 인터페이스와 계속해서 상호 작용합니다.
• 위험 감소: 기능을 점진적으로 마이그레이션함으로써 버그나 중단 발생 위험을 최소화할 수 있습니다. 분리된 새로운 기능 내에서 통제된 방식으로 문제를 해결할 수 있습니다.
• 단계적 은퇴: 기능이 새 시스템으로 점진적으로 마이그레이션됨에 따라 레거시 시스템은 점점 더 중요하지 않게 됩니다. 이를통해 서비스 중단을 유발하거나 사용자에게 영향을 미치지 않고 최종적으로 레거시를 제거할 수 있습니다.
스트랭글러 패턴에 대한 고려사항 및 위험 완화
스트랭글러 패턴은 매력적인 접근 방식을 제공하지만, 이에 대한 고려 사항이 없는 것은 아닙니다:
• 파사드의 복잡성: 파사드 내의 논리는 레거시 시스템 및 새 시스템과 적절한 라우팅 및 원활한 통합을 보장하도록(문지기 역할을 잘하도록) 세심하게 설계되어야 합니다.
• 테스트 과제: 테스트는 두 시스템 간에 기능이 분리됨에 따라 더욱 복잡해집니다. 개발자는 기존의 구성 요소와 새로운 구성 요소를 모두 포괄하는 포괄적인 테스트 전략을 고안해야 합니다.
• 장기적인 약속: 스트랭글러 패턴은 완전한 반복 교체 방식에 비해 마이그레이션을 완료하는 데 더 긴 기간이 필요할 수 있습니다.
스트랭글러 패턴은 레거시 시스템의 부담으로 어려움을 겪고 있는 개발자들에게 강력한 도구를 제공합니다. 이 접근 방식을 사용하면 보다 현대적인 강력한 시스템으로 원활하게 전환할 수 있습니다.
Conclusion
스트랭글러 패턴: 레거시 시스템 마이그레이션 방법에 대해 알아보았습니다. 뉴놉에서 스트랭글러 패턴 방식으로 유지보수를 진행하고 있습니다. 또한 뉴놉은 미국 국방에서 사용하는 CMMI 5단계 수준(최고수준)으로 개발 프로젝트를 관리하고 있습니다. 개발 문의는 AI기반 WEB APP 개발 솔루션 뉴놉에 의뢰하세요. #스트랭글러패턴 #스트랭글러 #레거시시스템 #마이그레이션 #AI #WEB #APP #개발외주 #개발에이전시 #개발아웃소싱 #뉴놉 #newnop
Janith Dissanayake
NEWNOP GLOBAL CTO