마이크로서비스와 컨테이너, 클라우드에서 혁신적인 변화
마이크로서비스와 컨테이너 기술은 현대 애플리케이션의 생성, 배포 및 관리 방식을 혁신하고 있다. 하지만 이러한 기술을 운용하는 과정에서 개발자는 서비스 탐색, 상태 관리, 관측성 등 다양한 복잡성을 함께 처리해야만 한다.
Dapr: 클라우드 및 엣지 환경의 마이크로서비스를 위한 솔루션
Dapr(Distributed Application Runtime)은 클라우드와 엣지 환경에서 마이크로서비스를 구축하기 위한 오픈 소스 런타임이다. 서비스 탐색, 상태 관리, 퍼블리시-구독 메시징, 관측성 등 플랫폼 독립적인 빌딩 블록을 제공하여 개발자들이 인프라 작업에 대한 부담을 줄이고 비즈니스 로직에 집중할 수 있도록 돕는다. Dapr은 Cloud Native Computing Foundation(CNCF) 내에서 성숙한 수준으로 발전했으며, 다수의 기업들에 의해 사용 중이다.
Amazon EKS와의 결합: 마이크로서비스 채택 가속화
Dapr은 Amazon Elastic Kubernetes Service(Amazon EKS)와 결합하여 마이크로서비스와 컨테이너의 채택을 가속화한다. Amazon EKS는 Kubernetes 클러스터 관리의 용이성을 제공하며, 애플리케이션 워크로드 변화에 따라 손쉽게 확장할 수 있다. 이러한 결합으로 개발자는 인프라 구조에 대한 부담 없이 비즈니스 로직 작성에 집중할 수 있다.
Dapr로 Amazon EKS에서 마이크로서비스 개발 단순화
첫 번째로 다룰 주요 빌딩 블록 두 가지는 서비스 호출과 상태 관리이다.
서비스 호출
마이크로서비스 간의 원활하고 신뢰할 수 있는 통신은 필수적이다. Dapr의 서비스 호출 기능을 통해 gRPC, HTTP/HTTPS 같은 업계 표준 프로토콜을 사용하여 서비스 간의 통신을 쉽게 할 수 있다. Dapr은 서비스 등록 및 탐색, 요청 재시도, 암호화, 접근 제어, 분산 추적 등을 처리한다.
상태 관리
Dapr의 상태 관리 빌딩 블록은 애플리케이션 상태 작업을 단순화한다. Redis, AWS DynamoDB, Azure Cosmos DB와 같은 기저 상태 저장소에 관계없이 일관된 API를 제공하여 상태 데이터 저장 및 검색이 가능하다. 이를 통해 개발자는 상태 저장소 관리 및 확장 복잡성 없이 상태있는 애플리케이션을 구축할 수 있다.
사전 조건
애플리케이션을 따라 진행하기 위해 AWS 계정, Amazon EKS IAM 역할 및 서비스 연결이 된 역할과 관련된 권한을 갖춘 IAM 사용자 권한이 필요하다.
애플리케이션 아키텍처
애플리케이션에 포함된 두 개의 마이크로서비스는 주문 데이터를 생성하는 Python 앱과 주문을 처리하는 Node.js 앱이다. Python 앱은 Node.js 앱의 /neworder 엔드포인트를 호출하고, Node.js 앱은 주문 데이터를 상태 저장소(Amazon ElastiCache)에 저장한 뒤 주문 ID를 반환한다.
Dapr의 서비스 호출로 인해 Python 앱은 서비스 탐색, API 표준화, 보안 등을 따로 관리할 필요 없이 Node.js 앱과 통신할 수 있다. Dapr은 이러한 모든 크로스 컷팅 문제를 처리하므로 개발자는 핵심 비즈니스 로직에 집중할 수 있다.
배포 절차
-
EKS 클러스터 생성 및 확인:
- AWS CLI, eksctl, kubectl, AWS IAM Authenticator 설치.
- eksctl로 EKS 클러스터 생성.
- kubectl로 클러스터에 연결하고 노드 준비 확인.
-
EKS 클러스터에 DAPR 설치:
- DAPR CLI 설치 및 초기화.
-
DAPR 상태 저장소로 Amazon ElastiCache 구성:
- 마이크로서비스의 상태 데이터 저장을 위해 Amazon ElastiCache 생성 및 보안 그룹 설정.
-
샘플 애플리케이션 실행:
- 샘플 애플리케이션의 GitHub 저장소 클론.
- ElastiCache 엔드포인트에 대한 redis-state.yaml 구성 파일 생성.
- 노드 및 Python 마이크로서비스 배포.
-
애플리케이션 배포 확인 및 테스트:
- Python 앱이 주문을 생성하고 Node.js 앱이 요청을 받아 상태 저장소에 데이터를 기록하는지 확인.
- 주문 처리 검증을 위한 관련 엔드포인트 확인.
결론
Dapr과 Amazon EKS는 마이크로서비스 개발에 강력한 조합을 제공한다. Dapr은 크로스 컷팅 문제를 단순화하고, EKS는 Kubernetes 인프라를 관리하여 개발자가 핵심 비즈니스 로직에 집중할 수 있게 한다. 이를 통해 확장 가능하고, 견고하며 관찰 가능한 애플리케이션을 구축하여 운영 부담을 줄인다.
출처 : 원문 보러가기