테크레시피

버전 1.0 올린 MS 마이크로 서비스 개발 지원 오픈소스

마이크로소프트의 오픈소스 소프트웨어인 Dapr(Distributed Application Runtime)이 버전 1.0에 도달했다. Dapr은 마이크로 서비스 개발을 지원하는 런타임으로 알파 버전이 공개된 2019년 10월부터 1년 반 이후 제품용으로 출시됐다.

마이크로 서비스를 개발할 때에는 응용 프로그램 통신을 어떻게 설계하느냐가 중요하다. 지금까지 마이크로 서비스 개발에 있어선 각 응용 프로그램과 데이터 저장소 등 요소가 서로 직접 통신을 하고 있었기 때문에 단일 마이크로 서비스화와 애플리케이션 교체가 곤란하거나 새로운 응용 프로그램 도입 장벽이 되기도 한다.

Dapr을 한마디로 표현하면 마이크로 서비스 역할과 기능에 대해 정리한 서비스로 응용 프로그램에 통신 기능을 투명하게 제공해주는 런타임이 있다. 도입하면 각 응용 프로그램이 통신 업체에 의존하지 않아 다른 환경에 서비스를 이동하거나 새로운 애플리케이션을 도입하기 쉬워진다. 예를 들어 응용 프로그램과 데이터 저장소, 통신을 Dapr을 이용해 테스트 환경에서 레디스(Redis)를 프로덕션 환경에선 클라우드 데이터베이스와 같은 구분이 응용 프로그램 코드를 변경하지 않고도 가능하다.

Dapr 기능은 일체가 된 프레임워크가 아닌 통신 유형별로 빌딩 블록으로 제공하는 게 특징이다. 예를 들어 상태 관리 기능만 사용하고 싶을 경우 Dapr 모든 기능을 도입하지 않고도 한 블록을 도입하는 것만으로 요구 사항을 충족할 수 있다. 응용 프로그램은 자바와 파이썬, Go, 자바스크립트, 러스트 등 언어용으로 제공되는 SDK를 사용해 HTTP 또는 gRPC를 이용해 Dapr에 액세스하는 구조다. Dapr은 쿠버네티스(Kubernetes)에서 이용을 전제로 하지 않지만 쿠버네티스에서 이용할 경우 Dapr 컨테이너가 팟에 사이드카로 삽입된다.

마이크로 서비스 응용 프로그램간 통신을 관리하는 시스템으로는 이스티오(Istio)로 대표되는 서비스망이 있다. 서비스 메쉬와 Dapr은 분산 서비스 트레이싱 기능과 인식 출력 기능 등 공통 부분이 있지만 전제가 되는 사상은 크게 다르다. 서비스 메쉬는 마이크로 서비스 전체 네트워크 관리를 주 목적으로 하는 반면 Dapr은 실행 환경에 의존하지 않는 휴대용 마이크로 서비스 개발을 지원한다는 목적이 있다.

이런 Dapr이 2019년 10월 알파 바전 공개에서 1년 반 뒤인 2021년 2월 17일 버전 1.0에 도달한 것이다. 버전 1.0은 제품용(production ready)으로 자리매김하고 있으며 개발 단계에서 제품 단계에 이른 것이다. Dapr 깃허브 저장소 기여자 수는 알파 릴리스에서 꾸준히 증가했고 2021년 2월 700명에 달한다. Dapr은 알리바바 클라우드와 하시코프(HashiCorp), 칼자이즈 등 기업도 개발에 참여하고 있다. 예를 들어 Dapr의 PHP용 SDK는 오토매틱에 적을 둔 엔지니어가 개발한 것이다. 또 칼자이즈는 Dapr을 이미 자사 시스템에 도입하고 있다고 한다.

Dapr은 버전 1.0에 도달하수 있었던 것에 대해 커뮤니티 내 노력의 증거라고 밝혔다. 앞으로는 기존 빌딩 블록을 강화해 나가는 동시에 클라우드 설정을 읽거나 쓰는 새로운 빌딩 블록 제공도 고려하고 있다고 한다. 관련 내용은 이곳에서 확인할 수 있다.