Message Broker Introduction.md - 100-hours-a-week/KTB4-17th-wiki GitHub Wiki
๋ฉ์์ง ๋ธ๋ก์ปค ๋์ ๊ทผ๊ฑฐ
์ฑํ ์๋ฒ๊ฐ ๋ ๋์ด๋ฉด ์ฌ์ฉ์ A์ B๊ฐ ์๋ก ๋ค๋ฅธ ์๋ฒ์ WebSocket์ผ๋ก ์ ์ํ ์ ์๋ค. A์ ์๋ฒ๋ B์ ์ฐ๊ฒฐ์ ์ง์ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฏ๋ก RDS์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๊ฒ๋ง์ผ๋ก๋ B์ ์๋ฒ์ ์ ๋ฉ์์ง๋ฅผ ์ฆ์ ์๋ฆด ์ ์๋ค.
๋ฉ์์ง ์ ์ฅ์ ํ์ ํ ์๋ฒ๊ฐ ๋ฐฉ,๋ฉ์์ง,์์ ์์ ID์ ๋ณธ๋ฌธ ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๊ณ ๋ ์ฑํ ์๋ฒ๊ฐ ์ด๋ฅผ ๊ตฌ๋ ํ๋ค. ๊ฐ ์๋ฒ๋ ์์ ์ ๋ก์ปฌ WebSocket ์ฐ๊ฒฐ์ ์์ ์๊ฐ ์๋์ง ํ์ธํด ์ ๋ฌํ๋ค. ๋ฉ์์ง ์๋ณธ์ RDS์ ๋๋ค. ์ด๋ฒคํธ์ ์ค๋ฆฐ ๋ณธ๋ฌธ์ ์ ์ ๊ฒฝ๋ก์์ ์ฆ์ ์ ๋ฌํ๊ธฐ ์ํ ์ ๋ฌ์ฉ ๋ณต์ฌ๋ณธ์ด๊ณ ์๋ณธ์ ํญ์ RDS์ ์๋ค.
sequenceDiagram
autonumber
participant A as ์ฌ์ฉ์ A
participant S1 as ์ฑํ
์๋ฒ 1
participant R as RDS
participant V as Valkey Pub/Sub
participant S2 as ์ฑํ
์๋ฒ 2
participant B as ์ฌ์ฉ์ B
A->>S1: ๋ฉ์์ง ์ ์ก
S1->>R: ๋ฉ์์ง ์ ์ฅ ๋ฐ commit
R-->>S1: ์ ์ฅ ์๋ฃ
S1->>V: ๋ฐฉ IDยท๋ฉ์์ง IDยท์์ ์ IDยท๋ณธ๋ฌธ ๋ฐํ
V-->>S1: ์ด๋ฒคํธ ์ ๋ฌ
V-->>S2: ์ด๋ฒคํธ ์ ๋ฌ
S1->>S1: ๋ก์ปฌ WebSocket ์ฐ๊ฒฐ ํ์ธ
S2->>S2: ๋ก์ปฌ WebSocket ์ฐ๊ฒฐ ํ์ธ
S2-->>B: ์ด๋ฒคํธ ๋ณธ๋ฌธ ๊ทธ๋๋ก ์ ๋ฌ (RDS ์กฐํ ์์)
Note over V,S2: ๊ตฌ๋
์ด ๋๊ธฐ๋ฉด ์ด๋ฒคํธ๋ ๋ณด๊ด๋์ง ์์
S2->>V: ์ฌ๊ตฌ๋
S2->>R: ๋ง์ง๋ง ์์ ๋ฉ์์ง ์ดํ ์กฐํ
R-->>S2: ๋๋ฝ ๋ฉ์์ง ๋ฐํ
S2-->>B: ๋๋ฝ ๋ฉ์์ง ์ ๋ฌ (๋ฉ์์ง ID๋ก ์ค๋ณต ์ ๊ฑฐ)
๋ฉ์์ง ์ ๋ฌ ํ๋ฆ
- ์ฌ์ฉ์ A๊ฐ ์ฑํ ์๋ฒ 1๋ก ๋ฉ์์ง๋ฅผ ์ ์กํ๋ค.
- ์ฑํ ์๋ฒ 1์ด RDS์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ค.
- ์ ์ฅ์ด ํ์ ๋๋ฉด ์ฑํ ์๋ฒ 1์ด Valkey Pub/Sub์๋ฐฉ,๋ฉ์์ง,์์ ์์ ID์ ๋ฉ์ธ์ง ๋ด์ฉ ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๋ค.
- ๋ ์ฑํ ์๋ฒ๊ฐ ์ด๋ฒคํธ๋ฅผ ์์ ํ๊ณ ๊ฐ์ ์์ ์ ๋ก์ปฌ WebSocket ์ฐ๊ฒฐ์ ํ์ธํ๋ค.
- ์์ ์ B๊ฐ ์ฑํ ์๋ฒ 2์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด ์ฑํ ์๋ฒ 2๊ฐ ์ด๋ฒคํธ์ ์ค๋ฆฐ ๋ณธ๋ฌธ์ ๊ทธ๋๋ก B์๊ฒ ์ ๋ฌํ๋ค. ์ด๋๋ RDS๋ฅผ ๋ค์ ์กฐํํ์ง ์๋๋ค.
์ ๋ฌ ์ ์ฑ
์ ์ ์ํ์์๋ ์จ๋ผ์ธ ์๋ฆผ์ ์ฆ์ ์ ๋ฌํ๋ค. ๋ค๋ง ๋ฉ์ธ์ง ๋ธ๋ก์ปค์ ๊ตฌ๋ ์ด ๋๊ธด ๋์ ์ด๋ฒคํธ๋ฅผ ๋ณด๊ดํ๊ฑฐ๋ ์ฌ์ ์กํ์ง ์๊ณ RDS๋ฅผ ์กฐํํด ํ๋ค.
- ์ฑํ ์๋ฒ์ ๋ฉ์ธ์ง ๋ธ๋ก์ปค๊ฐ ๋ค์ ์ฐ๊ฒฐ๋๋ ์๊ฐ
- ์ฌ์ฉ์ WebSocket์ด ์ฌ์ฐ๊ฒฐ๋ ์งํ
- ์ฌ์ฉ์๊ฐ ์ฑํ ๋ฐฉ์ ๋ค์ ์ฐ ์งํ
๊ฐ ์กฐํ๋ ์ฌ์ฉ์์ ๋ง์ง๋ง ์์ ๋ฉ์์ง ID ๋๋ ๋ฐฉ๋ณ ๋ง์ง๋ง ๋ฉ์์ง ์๋ฒ ์ดํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ํํ๋ค. ์ด๋ฏธ ์ ๋ฌ๋ ๋ฉ์์ง๋ ๋ฉ์์ง ID๋ก ์ค๋ณต ์ ๊ฑฐํ๋ค. ๋ฉ์ธ์ง ๋ธ๋ก์ปค์ ์ฑํ ์ ๋ณธ๋ฌธ์ ๋ด์ง ์๋ ์ด์ ๋ ์ฑํ ๋ฉ์ธ์ง๋ ์ ์ค๋๋ฉด ์๋๋๋ฐ pub/sub์ ๊ตฌ๋ ์ด ์์ด์ง๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ฒ๋ ค์ง๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ ์ค์ด ๋ฐ์ํ ์ ์์ด์ RDS์ ์ ์ฅํฉ๋๋ค. Valkey Pub/Sub ์ ๋ฌ ํน์ฑ
๋ณธ๋ฌธ์ ์ด๋ฒคํธ์ ์ฃ๋ ์ด์
๋ฉ์์ง ์๋ณธ์ ์ ์ค๋๋ฉด ์ ๋๋ ๋ฐ์ดํฐ์ด๋ฏ๋ก RDS์ ์ ์ฅํ๋ค. ๊ทธ ์์์ ์ ์ ์ ๋ฌ ๊ฒฝ๋ก์๋ ๋ณธ๋ฌธ์ ์ด๋ฒคํธ์ ํจ๊ป ์ค์ด RDS ์ฌ์กฐํ ์์ด ์ฆ์ ์ ๋ฌํ๋ค. ์ด๋ฒคํธ์ ๋ณธ๋ฌธ์ ์ ๋ฌ์ฉ ๋ณต์ฌ๋ณธ์ด๊ณ ์๋ณธ์ RDS์ ์์ผ๋ฏ๋ก ์ด๋ฒคํธ๊ฐ ์ ์ค๋์ด๋ ๋ฐ์ดํฐ๋ ๋ณด์กด๋ ์ ์๋ค. ๋ฉ์ธ์ง ๋ธ๋ก์ปค์์ ๋ฉ์ธ์ง๊ฐ ์ ์ค๋ ๊ฒฝ์ฐ๋ RDS ์๋ณธ์์ ๋ด์ฉ์ ๊ฐ์ ธ์จ๋ค. ID๋ง ์ฃ๊ณ ์ ๋ฌ ๋๋ง๋ค RDS๋ฅผ ๋ค์ ์ฝ์ผ๋ฉด ์ค์๊ฐ ์ ๋ฌ ๊ฒฝ๋ก์ ๋ฉ์์ง๋ง๋ค RDS SELECT๊ฐ ๋ถ์ด ์ง์ฐ๊ณผ RDS ๋ถํ๊ฐ ๋์ด๋ ์ ์๋๋ฐ ๋ฉ์ธ์ง๋ฅผ ๋ธ๋ก์นด์์ค์ผ๋ฉด ์ ์ ๊ฒฝ๋ก์์ DB ์ฝ๊ธฐ๋ฅผ ์์จ ์ ์๋ค.