Skip to main content
QUICK REVIEW

[논문 리뷰] Microservices: a Language-based Approach

Claudio Guidi, Ivan Lanese|arXiv (Cornell University)|2017. 04. 26.
Software System Performance and Reliability인용 수 4
한 줄 요약

이 논문은 마이크로서비스 개발을 위한 언어 기반 접근법을 주장하며, 일반 목적 프로그래밍 언어가 서비스 조합 및 조율을 위한 네이티브 추상화를 제공하지 못한다는 점을 지적한다. 서비스 조합과 조율을 위한 네이티브 추상화가 부족한 일반 목적 언어의 문제를 해결하고자, 포트, 인터페이스, 워크플로우와 같은 일급 언어 구문을 사용하여 마이크로서비스를 모델링하는 방법을 제안한다. 이는 Jolie 프로그래밍 언어를 통해 구현되었으며, 모듈성 향상, 오류 감소, 복잡한 메시지 전달 상호작용의 체계적 관리가 가능하다.

ABSTRACT

Microservices is an emerging development paradigm where software is obtained by composing autonomous entities, called (micro)services. However, microservice systems are currently developed using general-purpose programming languages that do not provide dedicated abstractions for service composition. Instead, current practice is focused on the deployment aspects of microservices, in particular by using containerization. In this chapter, we make the case for a language-based approach to the engineering of microservice architectures, which we believe is complementary to current practice. We discuss the approach in general, and then we instantiate it in terms of the Jolie programming language.

연구 동기 및 목표

  • 마이크로서비스 개발에 널리 사용되는 주류 프로그래밍 언어에서 서비스 조합을 위한 네이티브 추상화가 부족한 문제를 해결한다.
  • 컨테이너화와 같은 배포 중심 기법(예: 컨테이너화)에서 벗어나 마이크로서비스 공학을 위한 개발 중심 언어 지원으로 초점을 이동시킨다.
  • 일급 언어 구문을 통해 모듈성 있고, 조합 가능하고, 타입 안정적인 서비스 조율을 가능하게 한다.
  • 언어 기반 접근법이 일반 목적 언어에서의 비구조적 구현에 비해 더 명확하게 복잡한 워크플로우와 메시지 교환 패턴을 표현할 수 있음을 입증한다.

제안 방법

  • 포트, 인터페이스, 워크플로우와 같은 일급 언어 구문을 사용해 마이크로서비스를 모델링한다.
  • 입력 및 출력 포트에서의 수신 및 송신 연산을 통해 서비스 행동을 정의하며, 명시적인 인터페이스 정의를 사용한다.
  • 순서, 조건부, 반복, 병렬 조합과 같은 워크플로우 구조를 사용해 서비스 로직을 구성한다.
  • 다중 동시 클라이언트 세션을 관리하기 위해 관련 집합(csets)을 사용해 런타임 동적 메시지 처리를 구현한다.
  • 'provide-until' 구문을 도입하여 반복적이고 이벤트 기반의 상호작용(예: 쇼핑카트 작업)을 모델링한다.
  • 행동과 배포를 분리하여 런타임 동적 설정을 통해 포트 위치와 프로토콜을 변경할 수 있도록 한다.

실험 결과

연구 질문

  • RQ1프로그래밍 언어가 일급 추상화를 통해 마이크로서비스의 조합과 조율을 어떻게 네이티브로 지원할 수 있는가?
  • RQ2명시적인 인터페이스와 포트가 마이크로서비스 개발에서 모듈성 향상과 오류 감소에 어떤 역할을 하는가?
  • RQ3일반 목적 언어에서의 비구조적 구현에 비해 언어 기반 접근법이 메시지 전달 조율의 복잡성을 어떻게 줄일 수 있는가?
  • RQ4워크플로우 구조(예: provide-until)의 통합이 마이크로서비스 행동의 표현력을 어떻게 향상시키는가?
  • RQ5Jolie와 같은 언어가 명확성이나 정확성을 희생시키지 않고도 세밀한 서비스 조합과 런타임 프로세스 관리를 얼마나 잘 지원할 수 있는가?

주요 결과

  • Jolie 언어는 포트와 인터페이스에 대해 일급 지원을 제공하여 서비스 계약과 의존성의 명확한 명세를 가능하게 한다.
  • 'provide-until'과 같은 워크플로우 구조의 사용은 온라인 쇼핑 시스템의 고객 세션과 같은 장기적이고 상태 기반의 상호작용을 자연스럽게 모델링할 수 있게 한다.
  • 관련 집합(csets)은 다중 동시 프로세스의 런타임 관리를 가능하게 하여 메시지가 올바른 세션으로 라우팅되도록 보장한다.
  • 행동과 배포를 분리함으로써 로직을 변경하지 않고도 서비스 엔드포인트와 프로토콜의 런타임 재구성 가능성이 보장된다.
  • 언어 기반 접근법은 커뮤니케이션 구조를 명시적이고 조합 가능하게 하여 저수준 조율 로직의 오류 위험을 감소시킨다.
  • Jolie의 설계는 서비스 조합을 일급 언어적 고려사항으로 간주함으로써 모듈성 있고 확장 가능하며 유지보수 용이한 마이크로서비스 아키텍처를 가능하게 한다.

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

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

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

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