반응형
블로그 목적
- 마이크로서비스에서의 상호작용 스타일에 대해서 정리해본다.
마이크로서비스에서 상호작용스타일은?
- 서비스에 적용할 수 있는 IPC 기술은 많이 존재함.
- 동기 요청/응답 기반의 통신 매커니즘
- REST(Representational State Transfer)
- https://ko.wikipedia.org/wiki/REST
- REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다. 이 용어는 로이 필딩(Roy Fielding)의 2000년 박사학위 논문에서 소개되었다. 필딩은 HTTP의 주요 저자 중 한 사람이다. 이 개념은 네트워킹 문화에 널리 퍼짐.
- gRPC(gRPC Remote Procedure Calls)
- https://ko.wikipedia.org/wiki/GRPC
- gRPC(gRPC Remote Procedure Calls[1])는 구글이 최초로 개발한 오픈 소스 원격 프로시저 호출 (RPC) 시스템이다. 전송을 위해 HTTP/2를, 인터페이스 정의 언어로 프로토콜 버퍼를 사용하며 인증, 양방향 스트리밍 및 흐름 제어, 차단 및 비차단 바인딩, 취소 및 타임아웃 등의 기능을 제공함.
- REST(Representational State Transfer)
- 비동기 메시지 기반의 통신 매커니즘
- AMQP
- https://ko.wikipedia.org/wiki/AMQP
- AMQP(Advanced Message Queuing Protocol, 어드밴스트 메시지 큐잉 프로토콜)는 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜이다. AMQP의 정의 기능들은 메시지 지향, 큐잉, 라우팅(P2P 및 발행-구독), 신뢰성, 보안임.
- STOMP
- http://stomp.github.io/stomp-specification-1.2.html#Abstract
-
STOMP 는 Ruby, Python, Perl 과 같은 스크립트 언어를 위해 고안된 단순한 메시징 프로토콜이다. 그것은 메시징 프로토콜에서 일반적으로 사용되는 패턴들의 일부를 제공한다. STOMP 는 TCP 나 WebSocket 과 같은 신뢰성있는 양방향 streaming network protocol 상에 사용될 수 있음.
- AMQP
- 메시지 포맷 스타일도 많이 존재함.
- 인간이 읽을 수 있는 텍스트 포멧
- JSON
- https://ko.wikipedia.org/wiki/JSON
- JSON(제이슨[1], JavaScript Object Notation)은 속성-값 쌍( attribute–value pairs and array data types (or any other serializable value)) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포맷이다. 특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다. 자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합함.
- XML
- JSON
- 효율이 우수한 binary 포맷
- Avro
- https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%95%84%EB%B8%8C%EB%A1%9C
- 아브로(Avro)는 아파치의 하둡 프로젝트에서 개발된 원격 프로시저 호출(RPC) 및 데이터 직렬화 프레임워크이다. 자료형과 프로토콜 정의를 위해 JSON을 사용하며 콤팩트 바이너리 포맷으로 데이터를 직렬화한다. 주 용도는 아파치 하둡에서 클라이언트→하둡 서비스에 대해 영구 데이터를 위한 직렬화 포맷과 하둡 노드 간 통신을 위한 와이어 포맷을 둘 다 제공하는 것
- Protocol Buffer
- https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C_%EB%B2%84%ED%8D%BC
- 프로토콜 버퍼(Protocol Buffers)는 구조화된 데이터를 직렬화하는 방식이다. 유선이나 데이터 저장을 목적으로 서로 통신할 프로그램을 개발할 때 유용함.
- Avro
그럼, 상호작용 스타일에 대해서 여러가지 기준으로 분류해보자.
- 하나, 1:1 / 1:n 에 대한 여부
- 1:1 (one-to-one)
- 클라이언트 요청을 정확히 한 서비스가 처리함.
- 1:n (one-to-many)
- 클라이언트 요청을 여러 서비스가 협동하여 처리함.
- 1:1 (one-to-one)
- 둘, 비동기 / 동기 여부
- 비동기(asynchronous)
- 클라이언트가 블로킹하지 않음.
- 응답은 즉시 전송되지 않아도 될경우 사용함.
- 동기(synchronous)
- 클라이언트가 대기 중에 블로킹할 수 있음.
- 응답은 제 시간에 전송되어야 할 경우 사용함.
- 비동기(asynchronous)
그럼, 1:1(one-to-one) 에 대한 상호작용 스타일에 대해서 알아보자.
- 하나, 요청/응답(request / response)
- 클라이언트가 서비스에 요청을 하고 응답을 기다림.
- 서비스가 서로 강하게 결합되는 상호 작용 스타일
- 둘, 비동기요청/응답(asynchronous request / response)
- 클라이언트가 서비스에 요청을 하고 해당 서비스는 비동기적으로 응답함.
- 해당 클라이언트는 대기 중에 블로킹 하지 않으며, 서비스는 오랫동안 응답하지 않을 수 있음.
- 셋, 단방향 알림 (one-way notification)
- 클라이언트가 서비스에 일방적으로 요청만 하고, 서비스는 해당 요청에 응답을 보내지 않음.
그럼, 1:n(one-to-many) 에 대한 상호작용 스타일에 대해서 알아보자.
- 하나, 발행/구독 (publish / subscribe)
- 클라이언트는 알림 메시지를 발행하고, 해당 메시지에 관심있는 1개 이상의 서비스가 메시지를 소비하는 스타일.
- 단, 발행은 하였으나, 구독하지 않는 서비스가 있을 수 있음.
- 둘, 발행/비동기 응답 (public / asynchronous response)
- 클라이언트는 요청 메시지를 발행하고, 주어진 시간동안 관련 서비스가 응답하길 기다리는 스타일.
결론
- 마이크로서비스에서의 상호작용 스타일는 여러가지 경우로 분류가능함
- 오늘도, 마이크로서비스에서의 상호작용 스타일에 대해서 공부 및 정리 완료! 감사합니다.
- 오늘의 명언 한마디
- 진리를 마음에서 구하지 않기 때문에 어리석고 깨달음이 없게 된다.
- 배운 것을 익히지 않기 때문에 위험하고 불안하게 된다.
- 널리 배우고 깊이 묻고 신중하게 생각하고 분명하게 판단하고 독실하게 행하는 것,
- 이 다섯가지 중에 한가지라도 없다면, 그것은 학문이 아니다.
- 주희 지음, "사서집주" 중에서
- 나의 목표 및 다짐을 항상 내곁에 두기.
- 목표
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 현재 내가 가진 능력으로 누군가에 도움이 될 수 있을까? 에 대해서 항상 생각하기
- 나의 강점을 바탕으로 나의 일을 잘해냄으로써 타인과 사회를 아릅답게 만든다.
- 목표를 이루기 위한 실천방안
- 꾸준한 블로깅/기록법/독서법으로 넘버원이 아닌 온리원이 되보자.
- 천사불여일행(千思不如一行)을 항상생각하며 체화 및 각인시키자.
- "천번 생각하는것보다 한번 행동하는 것이 더 중요하다."
- 기기일약 불능십보(騏驥一躍 不能十步) / 노마십가 공재불사(駑馬十駕 功在不舍)
- 천리마도 한번에 열걸음을 뛸 수 없고, 느리고 둔한말이라도 열흘이면 하룻길을 간다.
- 모든 실수에는 마술이 숨어 있다. 따라서 나는 실수하면 실수할수록, 그런 실수에서 더 많이 배울수록 삶에서 더 많은 마술을 갖는다.
- 목표
728x90
300x250
'좋아하는 것_매직IT > 10.microservice' 카테고리의 다른 글
docker 로 Grafana 설치 및 기동하는방법 (ft.prometheus 컨테이너 연동) (0) | 2023.05.03 |
---|---|
27.마이크로서비스, 분해에 대해서 알아보자. (0) | 2021.01.13 |
26.마이크로서비스, 소프트웨어 아키텍처 스타일에 대해서 알아보자. (0) | 2021.01.13 |
25.마이크로서비스, 소프트웨어 아키텍처의 4+1 뷰 모델에 대해서 알아보자. (0) | 2021.01.13 |
24.마이크로서비스, 클라우드와 마이크로서비스에 대해서 생각해보자 (0) | 2021.01.13 |