STOMP(Simple Text Oriented Messaging Protocol)๋
๐ฅ ํ
์คํธ ๊ธฐ๋ฐ์ ๊ฐ๋จํ ๋ฉ์์ง ํ๋กํ ์ฝ๋ก,
์น๊ณผ ์๋ฒ ๊ฐ์ ์ค์๊ฐ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ์ ์
๋๋ค.
ํนํ ์น์์ผ(WebSocket)์ ํจ๊ป ์ฌ์ฉํ ๋
๐ โ์ฑํ
, ์๋ฆผ, ์ค์๊ฐ ๋์๋ณด๋โ
๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌ์ถํ๋ ๋ฐ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ฝ๊ฒ ๋งํ๋ฉด,
๐ WebSocket์ด๋ผ๋ ์๋์ฐจ์
๐ STOMP๋ผ๋ ๋ค๋น๊ฒ์ด์
์ ์น์ด์
โ ๋ฉ์์ง๋ฅผ ์ ํด์ง ๊ท์น๋๋ก
โ ๋ชฉ์ ์ง(ํ ํฝ/ํ)๋ก ๋ณด๋ด๋ ๊ตฌ์กฐ
๋ผ๊ณ ๋ณด๋ฉด ์ดํด๊ฐ ์ฝ์ต๋๋ค.
WebSocket์ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ์ต์ ํ๋ ๊ธฐ์ ์ด์ง๋ง
โ ๋ฉ์์ง ํฌ๋งท ๊ท์น์ด ์ ํด์ ธ ์์ง ์์ต๋๋ค.
๋๊ฐ ์ด๋ค ๋ฉ์์ง๋ฅผ ๋ฐ์์ง, ์ด๋ค ์ฑ๋๋ก ๋ณด๋ผ์ง ๋ฑ ๋ชจ๋ ๊ฒ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ํด์ผ ํฉ๋๋ค.
๊ทธ๋์ ํ์ํ ๊ฒ์ด STOMP.
STOMP๋ ๋ค์์ ํ์คํํฉ๋๋ค:
๐ ๋ฉ์์ง ๊ตฌ์กฐ
๐ฅ ๋ชฉ์ ์ง ์ฃผ์
๐ ๋ฉ์์ง ํ์
๐ฅ ๊ตฌ๋
/ํด์ ๊ท์น
๐ ์๋ฌ ์ฒ๋ฆฌ
์ฆ, WebSocket์
โ ๋ ์์ ํ๊ฒ
โ ๋ ๊ตฌ์กฐ์ ์ผ๋ก
โ ๋ ์์ธก ๊ฐ๋ฅํ๊ฒ
์ฌ์ฉํ๋๋ก ๋์์ฃผ๋ ๊ณ์ธต์ด๋ผ๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค.
STOMP๋ ํ ์คํธ ๊ธฐ๋ฐ์ด๋ผ์ ์ฌ๋์ด ์ง์ ์ฝ์ด๋ ์ดํด๊ฐ ์ฝ์ต๋๋ค.
์์:
SEND
destination:/topic/chat
content-type:text/plain
์๋
ํ์ธ์
STOMP์ ํต์ฌ ๊ตฌ์ฑ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฉ์์ง์ โ์๋โ๋ฅผ ์๋ ค์ฃผ๋ ๋ฌธ์์ด
์: CONNECT, SEND, SUBSCRIBE, MESSAGE
๋ฉํ๋ฐ์ดํฐ
์: destination, content-type, id ๋ฑ
์ค์ ๋ฉ์์ง ๋ณธ๋ฌธ
ํ
์คํธ ๊ธฐ๋ฐ โ ์ฝ๊ธฐ ์ฝ๊ณ ๋๋ฒ๊น
์ด ์ฌ์
์๋๋ STOMP์์ ์์ฃผ ์ฌ์ฉํ๋ ๋ช ๋ น์ ๋๋ค:
| Command | ์ค๋ช |
|---|---|
| CONNECT | ์๋ฒ์ ์ฐ๊ฒฐ ์์ |
| DISCONNECT | ์ฐ๊ฒฐ ์ข ๋ฃ |
| SEND | ๋ฉ์์ง ์ ์ก |
| SUBSCRIBE | ํน์ ์ฑ๋ ๊ตฌ๋ |
| UNSUBSCRIBE | ๊ตฌ๋ ํด์ |
| MESSAGE | ์๋ฒ๊ฐ ๋ณด๋ด๋ ๋ฉ์์ง ํ์ |
| ERROR | ์ค๋ฅ ๋ฉ์์ง |
TCP/WS ์์์ ์ด๋ฐ ๋ช ๋ น์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ๋์ํฉ๋๋ค.
STOMP๋ ์๋์ ๊ฐ์ ์ค์๊ฐ ์๋น์ค์ ๊ฐ๋ ฅํฉ๋๋ค:
๐ ์ฑํ
์์คํ
๐ฅ ์ค์๊ฐ ์๋ฆผ(Notification)
๐ ์ฃผ์/ํ์จ ๋ฑ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ
๐ฅ IoT ์ผ์ ์ ๋ณด ๋ชจ๋ํฐ๋ง
๐ ๊ฒ์ ์ค์๊ฐ ์์น ์ ๋ณด ์ ์ก
๐ฅ ์ค์๊ฐ ํ๋ก์ ํธ ํ์
ํนํ โํ ํฝ ๊ธฐ๋ฐ ๋ธ๋ก๋์บ์คํธโ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ๋งค์ฐ ์ ํฉํฉ๋๋ค.
WebSocket์ ๋จ์ํ
๐ฅ โ์ง์์ ์ผ๋ก ์ฐ๊ฒฐ๋ ํ์ดํโ
์ญํ ๋ง ํฉ๋๋ค.
ํ์ง๋ง ๋ฉ์์ง๊ฐ ๋ง์์ง๋ฉด ๋ฌธ์ ๊ฐ ์๊น๋๋ค:
โ ๋๊ฐ ๋๊ตด ๊ตฌ๋
ํ๋์ง
โ ๋ฉ์์ง๋ ์ด๋ค ์ฑ๋๋ก ๋ณด๋ด๋์ง
โ ์ฌ์ฉ์ ๊ทธ๋ฃน๋ณ ์ ์ก์ ์ด๋ป๊ฒ ํ ์ง
โ ์๋ฌ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง
WebSocket๋ง์ผ๋ก๋ ๋ชจ๋ ๋ก์ง์ ์ง์ ๋ง๋ค์ด์ผ ํ๊ณ ๋ณต์กํฉ๋๋ค.
๊ทธ๋์ STOMP๋ ์ด ์์์
โ ๋ฉ์์ง ๋ผ์ฐํ
โ ๋ชฉ์ ์ง ์ฃผ์
โ ๊ตฌ๋
๊ด๋ฆฌ
โ ํค๋ ๊ธฐ๋ฐ ๋ฉํ๋ฐ์ดํฐ
โ ์๋ฌ ์ฒ๋ฆฌ
๋ชจ๋ ์ ๊ณตํ๋ โ๋ฉ์์ง ๊ท์ฝ ๋ ์ด์ดโ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
2025๋ ํ์ฌ STOMP๋ ๋ค์ํ ์๋ฒ์ ํธํ๋ฉ๋๋ค.
๐ RabbitMQ
๐ฅ ActiveMQ
๐ Apollo
๐ฅ Spring WebSocket(Spring Boot์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ)
๐ Kaazing WebSocket Gateway
๐ฅ Netty ๊ธฐ๋ฐ ๋ฉ์์ง ์๋ฒ
ํนํ Spring Boot๋ STOMP๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ์ง์ํด์
๊ตญ๋ด ๊ธฐ์
์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํํ์
๋๋ค.
์ค์๊ฐ ์ฑํ ์ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
์ ํ๋ฆ์ด ๊ฑฐ์ ๋ชจ๋ ์ค์๊ฐ ์๋น์ค์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๐ ๋ฉ์์ง ๊ท์น์ด ๋ช
ํ
๋ฉ์์ง ์ฒ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋จ์ํ๊ณ ์์ ์
๐ฅ ํ
์คํธ ๊ธฐ๋ฐ์ด๋ผ ๋๋ฒ๊น
์ฌ์
๋ฐ๋ก ๋์ผ๋ก ๋ณด๋ฉด ๋จ
๐ ๋ธ๋ก์ปค ๊ธฐ๋ฐ ํ์ฅ์ฑ
RabbitMQ์ ํจ๊ป ์ฐ๋ฉด ๋๊ท๋ชจ ์๋น์ค๋ ๊ฐ๋ฅ
๐ฅ ๊ตฌ๋
/ํด์ ๊ธฐ๋ฅ ํ์คํ
์ค์๊ฐ ์๋น์ค ๋ง๋ค๊ธฐ ๋งค์ฐ ์ฌ์์ง
๐ WebSocket๋ณด๋ค ๊ตฌ์กฐ์ ์ธ ์๋น์ค ๊ฐ๋ฐ ๊ฐ๋ฅ
โ ์ฑ๋ฅ์ ์ด์ง ๊ธฐ๋ฐ ํ๋กํ ์ฝ๋ณด๋ค ๋จ์ด์ง ์ ์์
โ WebSocket๋ณด๋ค ์ฝ๊ฐ ์ค๋ฒํค๋ ์ฆ๊ฐ
โ ํ
์คํธ ๊ธฐ๋ฐ์ด๋ผ ๋์ฉ๋ ๋ฉ์์ง ๋นํจ์จ
โ ๋ธ๋ก์ปค ์ค์ ์ด ์ด๋ณด์์๊ฒ ์ด๋ ค์ธ ์ ์์
๊ทธ๋๋ ๋๋ถ๋ถ์ ์น ๊ธฐ๋ฐ ์ค์๊ฐ ์๋น์ค์์๋
โํ์ฅ์ฑ๊ณผ ์ค์ฉ์ฑโ ๋๋ถ์ STOMP๊ฐ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
SUBSCRIBE
id:sub-1
destination:/topic/board
SEND
destination:/topic/board
content-type:text/plain
์ค๋์ ์ข์ ๋ ์
๋๋ค
MESSAGE
subscription:sub-1
message-id:007
destination:/topic/board
์ค๋์ ์ข์ ๋ ์
๋๋ค
๋ต์ ์, ๊ณ์ ์ฌ์ฉ๋จ์ ๋๋ค.
์๋ํ๋ฉด,
๐ WebSocket์ ๊ณ์ ์ฐ์ธ๋ค
๐ฅ ์ค์๊ฐ ์๋น์ค๋ ๋์ด๋๋ค
๐ ํ
์คํธ ๊ธฐ๋ฐ ๊ท์น์ด ๋จ์ํด ์ ์ง๋ณด์ ์ข๋ค
๐ฅ Spring Boot์์ ๊ณต์์ ์ผ๋ก ๋ฐ์ด์ค
๐ RabbitMQ ๊ฐ์ ๋ธ๋ก์ปค๊ฐ ์ฌ์ ํ ๊ฐ์ธ
๋ฐ๋ผ์ STOMP๋ ์์ผ๋ก๋
โ์น ํ๊ฒฝ์์ ์ค์๊ฐ ๋ฉ์์ง์ ๊ตฌํํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒโ์ผ๋ก ๋จ์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
2025๋ ๊ธฐ์ค STOMP๋ฅผ ์ดํดํ๋ฉด ๋ค์์ ํ ์ ์์ต๋๋ค.
๐ฅ ์ฑํ
์๋น์ค ๊ฐ๋ฐ
๐ ์ค์๊ฐ ์๋ฆผ ๊ตฌ์ถ
๐ฅ ๋ชจ๋ํฐ๋ง ๋์๋ณด๋ ์ ์
๐ WebSocket ๊ธฐ๋ฐ ์๋น์ค ํ์ฅ
๐ฅ RabbitMQ์ ์ฐ๋ํ ๋๊ท๋ชจ ๋ฉ์์ง ๊ตฌ์ถ
ํนํ Spring ํ๊ฒฝ์์ ์ค์๊ฐ ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด
STOMP๋ ์ฌ์ค์ ํ์ ์ง์์
๋๋ค.
๋ก์ปฌ ๋คํธ์ํฌ ํ๊ฒฝ์ ์กฐ๊ธ์ด๋ผ๋ ๋ค๋ค๋ณธ ์ฌ๋์ด๋ผ๋ฉด ํ ๋ฒ์ฏค์ ๋ง์ฃผ์น๋ ์ต์ํ ๋จ์ด๊ฐ ์์ต๋๋ค. ๋ฐ๋ก NetBIOS์ NBT์ ๋๋ค.…
์๋ ํ์ธ์! ํ๋ ์น ๊ฐ๋ฐ์์ ๋ฐ์ดํฐ ๊ตํ์ ํต์ฌ์ธ JSON(JavaScript Object Notation)์ ๋์ฑ ๊ฐ๋ ฅํ๊ณ ์์ ์ ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋๊ตฌ,…
โ ECMAScript 3(E3)๋ ๋ฌด์์ผ๊น ECMAScript 3๋ 1999๋ ์ ๊ณต์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ค์ด๋ค. ์ง๊ธ ๋ณด๋ฉด ์ค๋๋ ๊ธฐ์ ๊ฐ์ง๋ง,…
CoffeeScript๋ ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ํ๊ณ์์ ๋งค์ฐ ์ธ๊ธฐ ์์๋ ์ธ์ด์๊ณ , ์ง๊ธ๋ ํน์ ํ๋ก์ ํธ๋ ๋ ๊ฑฐ์ ์์คํ , ๊ฐ๊ฒฐํ…
ํ๋์ ์ธ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ๋ฉ๋ชจ๋ฆฌ ๋์(Memory Leak)๋ ์ฌ์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ์ ํ์ ์ถฉ๋์ ์ผ์ผํค๋ ์ฃผ์ ์์ธ ์ค…
(Critical Rendering Path, ํต์ฌ ๋ ๋๋ง ๊ฒฝ๋ก ์๋ฒฝ ์ดํด) ์น ๋ธ๋ผ์ฐ์ ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๊ณ ์ํฐ๋ฅผ ๋๋ฅด๋ ์๊ฐ,…