티스토리 뷰

 
클라우드 네이티브 애플리케이션 디자인 패턴
클라우드가 제공하는 강력한 비용 절감 효과와 확장성 덕분에 클라우드 네이티브 애플리케이션은 이미 많이 도입되었습니다. 이제는 도입보다는 어떻게 운영해야 하는지에 대한 고민이 필요한 시점입니다. 이 책은 그린 필드 및 브라운 필드 개발 모두에서 활용할 수 있는 API, 데이터, 이벤트 및 스트림으로 클라우드 네이티브 애플리케이션을 구축하는 가장 일반적인 설계 패턴에 대해 설명합니다. 또한, 규모에 맞게 비용과 시간을 효율적으로 관리할 수 있게 도와주며, 방대하고 효율적인 클라우드 네이티브 애플리케이션을 점진적으로 설계, 개발하고 구현하는 방법에 대해 소개합니다.
저자
카순 인드라시리, 스리스칸다라자 수호타얀
출판
한빛미디어
출판일
2022.06.02

Chapter 2 통신패턴

2.4 동기 메시징 패턴 구현에 사용할 수 있는 기술

요청-응답 패턴에서는 HTTP 와 같은 다양한 프로토콜을 사용해서 각기 다른 데이터 표현 방법이나 마이크로서비스 간 데이터를 주고받는 기술을 구현할 수 있다.

2.4.1 RESTful 서비스

REST 구조상에서 표현한다. REST 모델은 URI로 표현하는 방식을 사용한다. (*URI: 네트워크상에서 서비스와 객체를 고유한 주소 형태로 표현한 방식. 자원, resource라고도 일컫는다.) REST는 대부분 HTTP 프로토콜로 구현한다. HTTP 메서드 (GET, PUT, DELETE)를 통해 자원 조회/수정/삭제를 요청할 수 있다.

2.4.2 GraphQL

최근 유행하는 요청-응답 패턴 구현 기술 중 하나다. RESTful 서비스와느 달리 GraphQL은 마이크로서비스에 대한 요청을 질의 형태로 보낸다. GraphQL 에서는 어떤 데이터를 원하는지, 어떤 방식으로 할지, 어떤 데이터 형태가 필요한지를 클라이언트가 지정할 수 있다. (RESTful 서비스에서는 반면 클라이언트가 응답 받을 메시지를 결정할 수 없다)

//NOTE: 클라이언트가 원하는 메시지응답을 지정한다는 말이 무슨 뜻인지 이해안감. 예제 실행 및 RESTful 과 상세한 차이 확인 필요

*사용자와 서비스 간 상호작용에 주로 사용되는 것 (? 기술타입? 통신 종류?)

  • 질의(query) : 서버에 원하는 데이터 요청
  • 뮤테이션(mutation) : 서버에 있는 데이터의 수정 요청
  • 구독(subscription) : 비동기 이벤트 주도 통신과 같은 다른 메시징 방식 지원

GraphQL은 모바일 애플리케이션과 같은 소비자나 클라이언트에 바로 노출되는 마이크로서비스나 API, 또는 서버에 요청하는 데이터를 제어할 필요가 있는 경우 주로 사용한다. 요청-응답 패턴과 더불어, 발행자-구독자와 같은 다른 메시징 패턴도 지원한다.

2.4.3 웹 소켓

웹에서 TCP 를 구현한 것이라 할 수 있는 프로토콜이다. 양방향 통신 지원, 한번 연결하면 비동기 메시징이 가능하기 때문에 단순한 요청-응답 프로토콜에 비해 훨씬 강력하다. 웹소켓은 특정 메시지 직렬화 포맷을 강요하지 않기 때문에 아무 메시지 포맷을 사용해도 된다.

2.4.4 gRPC

RPC 기반 통신 기술이다. 서로 다른 마이크로서비스 간 연결을 마치 지역 함수 호출처럼 쉽게 만들 수 있다. 기존 RPC 기술들의 한계를 극복하고 인터넷 규모의 서비스 간 통신 기술이 가능하도록 설계되었다. 프로토콜 버퍼라는 효율적인 이진 데이터 직렬화 포맷을 통해 클라이언트와 서버 애플리케이션이 데이터를 마샬링 또는 언마샬링하도록 해준다. gRPC는 HTTP2 프로토콜에 기반하여 구현되었다. 

//NOTE: 기존 RPC 기술의 한계?, 마샬링/언마샬링? 

[그림 2-12] gRPC로 구현한 마이크로서비스 간 통신

첫 단계는 서비스 인터페이스를 정의하는 것이다. 사용자가 서비스를 어떻게 써야 하는지, 원격에서 사용자가 어떤 메서드를 호출해야 하는지, 메서드에 어떤 인자를 전달하고 어떤 메시지 포맷을 사용해야 하는지를 알려준다. gRPC는 프로토콜 버퍼를 통해 서비스 인터페이스를 정의한다.

서비스 인터페이스를 사용해서 서버와 클라이언트 스터브(stub)를 만들 수 있다. 서비스 인터페이스 정의에 명세한 메서드를 사용해서 클라이언트가 원격 메서드를 마치 로컬 함수를 호출하듯 사용할 수 있다. 기저의 gRPC 프레임워크가 메서드 호출이 서비스 규약에 맞는지 검사하고 데이터를 직렬화하며 네트워크 연결, 인증, 접근 제어, 관측 가능성을 제공하는 등의 모든 복잡한 작업을 처리해준다.

2.4.5 동기 메시징 기술 비교

//NOTE: 스트리밍 처리?


 

'IT > more and more' 카테고리의 다른 글

[용어] STG, PRD, DEV  (0) 2023.02.06
//TODO L value, R value  (0) 2023.01.30
URL and URI  (0) 2018.11.09
graceful shutdown  (0) 2018.11.09