Message Broker
서비스가 발전하면서 기능이 많아지면 하나의 서버에서 모든것을 처리하지 않는 방향을 생각해 볼수있다.
- 인증만 담당하는 서버를 따로 만들거나
- 서비스 사용 이력을 검색 가능한 형태로 기록하거나
- 채팅만 담당하거나
- 크롤링이나 알림 메시지 보내는것만 담당하는 등
이럴경우 서로 상호 소통을 해야하는 상황이 발생함 -> 서버 분리
Http(동기식 통신)를 사용할때의 단점
- 요청을 보낸후 응답이 올때까지 서버의 수행이 중단(해당 서버가 죽으면 보낸 요청은 불확실해짐)
- 여러 서버에 동시에 정보를 전달하기 번거로움
- 어떤 특정 서버를 지정해서 요청을 보내야 하기 때문에 결합성 증가
대신 Message Broker(비동기)라는 소프트웨어(미들웨어)를 사용해 메세지의 전달을 위임할수 있다.
- 서버는 메세지를 Message Broker에 한 시점에 맡기고
- 메세지 대상자는 처리 가능한 시점에 Message Broker에서 메세지를 꺼내간다
- 서버간의 결합성을 감소시키고 확장성을 확보한다
RabbitMQ
AMQP 통신을 기반으로 여러 소프트웨어간 메세지를 주고받게 해주는 대중적인 Message 브로커
- Spring Boot AMQP를 이용해 쉽게 사용할수 있다.
- 무료로 사용이 가능
도커와 RabbitMQ
docker run -d \
--hostname my-rabbit \
--name some-rabbit \
-e RABBITMQ_DEFAULT_USER=myuser \
-e RABBITMQ_DEFAULT_PASS=mypassword \
-e RABBITMQ_DEFAULT_VHOST=myvhost \
-p 5672:5672 \
-p 15672:15672 \
rabbitmq:3-management
환경변수로 아이디와 비밀번호 설정이 가능
'웹 프로그래밍 > 스프링' 카테고리의 다른 글
Techit Java Backend School 8기 수료(우수상) 후기 (2) | 2024.05.06 |
---|---|
쿠버네티스(k8s) 기본 원리 (1) | 2024.04.26 |
Docker (0) | 2024.04.12 |
스프링 시큐리티에서 Redis로 jwt 액세스 토큰, 리프레쉬 토큰 구현 (2) | 2024.04.12 |
스프링 시큐리티에서 뷰(View)에 대한 접근 설정 (0) | 2024.04.09 |