csct3434
STOMP (Simple Text Oriented Messaging Protocol) 본문
STOMP
- Simple Text Oriented Messaging Protocol
- 클라이언트와 서버 간에 전송할 메시지의 유형, 형식, 내용 등을 정의한 텍스트 기반 메시징 프로토콜
- Publish-Subscribe 매커니즘을 제공하며 Message Broker를 통해 다른 사용자에게 메시지를 보내거나 서버가 특정 작업을 수행하도록 메세지를 전송
- TCP 또는 WebSocket과 같은 양방향 네트워크 프로토콜을 기반으로 동작
- 웹 소켓과 STOMP를 함께 사용하면 메시지의 구조가 정해져있어 양방향 통신 구현에 용이
Message Broker
- Subscriber는 특정 Topic을 구독하고, Publisher는 해당 Topic으로 메시지를 전송
- Message Broker는 Publisher로 부터 전달받은 메시지를 Subscriber에게 전달하는 중간자 역할을 수행
- 기본적으로 In Memory Broker를 사용하는데, 세션을 수용할 수 있는 크기에 한계가 있고 메시지의 유실 가능성이 존재하며 모니터링이 불편하기 때문에 RabbitMQ, ActiveMQ, Kafka와 같은 외부 메시지 브로커를 사용하기도 함
STOMP 프레임 구조
COMMAND
header1:value1
header2:value2
body^@
- COMMAND : 프레임의 종류를 나타내는 명령어
- HEADER : 메시지와 관련된 메타 데이터를 담고 있는 키-값 쌍
- BODY : 메시지의 내용을 담고 있는 부분, 텍스트나 바이너리 데이터가 포함됨
STOMP 사용 사례
- STOMP는 다양한 분야에서 실시간 통신을 구현하는데 사용됨
- 채팅 애플리케이션, 실시간 협업 도구, 게임, 금융 거래, IoT 애플리케이션 등
STOMP 장단점
장점
- 간단한 헤더와 프레임 구조를 사용하여 오버헤드가 작기 때문에 데이터 전송의 효율성이 높음
- 텍스트 기반의 프로토콜로 사람이 이해하기 쉬워 디버깅 및 분석이 용이함
- 다양한 프레임 유형과 헤더를 지원하여 확장성이 높음
- 메시지 전달 확인 및 재전송 메커니즘을 통해 안정적인 메시지 전송을 보장
단점
- 바이너리 기반 프로토콜에 비해 데이터 전송 효율성이 떨어질 수 있음
- 기본적으로 인증 및 암호화 기능을 제공하지 않아 별도의 보안 메커니즘이 필요
'개발 일지' 카테고리의 다른 글
실시간 통신 방식 비교 : Polling, Long Polling, Server Sent Event, WebSocket (0) | 2025.01.17 |
---|---|
AWS WAF를 활용한 봇 공격 차단 (feat. web ACL) (1) | 2024.06.04 |
CloudWatch Log Group으로 로그 전송하기 (feat. CloudWatch Agent) (0) | 2024.05.25 |
스프링부트 액세스 로그 설정 방법 (0) | 2024.05.25 |
Amazon S3 트리거와 Lambda를 활용한 썸네일 이미지 생성 (2) - 코드 구현 (1) | 2024.04.20 |