Kubernetes 이야기

dapr 본문

Kubernetes/devops

dapr

kmaster 2022. 9. 30. 18:38
반응형

 

Dapr은 개발자가 클라우드 및 에지에서 실행되고 다양한 언어 및 개발자 프레임워크를 수용하는 탄력적이고 상태 비저장 및 상태 저장 마이크로서비스를 쉽게 구축할 수 있도록 하는 이식 가능한 서버리스 이벤트 기반 런타임이다. 플러그형 구성 요소의 아키텍처를 통해 마이크로서비스 연결을 단순화하는 API를 제공한다. 통신 패턴이 서비스 간 호출이든 pub/sub 메시징이든 상관없이 Dapr은 탄력적이고 안전한 마이크로서비스를 작성하는 데 도움이 된다.

 

https://github.com/dapr/dapr

 

Dapr은 각 컴퓨팅 유닛에 사이드카(컨테이너 또는 프로세스)를 주입한다. 사이드카는 이벤트 트리거와 상호 작용하고 표준 HTTP 또는 gRPC 프로토콜을 통해 컴퓨팅 장치와 통신한다. 이를 통해 Dapr은 프레임워크나 라이브러리를 가져올 필요 없이 기존 및 미래의 모든 프로그래밍 언어를 지원할 수 있다.

 

https://docs.dapr.io/concepts/overview/


Dapr의 사이드카가 서비스 검색, 메시지 브로커 통합, 암호화, 관찰 가능성 및 비밀 관리와 같은 복잡한 문제를 처리하도록 함으로써 비즈니스 로직에 집중하고 코드를 단순하게 유지할 수다.

https://dapr.io/
https://dapr.io/

 

Dapr은 기본적으로 Kubernetes에서 실행된다. 머신의 자체 호스팅 바이너리, IoT 장치 또는 모든 시스템, 클라우드 또는 온프레미스에 주입할 수 있는 컨테이너로 실행된다.

 

특징

 

  • 플러그 가능한 공급자 및 최소 한 번 의미 체계가 있는 이벤트 기반 Pub-Sub 시스템
  • 플러그 가능한 공급자를 사용한 입력 및 출력 바인딩
  • 플러그형 데이터 저장소로 상태 관리
  • 일관된 서비스 간 검색 및 호출
  • 옵트인 상태 저장 모델: 강력한/최종 일관성, 첫 쓰기/마지막 쓰기
  • 크로스 플랫폼 가상 행위자
  • 보안 키 볼트에서 비밀을 검색하는 비밀 관리
  • 속도 제한
  • 내장된 관찰 가능성 지원
  • 전용 운영자 및 CRD를 사용하여 Kubernetes에서 기본적으로 실행
  • HTTP 및 gRPC를 통해 모든 프로그래밍 언어 지원
  • Azure, AWS, GCP의 다중 클라우드, 개방형 구성 요소(바인딩, pub-sub, state)
  • 프로세스 또는 컨테이너식으로 어디서나 실행
  • 경량(58MB 바이너리, 4MB 물리적 메모리)
  • 사이드카로 실행 - 특수 SDK 또는 라이브러리가 필요 없음
  • 전용 CLI - 쉬운 디버깅을 통한 개발자 친화적인 경험
  • Java, .NET Core, Go, Javascript, Python, Rust 및 C++용 클라이언트

 

dapr은 사이드카를 통해 opentracing 에 로그를 적재하여 service 간의 서비스 흐름을 조회할 수 있다. 이렇게 보면 서비스 호출, 네트워크 보안 및 분산 추적과 같은 기능이 포함되어 있어 Service Mesh 와 비슷한 내용하다고 볼 수 있다.

 

Dapr vs Service Mesh

 

Dapr이 서비스 메시와 공유하는 몇 가지 일반적인 기능은 다음과 같다.

  • mTLS 암호화를 통한 안전한 서비스 간 통신
  • 서비스 간 메트릭 수집
  • 서비스 간 분산 추적
  • 재시도를 통한 복원력

차이점은 

 

Dapr의 서비스 호출 API를 통해 개발자는 서비스 이름에 대한 메서드를 호출하는 반면 서비스 메시는 IP 주소 및 DNS 주소와 같은 네트워크 개념을 처리한다. 그리고 Dapr은 라우팅 또는 트래픽 분할과 같은 트래픽 동작에 대한 기능을 제공하지 않는다.

 

아래 그림은 공통된 기능과 고유한 기능을 보여주는 그림이다.

https://docs.dapr.io/concepts/service-mesh/

 

상태 관리 또는 pub/sub와 같은 하나 이상의 빌딩 블록에 Dapr을 사용하려고 하고 네트워크 보안 또는 관찰 가능성만을 위해 서비스 메시를 사용하는 것을 고려하고 있다면 Dapr이 적합하다. 이러한 경우에는 서비스 메시가 필요하지 않다.

네트워크의 트래픽이 모든 애플리케이션에 대해 암호화되어야 한다는 회사 정책이 있는 경우 Dapr과 함께 서비스 메시를 사용한다.

또한 A/B 테스트 시나리오를 위해 트래픽 분할이 필요한 경우 Dapr이 이러한 기능을 제공하지 않기 때문에 서비스 메시를 사용하는 것이 좋다.

반응형

'Kubernetes > devops' 카테고리의 다른 글

Giblab install on kubernetes  (0) 2022.10.09
Backstage  (0) 2022.10.02
DevSpace  (0) 2022.09.29
Tekton Trigger  (0) 2022.09.14
Tekton을 이용한 CI/CD  (0) 2022.09.12
Comments