Message Broker Alternatives.md - 100-hours-a-week/KTB4-17th-wiki GitHub Wiki
๊ทธ์ธ ๋์ ๋น๊ต
RDS ์ฃผ๊ธฐ ์กฐํ
๋ธ๋ก์ปค ์์ด ๊ฐ ์ฑํ ์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ RDS๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์กฐํํ ์๋ ์๋ค. ์๋ฅผ ๋ค์ด์ ์กฐํ ๊ฐ๊ฒฉ์ด ๋์ ์ ์์ 12.8๋ง ๋ช ์ ๋ชจ๋ 5๋ถ๋ง๋ค ์กฐํํ๋ ๊ตฌ์ฑ์ด๋ผ๋ฉด ํ๊ท 427์กฐํ/์ด๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ด๋ค. ๋์ ์ ์์๋ฅผ ์ ๋ถ 5๋ถ๋ง๋ค ์กฐํํ๋ ๊ฒ๋ง ํด๋ ํ๊ท ์ฝ 420์กฐํ/์ด๊ฐ RDS์ ๊ธฐ๋ณธ ๋ถํ๋ก ๋ค์ด๊ฐ๋ค. ๋ํ 5๋ถ๋ง๋ค ์กฐํํ๋ฉด ์ต์ ์ ๊ฒฝ์ฐ ๋ฉ์์ง๊ฐ ์จ ์ง 5๋ถ ๋ค์์ผ ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ ์ค์๊ฐ ์ฑํ ์๋ ๋ง์ง ์๊ณ ์ง์ฐ์ ์ค์ด๋ ค๊ณ ๊ฐ๊ฒฉ์ ๋ ์ขํ๋ฉด ๊ธฐ๋ณธ ๋ถํ๋ ๋ ๋์ด๋๋ค.
Amazon SQS
SQS๋ ํ๋์ ํ๋ฅผ ์ฌ๋ฌ ์๋ฒ๊ฐ ๋๋ ๊ฐ๋ ๊ตฌ์กฐ๋ผ ์ด๋ฒคํธ ํ๋๊ฐ ํ ์๋ฒํํ ๋ง ๊ฐ๋ค. ๋ ์๋ฒ๊ฐ ๊ฐ์ ์๋ฆผ์ ๋ค ๋ฐ๊ฒ ํ๋ ค๋ฉด SNS๊ฐ์ ๋ณ๋์ ์๋น์ค๋ก ๋ฐ์์ ์๋ฒ๋ง๋ค ํ๋ฅผ ๋ฐ๋ก ๋๋ ํฌ์์ ๊ตฌ์ฑ์ ์ถ๊ฐํด์ผํ๋ค. ์ฐ๋ฆฌ๋ ๋ ์๋ฒ๊ฐ ๊ฐ์ Valkey ์ฑ๋์ ๊ตฌ๋ ํ๋ฉด ํฌ์์์ด ์๋์ ์ผ๋ก ๋ง์กฑ๋๊ธฐ ๋๋ฌธ์ SNS + SQS ์กฐํฉ์ ์ฌ์ฉํ์ง ์์๋ค.(https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html), SNSยทSQS ํฌ์์
Apache Kafka
Kafka๋ฅผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ธด ํ์ง๋ง ๊ฐ์ ์๋น์ ๊ทธ๋ฃน์ ์ํ ์๋ฒ๋ ๋ฉ์์ง ํ๋๋ฅผ ํ ์๋ฒ๋ง ๋๋ ๋ฐ์ผ๋ฏ ๋ ์๋ฒ ๋ชจ๋ ๋ฐ์ผ๋ ค๋ฉด ์๋ฒ๋ง๋ค ๋ณ๋์ ๊ทธ๋ฃน์ด ์์ด์ฌ ํ๋ค. ์ฑํ ๋ฉ์์ง๋ ์ด๋ฏธ RDS์ ์ ์ฅํ๊ณ ์์ผ๋ฏ๋ก Kafka์ ์ด๋ฒคํธ๋ฅผ ๋ฐ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ํ์๊ฐ ์๋ค. ๊ทธ๋์ ํ์ฌ๋ ์ค์ ์ด ๊ฐ๋จํ Valkey Pub/Sub์ ์ ํํ๋ค.Apache Kafka ์๋น์ ๋ฌธ์
Redis OSS
Redis OSS๋ Pub/Sub์ ์ง์ ํ์ง๋ง ํ์ฌ ์๋น์ค์๋ Redis OSS์๋ง ํ์ํ ๊ธฐ๋ฅ์ด๋ ๊ธฐ์กด Redis ์ ์ฉ ์์กด์ฑ์ด ์๋ค. Valkey๋ Redis์ ํธํ๋๋ Pub/Sub ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก ํ์ฌ ๊ตฌํ ๋ฐฉ์์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๊ณ AWS ๊ธฐ์ค ๋์ผ ์กฐ๊ฑด์์ Redis OSS๋ณด๋ค ๋ ธ๋ ๋น์ฉ๋ 20% ๋ฎ์ Valkey Pub/Sub์ ์ ํํ๋ค.
Transactional Outbox ๋ฌธ์ ๊ณ ๋ ค
๋ฌธ์ )DB์ ๋ฉ์์ง ๋ธ๋ก์ปค๋ ์๋ก ๋ค๋ฅธ ์์คํ ์ด๋ฏ๋ก ์ผ๋ฐ์ ์ธ DB ํธ๋์ญ์ ํ๋๋ก ๋ ์์ ์ ํจ๊ป ์ปค๋ฐํ๊ฑฐ๋ ๋กค๋ฐฑํ ์ ์์.
Application
โโ Database์ UPDATE
โโ Message Broker์ PUBLISH
- ๋ฉ์ธ์ง๋ธ๋ก์ปค์ DB๋ ์๋ก ๋
๋ฆฝ์ ์ผ๋ก ์คํ๋จ.
- DB๋ฅผ ๋จผ์ update ๊ฒฝ์ฐ
- ๋ฉ์ธ์ง๋ฅผ ๋จผ์ ๋ณด๋ด๋ ๊ฒฝ์ฐ , ๋ ์์
์ ๋์์ ์คํํด๋ ์์์ฑ์ ์๊ธฐ์ง ์์
์๋ณธ ํ ์ด๋ธ๊ณผ Outbox ํ ์ด๋ธ์ ๊ฐ์ ํธ๋์ญ์ ์ผ๋ก ์ ์ฅํ ๋ค Relay๊ฐ Outbox ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ด๋ฏธ ์กด์ฌํ๋ ๋ฉ์์ง ๋ธ๋ก์ปค์ ์ด๋ฒคํธ๋ฅผ ๋ฐํ.
ํ์ฌ ๋์ ํ์ง ์๋ ์ด์
๋ฐํ์ด ์ ์ค๋๋๋ผ๋ ๋ฉ์์ง ์๋ณธ์ RDS์ ์ ์ฅ๋์ด ์๊ณ ์ฌ์ฉ์๊ฐ ์ฌ์ ์ํ ๋ ๋ง์ง๋ง ์์ ์ดํ๋ฅผ RDS์์ ์กฐํํด ๋ณต๊ตฌํ๋ค. ์ ์ฅ์ ๋์ผ๋ ๋ฐํ์ด ์คํจํ ๋ฉ์์ง๋ ์ด ๋ณต๊ตฌ ์กฐํ๊ฐ ์ฑ์ด๋ค. Outbox ํ ์ด๋ธ๊ณผ polling์ด๋ ๋ก๊ทธ๋ฐฉ์์ผ๋ก outbox์์ read์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ถ๊ฐ ๊ด๋ฆฌ ํฌ์ธํธ์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ RDS ๋ณต๊ตฌ ๊ฒฝ๋ก๊ฐ ์ ๊ณตํ๋๋ฐ ๊ตณ์ด ์ฌ์ฉํ ํ์๋ ์๋ค๊ณ ํ๋จํ๋ค