Skip to main content
QUICK REVIEW

[논문 리뷰] Developing a Process in Architecting Microservice Infrastructure with Docker, Kubernetes, and Istio

Yujing Wang, Darrel Ma|arXiv (Cornell University)|2019. 11. 06.
Software System Performance and Reliability참고 문헌 2인용 수 4
한 줄 요약

이 논문은 Docker, Kubernetes, Istio를 사용하여 단일 모듈형 Java Spring 애플리케이션을 마이크로서비스 아키텍처로 마이그레이션하기 위한 삼단계로 구성된, 코드베이스 및 플랫폼에 종속되지 않는 프로세스를 제안한다. 이 방법은 컨테이너화를 통한 안정적이고 확장 가능한 배포, Istio를 통한 서비스 메시 기반의 통신, Kubernetes ConfigMaps를 통한 구성 관리, 그리고 GitOps 파이프라인을 통한 자동 배포를 통해 상호 서비스 간 지연 시간을 최적화된 호출 배치를 통해 감소시킨다.

ABSTRACT

As an application usage grows, its owner scales up vertically by replacing old machines with more powerful ones. This methodology is expensive and leads to resource waste. In response to the business needs, internet giants have developed the microservice architecture, which lets developers divide up their application into smaller units that can be hosted on multiple machines, thus enabling horizontal scale up. We propose a triphasic incremental process to transform a traditional application into a microservice application that guarantees stability during the operation. Then we demonstrated such methodology in a prototype microservice application based on an existing monolithic application. First, the developer splits a monolithic application into atomic services and aggregated services. Second, these services are packaged, containerized, and then deployed on Kubernetes. During this stage, Istio is deployed on the Kubernetes cluster to establish pod level communications, delegate traffic flows and filter requests, and enable the autoscaler. Other external add-ons, such as database connections, are defined in service entry. In the last stage, we developed an algorithm guideline to minimize inter-service calls by compiling all needed calls into a list and perform one finalized call. Although it increases memory usage, it avoided the wait time incurred during interservice calls. We then investigated managing configurations using config maps, recommended a pipeline being developed to perform automatic rollover.

연구 동기 및 목표

  • 단일 모듈형 자바 스프링 애플리케이션을 마이크로서비스 아키텍처로 전환하기 위한 반복 가능하고 확장 가능하며 이식 가능한 방법론의 부족을 해결하기 위해.
  • 벤더나 프로그래밍 언어에 종속되지 않는 안정적이고 점진적인 마이그레이션을 가능하게 하기 위해.
  • 시스템의 신뢰성과 성능을 유지하면서도 상호 서비스 간 통신 오버헤드를 최소화하기 위해.
  • GitOps 원칙을 활용하여 구성 관리와 지속적 배포를 자동화하기 위해.
  • 기존 데이터 인fra구조와의 호환성을 확보하고 향후 확장성을 지원하기 위해.

제안 방법

  • 모듈화 가능한 분리 가능한 서비스와 집계 서비스로 단일 모듈을 분할하여 모듈화된 분해를 가능하게 한다.
  • Docker를 사용해 서비스를 컨테이너화하고 Kubernetes를 통해 오케스트레이션하여 동적 확장 및 관리를 가능하게 한다.
  • Istio를 서비스 메시로 통합하여 서비스 간 통신, 트래픽 라우팅, 요청 필터링, 정의된 임계값 기반 자동 스케일링을 관리한다.
  • Kubernetes ConfigMaps를 사용해 구성 정보를 외부화하여 애플리케이션 코드 재배포 없이도 원격에서 업데이트할 수 있도록 한다.
  • GitOps 파이프라인(예: Weave Flux 사용)을 구현하여 원격 Git 저장소의 구성 변경 사항이 발생할 경우 자동으로 파드를 재시작하도록 한다.
  • 상호 서비스 간 호출을 배치 처리하는 알고리즘을 개발하여 라운드트립 호출 수를 줄이고 O(2(N + L))의 런타임 복잡도를 달성한다.

실험 결과

연구 질문

  • RQ1단일 모듈형 애플리케이션을 최소한의 교란으로 점진적으로 마이크로서비스 아키텍처로 전환할 수 있는 방법은 무엇인가?
  • RQ2Kubernetes 기반 마이크로서비스 환경에서 서비스 디스커버리 및 상호 서비스 간 통신을 효과적으로 관리하는 방법은 무엇인가?
  • RQ3기존 데이터 인fra구조와 호환되면서도 효율적인 읽기/쓰기 성능을 보장하는 데이터 전략은 무엇인가?
  • RQ4구성 관리를 코드에서 분리하고 지속적 배포를 자동화하기 위해 어떤 방법을 사용할 수 있는가?
  • RQ5기능을 희생시키지 않으면서도 상호 서비스 간 통신 오버헤드를 최소화하는 기법은 무엇인가?

주요 결과

  • 삼단계 프로세스는 Docker, Kubernetes, Istio를 활용하여 단일 모듈형 자바 스프링 애플리케이션을 확장 가능하고 컨테이너 기반의 마이크로서비스 아키텍처로 성공적으로 전환했다.
  • Istio는 정의된 임계값 기반으로 동적 트래픽 관리, 요청 필터링, 자동 스케일링을 가능하게 했다.
  • ConfigMaps는 코드와 분리된 외부화된 구성 정보를 제공했으며, 버전 관리가 가능했다.
  • GitOps 파이프라인은 수동 조작 없이도 완전히 자동화되고 재진행 가능한 구성 배포를 가능하게 했다.
  • 배치 알고리즘은 여러 호출을 하나의 요청으로 통합하여 상호 서비스 간 호출 지연 시간을 줄였고, 라운드트립 지연을 최소화함으로써 성능 향상을 이뤘다.
  • 배치로 인해 메모리 사용량이 약간 증가했지만, 대기 시간 감소로 얻는 성능 향상이 비용을 상쇄했다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.