양 방향 통신? : 이전에는 Polling, Long polling, HTTP Streaming 방식 등 여러 방법을 통해 Client, server 양 방향 통신을 구현했었다. Traditional Polling: 주기적으로 client가 AJAX 요청해 결과를 확인한다. 너무 리소스 낭비가 크다. Long Polling: clie...
Event loop, 비동기 처리의 흐름
Javascript 싱글스레드 기반, Event loop를 기반으로 하는 Node.js Javascript engine은 JS를 해석하고 실행하는 엔진(콜 스택과 이벤트 큐가 있는) Javascript engine과 이벤트 루프 Event Loop 아래의 방식으로 이벤트루프가 현재 실행중인 task가 없는지, task q...
RPC 통신
RPC (vs restapi) IDL(Interface Definition Language)을 활용하며, 다른 프로세스의 함수나 프로시저를 마치 로컬처럼 이용 인터페이스(request parameter, response parameter)를 알고 코드를 짜야하기 때문에 필연적으로 client, server간 의존성이 증가한다. 계층간...
RabbitMQ를 이용한 RPC 통신
서버 투 서버에서의 queue 역할인 RPC가 죽는 경우를 고려해 에러 처리를 잘해야 한다. 아래의 작업들은 모두 RabbitTemplate을 통해 자동으로 동작한다. 과정 Configuration이 새로운 DirectExchange 와 client set up client는 convertSendAndReceive 메...
Kotlin & RabbitMQ를 이용한 RPC 통신 서버 개발 기록
201204 Kotlin Kotlin 가변인수 활용을 위해 vararg 적절히 이용 Kotlin에서의 JSON: receiver 입장에선 JSON의 구조를 모른다. put을 사용했지만, 별도 객체를 구성하는 것이 좋다. RabbitMQ 핵심 연결 역할: convertSendAndReceive() JSON으로 전달 안된다. ...
RabbitMQ란?
: 오픈소스 메시지 브로커이다. 가볍고 쉬우며 다양한 messaging protocol을 지원한다. 특징 Async messaging을 지원한다. Docker 환경에 적합. 설정을 통해 많은 컨트롤 가능 높은 성숙도(기능이 많다), 처리율 높은 편 Auth 매커니즘 지원. (TLS, LDAP) 주요 개념 Producer...