[논문 리뷰] Migrating to Cloud-Native Architectures Using Microservices: An Experience Report
이 논문은 PegahTech Co.에서 단일 어플리케이션(SSaaS)을 온프레미스에서 클라우드 네이티브 마이크로서비스 아키텍처로의 마이그레이션에 대한 경험 보고서를 제시한다. 이는 점진적인 재아키텍처 설계, 지속적 배포(Continuous Delivery) 활성화, 지원 서비스 도입을 중심으로 하며, 확장성과 내성성 향상을 달성했지만 분산 시스템 복잡성으로 인한 도전 과제가 존재함을 드러냈다. 이러한 문제를 관리하기 위해 DevOps 관행, 서비스 계약, 표준화된 개발 템플릿이 기술 부채와 팀 전문성 요구사항을 관리하는 데 기여하였다.
Migration to the cloud has been a popular topic in industry and academia in recent years. Despite many benefits that the cloud presents, such as high availability and scalability, most of the on-premise application architectures are not ready to fully exploit the benefits of this environment, and adapting them to this environment is a non-trivial task. Microservices have appeared recently as novel architectural styles that are native to the cloud. These cloud-native architectures can facilitate migrating on-premise architectures to fully benefit from the cloud environments because non-functional attributes, like scalability, are inherent in this style. The existing approaches on cloud migration does not mostly consider cloud-native architectures as their first-class citizens. As a result, the final product may not meet its primary drivers for migration. In this paper, we intend to report our experience and lessons learned in an ongoing project on migrating a monolithic on-premise software architecture to microservices. We concluded that microservices is not a one-fit-all solution as it introduces new complexities to the system, and many factors, such as distribution complexities, should be considered before adopting this style. However, if adopted in a context that needs high flexibility in terms of scalability and availability, it can deliver its promised benefits.
연구 동기 및 목표
- 기존 클라우드 마이그레이션 접근 방식이 마이크로서비스를 클라우드 네이티브 아키텍처의 핵심 구성 요소로 간주하지 않는 격차를 보완하기 위해.
- 기존 온프레미스 시스템을 현대화하여 확장성과 고가용성과 같은 클라우드의 이점을 최대한 활용하기 위해.
- 단일 어플리케이션에서 마이크로서비스 아키텍처로의 실제 마이그레이션 과정에서 발생한 실질적 과제와 교훈을 문서화하기 위해.
- 성공적인 마이크로서비스 도입을 위한 토대가 되는 지속적 배포와 DevOps 관행의 통합을 촉진하기 위해.
- 실제 경험과 점진적 진화를 바탕으로 향후 마이그레이션 프로젝트에 활용 가능한 재사용 가능한 패턴을 수립하기 위해.
제안 방법
- 세 가지 차원의 마이그레이션을 수행: 단일 어플리케이션의 재아키텍처 설계, 지원 서비스 도입(예: 서비스 레지스트리, 로드 밸런서), 지속적 배포 파이프라인 활성화.
- 로컬 개발 환경을 단순화하기 위해 Docker Compose를 사용하여 프라이빗 Docker 레지스트리에서 제공하는 종속 서비스를 오케스트레이션.
- 결합도를 낮추고 버전 충돌을 방지하기 위해 소비자 중심의 계약과 관용 독자 패턴을 적용.
- 각 지원 프로그래밍 언어별로 표준화된 서비스 개발 템플릿을 개발하여 일관성 확보 및 온보딩 오버헤드 감소.
- 마이크로서비스 생태계 내에서 서비스 통신, 구성, 내성성 패턴을 단순화하기 위해 Spring Cloud와 Netflix OSS를 활용.
- 모든 세 차원을 동시에 점진적이고 반복적인 접근 방식으로 진화시켜 교란을 최소화함.
실험 결과
연구 질문
- RQ1시스템 안정성을 유지하면서 온프레미스 단일 어플리케이션을 마이크로서비스 기반 클라우드 네이티브 아키텍처로 효과적으로 마이그레이션할 수 있는 방법은 무엇인가?
- RQ2마이크로서비스 도입으로 인해 발생하는 분산, 배포, 팀 전문성 측면의 핵심 과제는 무엇인가?
- RQ3지속적 배포와 DevOps 관행을 마이크로서비스 마이그레이션에 통합하여 유연성과 신뢰성을 확보할 수 있는가?
- RQ4서비스 계약과 버전 관리 전략은 서비스 진화 과정에서 고장을 최소화하는 데 어떤 역할을 하는가?
- RQ5표준화된 개발 템플릿과 도구는 다중 프로그래밍 언어 기반 마이크로서비스 시스템에서 복잡성 감소와 유지보수성 향상에 어느 정도 기여하는가?
주요 결과
- 마이크로서비스는 일률적인 해결책이 아니며, 분산 및 운영 복잡성이 심각하게 증가하므로 신중한 관리가 필요하다.
- 개발 환경에서의 배포가 다수의 종속 서비스를 실행해야 하므로 어려워지나, Docker Compose가 이를 효과적으로 완화하였다.
- 시스템 안정성에 핵심적인 역할을 하는 서비스 계약은 버전 관리보다 소비자 중심의 계약과 관용 독자 패턴이 고장을 줄이는 데 더 효과적이다.
- 분산 시스템 개발은 클라우드 네이티브 패턴, 서비스 내성성, DevOps 관행에 익숙한 숙련된 엔지니어가 필요하다.
- 표준화된 서비스 개발 템플릿은 다중 프로그래밍 언어 기반 마이크로서비스 환경에서 온보딩 시간을 크게 줄이고 아키텍처 이격을 방지한다.
- 지속적 배포와 강력한 운영 도구의 동시 도입 덕분에 마이그레이션은 확장성과 내성성 향상에 성공했지만, 이는 유일한 조건이었다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.