웹기반 백엔드 레가시 구조개선에 대한 고민 및 접근 전략

in it •  7 years ago 

기존에 사용하는 레가시를 개선하려는 이유는 다음과 같습니다.

1.새로운 기능을 빠르게 추가하기 위한 최신 오픈소스 라이브러리 활용이 어렵다.
2.보안에 취약하다.

그러기에 최신 오픈소스 라이브러리를 사용 할 수 있는 환경을 만들고 유지하는 것이 중요합니다.

때를 놓치면 기존 시스템에서 개선을 하는 것보다 아예 새로운 시스템에서 하는 것이 더 빠르고 안전할 수 있습니다.

저희는 클라이언트 라이브러리를 만든 회사의 라이브러리로 서비스를 만들어야 하는 의존성도 안고 있습니다.

그래서 한방에 모든 것을 다 해결하기 보다는 기존 시스템을 유지하면서 점진적으로 마이그레이션 하는 방식을 선택했습니다.

다음과 같은 과정으로 진행합니다. (여러가지 사례 중에 하나의 사례를 소개합니다.)

1.우선 동일한 소스의 새로운 시스템을 하나 더 복제합니다.
2.새로운 시스템에는 최신 라이브러리의 의존성을 해결합니다.
3.UI들을 새로운 시스템의 서비스로 바라보게 합니다. (필요하면 최신 라이브러리로 리팩토링합니다.)
4.기존 기능을 리팩토링 하여 최신 기능의 URL을 바라보게 합니다. (기존 기능은 제거합니다.)
5.클라이언트를 새로운 도메인으로 바라보게 합니다.(웹이라 도메인 변경에 부담이 없어서 모바일은 또 다른 전략을 세워야 합니다.)
6.신규 기능은 새로운 시스템에서만 추가하게 합니다.

이렇게 되면 자연히 새로운 시스템으로 기능들이 옮겨지고 되고 최신 환경에서 개발을 진행할 수 있습니다.

이때 중요한 역할이 APIGateway입니다.

APIGateway는 중간에서 앞에서는 변하지 않는 엔트포인트를 제공하고 레가시로 들어오는 요청을 가로채어 용도와 상황에 맞게 라우팅을 합니다.

라우팅은 Host전체를 라우팅할 수 있고 Uris나 Methods를 조합하여 선택적으로 라우팅 할 수 있습니다.

개발자로서는 URL 라우팅이 낯설은 부분이 있을 수도 있는데 라우팅하는 설정만 잘 관리하면 커다란 문제없이 구조개선을 진행 할 수 있습니다.

그리고 롤백하기도 쉽니다.

라우팅은 서비스의 엔드포인트 기준으로 하고 필요에 따라 새로운 DB를 바라보는 서비스를 만들 수도 있습니다. (점점 골치 아파지기 시작합니다.^^)

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!