๐ซ ํฐ์ผํ ํ๋ซํผ MSA ํ๋ก์ ํธ
๋๊ท๋ชจ ์ฌ์ฉ์๊ฐ ๋ชฐ๋ฆฌ๋ ์ด๋ฒคํธ ํฐ์ผํ ๊ณผ์ ์์
๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์์ฝ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ณ ์์ต๋๋ค.
๊ฐ ๊ธฐ๋ฅ์ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ถ๋ฆฌํ์ฌ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ํ๋ฉฐ,
๋ถ์ฐ๋ ์๋น์ค๋ค ๊ฐ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ์ฌ
ํฐ์ผ ์์ฝ ์ฒ๋ฆฌ ๊ณผ์ ์์ ๋์ ์ ํ์ฑ๊ณผ ์ ๋ขฐ์ฑ์ ์ ์งํฉ๋๋ค.
์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ํตํด ํ์ฅ์ฑ๊ณผ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ชจ๋ ํ๋ณดํ
์์ ์ ์ธ ์์คํ ์ ์ ๊ณตํฉ๋๋ค.
์ด ํ๋ก์ ํธ์ ๋ชฉ์ ์ ๋ค์์ ๋์ ์ ์์๊ฐ ๋ฐ์ํ๋ ์ํฉ์์ ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ํฐ์ผํ
์์คํ
์ ๊ตฌ์ถํ๋ ๊ฒ์
๋๋ค.
์ฃผ์ ๋ชฉํ๋ ์ค์๊ฐ ์ข์ ์ ํ, ๋ถ์ฐ ์ ๊ธ ์ฒ๋ฆฌ, ๋๊ธฐ์ด ๊ด๋ฆฌ ๋ฐ ํธ๋ํฝ ๋ถ์ฐ์ ํตํด ์ฌ์ฉ์ ๊ฒฝํ์ ์ต์ ํํ๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ์ํด Redis, Kafka์ ๊ฐ์ ๊ณ ์ฑ๋ฅ ๋ถ์ฐ ์์คํ
์ ํ์ฉํ์ฌ ํธ๋์ญ์
์ฒ๋ฆฌ ์๋๋ฅผ ๋์ด๊ณ , ๋๊ท๋ชจ ํธ๋ํฝ์๋ ๋น ๋ฅธ ์๋ต์ฑ์ ์ ๊ณตํ๋ ์ํคํ
์ฒ๋ฅผ ์ค๊ณํ๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค.
์ธ์ฆ
- ์ํ๋ฆฌํฐ ๊ด๋ฆฌ๋ฅผ ์ํ ์ ์ ์์ ๋ถ๋ฆฌ๋ ๋ณ๋์ ์ธ์ฆ์๋ฒ
์ด๋ฒคํธ / ์ข์
- ์ด๋ฒคํธ ๋ฐ ์ข์ ์ ๋ณด ์์ฑ
- ์ด๋ฒคํธ ๋ฐ ์ข์ ์ ๋ณด ์กฐํ (์ข์ ์ ๋ณด ์บ์ฑ)
ํฐ์ผ
- ์ข์ ์ํ์ ๋ฐ๋ฅธ ํฐ์ผ ์์ฝ (๋ถ์ฐ๋ฝ)
- ํฐ์ผ ์์ฑ๊ณผ ํจ๊ป ์ข์ ์ํ ๋ณ๊ฒฝ (๋น๋๊ธฐ Kafka)
- ์ฑ๋ฅ ํฅ์์ ์ํ ์ด๋ฒคํธ ๋ณ ๋ค์ค ํ ํฝ ์ฒ๋ฆฌ
๊ฒฐ์ ๊ธฐ๋ฅ
- ์นด์นด์ค ๋ฐ๋ชจ ๊ฒฐ์ ๋ฅผ ์ด์ฉํ ๊ฒฐ์ ์์คํ ์ค ์ฒดํ ๊ฐ๋ฅ
๐ป Application Development and Frameworks
- Java
- Springboot
๐ ์ฑ๋ฅ ์ต์ ํ ๋ฐ ์บ์ฑ
- Caffeine
- Redis
๐ฉ ๋ฉ์์ง ๋ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- Kafka
โ๏ธ ์ธํ๋ผ ๋ฐ ๋ฐฐํฌ
- EC2
- Docker
- Docker Compose
- RDS (PostgreSQL)
- ElastiCache(Redis)
- S3 - (Redis์ ์ ํฉ์ฑ์ ์ํ ๋ฐฑ์ ์ฅ์น)
- MSK - AWS์์ ์ ๊ณตํ๋ ์์ ๊ด๋ฆฌํ Apache Kafka ์๋น์ค
๐งช ์ฑ๋ฅ ํ ์คํธ ๋ฐ ํ์ง ๊ด๋ฆฌ
- Apache JMeter
๐ค ํ์ ๋ฐ ์์ค ๊ด๋ฆฌ
- GitHub
- Notion
๐ ๋ก๊ทธ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง
- ELK Stack (Elasticsearch, Logstash, Kibana)
- Prometheus
- Grafana
๊ฒฐ์ ์๋น์ค ๋ถ๋ฆฌ
-
๋์ ์ด์
๊ฒฐ์ ์คํจ ๋์: ๊ฒฐ์ ๊ณผ์ ์์ ๋คํธ์ํฌ ๋ฌธ์ ๋ ์ธ๋ถ ๊ฒฐ์ ์์คํ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์, ์ข์ ์์ฝ๊ณผ ๊ฒฐ์ ๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ฒฐ์ ๊ฐ ์คํจํ๋๋ผ๋ ์ข์์ด ๋ถํ์ํ๊ฒ ์ทจ์๋์ง ์๊ณ ์ฌ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํ๊ณ ์ ํฉ๋๋ค. -
๋ฌธ์ ์ํฉ
๊ฒฐ์ ๊ณผ์ ์ ๋ณต์ก์ฑ: ๊ฒฐ์ ๊ฐ ์คํจํ๊ฑฐ๋ ๊ฒฐ์ ์ง์ฐ์ด ๋ฐ์ํ ๋ ์ข์์ ์ด๋ป๊ฒ ๋ค์ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ ์ง, ํน์ ๊ฒฐ์ ์ํ์ ์ข์ ์์ฝ ์ํ ๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. -
ํด๊ฒฐ ๋ฐฉ์
๊ฒฐ์ ์์คํ ๋ถ๋ฆฌ: ์ข์ ์์ฝ๊ณผ ๊ฒฐ์ ์์คํ ์ ๊ฐ๊ฐ ๋ถ๋ฆฌํ์ฌ ๊ฒฐ์ ์ง์ฐ์ด ๋ฐ์ํ๋๋ผ๋ ์ข์ ์์ฝ ๊ณผ์ ์ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ์ค๊ณํ์ต๋๋ค. ๊ฒฐ์ ๊ฐ ์๋ฃ๋๋ฉด ์ข์์ ํ์ ํ๊ณ , ๊ฒฐ์ ์คํจ ์ ์ข์์ ๋ค์ ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ์ ํํ ์ ์๊ฒ ํ์ต๋๋ค. -
์๊ฒฌ ์กฐ์จ
์ฑ๋ฅ vs. ์ ํฉ์ฑ: ํ ๋ด์์ ์ฑ๋ฅ ์ต์ ํ์ ๋ฐ์ดํฐ ์ ํฉ์ฑ ๊ฐ์ ๊ท ํ์ ๋ง์ถ๋ ๋ถ๋ถ์์ ๋ ผ์๊ฐ ์์์ต๋๋ค. ์ข์ ์์ฝ๊ณผ ๊ฒฐ์ ๋ฅผ ์์ ํ ๋ถ๋ฆฌํ๋ฉด ์ฑ๋ฅ์ ๋์์ง์ง๋ง, ๊ฒฐ์ ์คํจ ์ ์ข์์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ ์ง์ ๋ํ ์ ํฉ์ฑ ๋ฌธ์ ๊ฐ ์ค์ํ๊ฒ ๋ค๋ค์ก์ต๋๋ค. -
์ต์ข ์์ฌ ๊ฒฐ์
์ข์ ์์ฝ๊ณผ ๊ฒฐ์ ์ ์์ ํ ๋ถ๋ฆฌ: ์ข์ ์์ฝ๊ณผ ๊ฒฐ์ ๊ณผ์ ์ ์์ ํ ๋ถ๋ฆฌํ๊ณ , ์์ ์ข์ ์์ฝ์ Redis์ ์ ์ฅํ๋ฉฐ, ๊ฒฐ์ ๊ฐ ์๋ฃ๋๋ฉด ์ข์์ DB์ ์ต์ข ์ ์ผ๋ก ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ฒฐ์ ์คํจ ์ ์ข์์ ์๋์ผ๋ก ํด์ ํ๋๋ก TTL์ ์ค์ ํ์ฌ, ์ข์์ด ๋ถํ์ํ๊ฒ ์ ์ ๋์ง ์๋๋ก ํ์ต๋๋ค.
์บ์ ์ ์ (Redis vs Caffeine)
-
๋์ ์ด์
๋ณธ ํฐ์ผํ ์๋น์ค์์๋ย ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ์ค์ํ ์ข์ ์๋น์ค์ ์ฑ๋ฅ์ ๊ทน๋ํํ๊ธฐ ์ํดย Redis ์บ์๋ฅผ ๋์ ํ์ต๋๋ค.ย ๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ข์ ์๋น์ค์ Redis์ย ๋ถ์ฐ ์บ์ย ๊ธฐ๋ฅ์ ํ์ฉํด ์์ ์ ์ด๊ณ ๋น ๋ฅธ ์บ์ฑ์ ๊ตฌํํ์๊ณ , ํธ๋ํฝ์ด ์ง์ค๋๋ ํต์ฌ ์๋น์ค์ ์ ํฉํ๋ค๊ณ ํ๋จํ์ต๋๋ค. ๋ฐ๋ฉด,ย ๋ก๊ทธ์ธ ์ฒ๋ฆฌ์ ๊ฐ์ ์๋์ ์ผ๋ก ์ฐ์ ๋๊ฐ ๋ฎ์ ๊ธฐ๋ฅ์๋ ๋ก์ปฌ ์บ์(Caffeine Cache) ๋ฅผ ์ ํํ์ต๋๋ค. ๋ก๊ทธ์ธ์ ๋น ๋ฅธ ์๋ต์ด ํ์ํ์ง๋ง ํธ๋ํฝ ๋ถํ๊ฐ ์ ๊ธฐ ๋๋ฌธ์ย Caffeine์ด ์ ํฉํ๋ค๊ณ ๋ณด์์ต๋๋ค. -
๋ฌธ์ ์ํฉ
Redis๋ ์ข์ ์๋น์ค์ ๊ฐ์ย ํต์ฌ ๊ธฐ๋ฅ์์ ๋งค์ฐ ์ ์ฉํ์ง๋ง,ย ๋ชจ๋ ๊ธฐ๋ฅ์ Redis๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์์ ๋ญ๋น๊ฐ ๋ ์ ์๋ค๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ํนํ,ย ๋ก๊ทธ์ธ๊ณผ ๊ฐ์ ๋น๊ต์ ์ ์ ํธ๋ํฝ์ด ๋ฐ์ํ๋ ์๋น์ค์์ Redis๋ฅผ ์ฌ์ฉํ ํ์์ฑ์ด ๋จ์ด์ก์ต๋๋ค. ๋ฐ๋ผ์, ๊ฐ ๊ธฐ๋ฅ์ ๋ง๋ย ํจ์จ์ ์ธ ์บ์ ์ ๋ต์ ์๋ฆฝํ๋ ๊ฒ์ด ํ์ํ์ต๋๋ค. -
ํด๊ฒฐ ๋ฐฉ์
์ข์ ์๋น์ค์ ๊ฐ์ ํธ๋ํฝ์ด ์ง์ค๋๋ ๊ธฐ๋ฅ์๋ย Redis ์บ์๋ฅผ, ์๋์ ์ผ๋ก ๋ถํ๊ฐ ์ ์ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ์ ๊ฐ์ ๊ธฐ๋ฅ์๋ย ๋ก์ปฌ ์บ์์ธย Caffeine Cache๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์ต๋๋ค. Caffeine์ย ์ต์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด ๋น ๋ฅธ ์๋ต ์๋๋ฅผ ๋ณด์ฅํ๋ฉด์๋, ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ ๋ฉด์์ ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ ์ ์์ ์ ํฉํ์ต๋๋ค. -
์๊ฒฌ ์กฐ์จ
ํ ๋ด์์ย ์ฑ๋ฅ ์ต์ ํ์ย ์์ ํจ์จ์ฑ์ ๊ณ ๋ คํ ๋ ผ์๊ฐ ์์์ต๋๋ค. Redis๋ ์ฑ๋ฅ ๋ณด์ฅ ์ธก๋ฉด์์ ์ฐ์ํ์ง๋ง, ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ์ฉํ ๊ฒฝ์ฐ ๋น์ฉ๊ณผ ์์ ์๋ชจ๊ฐ ํฌ๋ค๋ ์๊ฒฌ์ด ์์์ต๋๋ค. ์ด์ ๋ฐ๋ผ, ํต์ฌ ๊ธฐ๋ฅ์๋ Redis๋ฅผ ์ฌ์ฉํ๊ณ , ์๋์ ์ผ๋ก ํธ๋ํฝ์ด ์ ์ ๋ถ๋ถ์๋ Caffeine์ ์ ์ฉํดย ๊ท ํ ์๋ ์บ์ ์ ๋ต์ ๋์ ํ๊ธฐ๋ก ํ์ต๋๋ค. ๋ํCaffeine์ ์ฅ์ ์ค ํ๋๋ ๋ก์ปฌ ๋ฉ๋ชจ๋ฆฌ์์ ๋์ํ๊ธฐ ๋๋ฌธ์, Redis์ฒ๋ผ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ๊ทผํ๋ ์ง์ฐ ์๊ฐ์ด ๋ฐ์ํ์ง ์์ผ๋ฉฐ, ๋ ๋น ๋ฅด๊ฒ ์บ์๋ฅผ ์กฐํํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, Redis์ ์ฅ์ ์ค ํ๋๋ ์บ์ฑ ๋ด์ญ์ ํ์ธํ ์ ์๋ค๋ ์ ์ด์ง๋ง, ๋ก๊ทธ์ธ ์บ์์ ๊ฒฝ์ฐ ์บ์ ๋ด์ญ์ ํ์ธ์ ์ค์๋๊ฐ ๋ค์ ๋จ์ด์ก๊ธฐ ๋๋ฌธ์ Redis์ ์ด์ ์ ๋ถ๊ฐ๋์ง ์์์ต๋๋ค. ๋ฐ๋ผ์, ์๋๊ฐ ๋ ์ค์ํ ํ์ฌ ํ๋ก์ ํธ์ ์ํฉ์์๋ Caffeine์ ์ ํํ๋๊ฒ์ด ์ข ๋ ๋งค๋ ฅ์ ์ด์์ต๋๋ค.
-
์ต์ข ์์ฌ ๊ฒฐ์
๊ฒฐ๋ก ์ ์ผ๋ก,ย ์ข์ ์๋น์ค์ ๊ฐ์ ํต์ฌ ๊ธฐ๋ฅ์๋ย Redis๋ฅผ,ย ๋ก๊ทธ์ธ ์ฒ๋ฆฌ์ ๊ฐ์ ๋ถํ๊ฐ ์ ์ ๊ธฐ๋ฅ์๋ย Caffeine Cache๋ฅผ ์ ์ฉํ๋ ๊ฒ์ผ๋ก ์ต์ข ๊ฒฐ์ ํ์ต๋๋ค. ์ด๋ฅผ ํตํด,ย ํต์ฌ ๊ธฐ๋ฅ์์๋ ์ฑ๋ฅ์ ๊ทน๋ํํ๊ณ ,ย ๋นํต์ฌ ๊ธฐ๋ฅ์์๋ ์์์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฐฐํ์ฌ ๋น์ฉ์ ์ ๊ฐํ๋ฉด์๋ ์ฑ๋ฅ์ ์ ์งํ๋ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ ์ ์์์ต๋๋ค.
๋ถ์ฐ๋ฝ ์ ์ฉ (Redis ๋ถ์ฐ๋ฝ)
-
๋์ ์ด์
์ข์ ์ํ ๋ณ๊ฒฝ ์ ๋์์ฑ ์ด์๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํจ. -
๋ฌธ์ ์ํฉ
- ์ข์ ์์ฝ/๊ฒฐ์ ์๋ฃ/๊ฒฐ์ ์ทจ์์ ๋ฐ๋ผ ์ข์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ณผ์ ์์ ์ข์ ์ํ ๋ถ์ผ์น ๋ฌธ์ ๋ฐ์
- ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๋์ผํ ์ข์์ ์ ํํ๋ ๊ฒฝ์ฐ ์ค๋ณต์์ฝ์ ๋ฌธ์ ๋ฐ์
-
ํด๊ฒฐ ๋ฐฉ์
-
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ํ: Lettuce vs. Redisson
Lettuce ๋จ์ :
- ์คํ๋ฝ ํํ๋ก Redis์ ๋ง์ ๋ถํ๋ฅผ ๊ฐํ ์ ์์.
- ํ์์์ ์ฒ๋ฆฌ๊ฐ ์์ผ๋ฏ๋ก ๋ฌดํ ๋๊ธฐ ์ํ๋ก ์ธํ ์์คํ ์ฅ์ ๊ฐ๋ฅ์ฑ ์กด์ฌ.
Redisson ์ฅ์ :
- Pub/Sub ๋ฐฉ์์ผ๋ก Redis ๋ถํ๋ฅผ ์ค์.
- ํ์์์ ์ค์ ์ ํตํด ๋ฌดํ ๋๊ธฐ๋ฅผ ๋ฐฉ์งํ ์ ์์.
-
์์๋๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์
๋ฉ์๋ ๋ด์์ ๋ฝ ํด์ ์ ํธ๋์ญ์ ์ปค๋ฐ ์ฌ์ด์ ๋ค๋ฅธ ์ฐ๋ ๋๊ฐ ๋ฝ์ ํ๋ํ์ฌ ์์ง ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์.
-
ํธ๋์ญ์ ์ ํ ์์ฑ ํ์ฉ:
REQUIRES_NEW์ ํ ์์ฑ์ ์ฌ์ฉํ์ฌ ๋ณ๋์ ํธ๋์ญ์ ์์ ๋ฝ์ ์ฒ๋ฆฌ.@Transactional(propagation = Propagation.REQUIRES_NEW)
-
-
์๊ฒฌ ์กฐ์จ
Redisson ์ฌ์ฉ๊ณผ ํธ๋์ญ์ ์ ํ ์์ฑ์ ํตํด ๋ฐ์ดํฐ ์ ํฉ์ฑ๊ณผ ์ฑ๋ฅ์ ๋์์ ์ ์งํ๋ ๋ฐฉ๋ฒ ๋ ผ์. -
์ต์ข ์์ฌ ๊ฒฐ์
Redisson ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ Redis ๊ธฐ๋ฐ์ ๋ถ์ฐ๋ฝ์ ๊ตฌํํ๊ณ , ํธ๋์ญ์ ์ ํ ์์ฑ์ ์ ์ ํ ํ์ฉํ์ฌ ์ต์ ์ ์ฑ๋ฅ๊ณผ ์ ํฉ์ฑ์ ์ ์งํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
Redis๋ฅผ ์ด์ฉํ ์กฐํ ์บ์ฑ ์ฒ๋ฆฌ (์ฒ๋ฆฌ๋ 28.8/sec โ 44.6/sec)
Before
After
๊ฐ์ ๋ฐฉ๋ฒ: ์กฐํ๊ฐ ๊ฐ์ฅ ๋ง์ ๊ฒ์ผ๋ก ์๊ฐ๋๋ ์ข์ ์กฐํ์ Redis๋ฅผ ํตํ ์บ์ฑ์ผ๋ก ์ฑ๋ฅ ํฅ์
Gateway์์ ์ ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๊ฒ์ฆ์ ์ํ caffeine cache ์ ์ฉ (์ฒ๋ฆฌ๋ 323.9/sec โ 398.1/sec)
Before
After
๊ฐ์ ๋ฐฉ๋ฒ: Gateway ๋ด๋ถ์์ Caffeine ์บ์๋ฅผ ํตํ ์ ์ ๊ฒ์ฆ ์ ๋ณด ์บ์ฑ
์์ฌ๊ฒฐ์ ๊ณผ์ : redis๋ฅผ ์ด์ฉํ ์บ์ฑ์ฒ๋ฆฌ๋ฅผ ํ ๊น๋ ๊ณ ๋ฏผํ์ง๋ง ๋ฉ์ธ ๋น์ฆ๋์ค ๋ก์ง์ด ์๋๊ณ ๋ถํ๊ฐ ์์ฒญ ํด ๊ฒ์ผ๋ก ๋ณด์ด์ง ์์ Caffeine ์บ์๋ก ํด๊ฒฐ
ํฐ์ผ ์๋งค ์๋น์ค์ ์ฑ๋ฅ ํฅ์์ ์ํ Kafka ๋์ (์ฒ๋ฆฌ๋ 1000๊ฑด 141.4/sec โ 30000๊ฑด 492.7/sec)
Before
After
๊ฐ์ ๋ฐฉ๋ฒ: ํฐ์ผ ์์ฝ ๊ณผ์ ์์ ๊ธฐ์กด์๋ ๋๊ธฐ์ฒ๋ฆฌ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์งํํ์์ง๋ง ๋์ฉ๋ ํธ๋ํฝ์ ๊ฒฌ๋ ์ ์์ด ๋ฉ์์ง ์์คํ ์ธ Kafka๋ฅผ ์ฌ์ฉ
์์ฌ๊ฒฐ์ ๋ฐฉ๋ฒ: RabbitMQ์ Kafka ์ค์์ ๊ณ ๋ฏผํ์์ง๋ง, ์์ฝ ๊ณผ์ ์์ ํ๋์ ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ด๋ฒคํธ๋ง๋ค ๋ณ๋์ ํ ํฝ์ ์ด์ฉํ ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํ์์ผ๋ฉฐ, Kafka๋ ์ด๋ฌํ ์๊ตฌ์ ๋ ์ ํฉํ ์ ํ์ด์์ต๋๋ค. Kafka๋ ํ ํฝ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ํตํด ๊ฐ ์ด๋ฒคํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ์ง์ํ๋ฉฐ, ์ด๋ฅผ ํตํด ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ํ์ฅ์ฑ์ด ์ฉ์ดํด์ง๋๋ค. ํนํ, ๋๊ท๋ชจ ํธ๋ํฝ์ด๋ ์ค์๊ฐ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ์ด ํ์ํ ํ๊ฒฝ์์๋ Kafka์ ๋ถ์ฐ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ด ๋ฐ์ด๋ RabbitMQ๋ณด๋ค ์ ํฉํ ์ ํ์ด์์ต๋๋ค.
๋ฒ๊ทธ๋ฐ์ดํฐ - ๊ฒฐ์
๋ฌธ์ ์ ์ : ๋ฒ๊ทธ๋ฐ์ดํฐ๋ฅผ ์งํํ๋ ๋์ค ์ค๋ณต ๊ฒฐ์ ๋ฐ์์ ๊ดํ ๋ถ๋ถ ๋ฐ๊ฒฌ
์ฆ์ : ํ๋์ ํฐ์ผ์ ๋ํด 2๊ฐ ์ด์์ ๊ฒฐ์ ๊ฐ ์์ฑ๋๋ฉฐ ๊ฒฐ์ ๊ฐ ์ด๋ฃจ์ด์ง
์์ธ ๋ถ์ :
์นด์นด์คํ์ด ๊ฒฐ์ ๋ฅผ ์ํด์๋ ๊ฒฐ์ ์์ฒญ๊ณผ ์น์ธ์ 2๋จ๊ณ๋ก ์งํ
๊ฒฐ์ ์์ฒญ ์ ์ค์ ๊ฒฐ์ ๊ฐ ์ด๋ฃจ์ด์ง๋ redirect_url์ ์ ๊ณต
ํ์ง๋ง ํด๋น url์ ์ ์ฅํ์ง ์๊ณ ๋ฐํ๋ง ํ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ํด๋น url์ ๋ถ์ค ์ ๊ฒฐ์ ๋ฅผ ์งํ ํ ์ ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ โ ๋ฐ๋ผ์ ์๋ก์ด ๊ฒฐ์ ๋ฅผ ์์ฑํ ์ ์๋๋ก ๊ตฌํ
๋ค๋ง ์ฌ์ฉ์๊ฐ ๊ฒฐ์ url์ ์ ์ฅํด๋๊ณ ์๋ก ๋ฐ๊ธ ๋ฐ์ url ์ด 2๊ฐ์ง ๊ฒฐ์ ๋ฅผ ์งํ ์ ์ค๋ณต ๊ฒฐ์ ๋ฐ์
ํด๊ฒฐ ๋ฐฉ๋ฒ : ์๋ก์ด ๊ฒฐ์ url์ ๋ฐ๊ธ ์ ๊ธฐ์กด ๊ฒฐ์ ์์ ์ ์ฅ๋ tid(๊ฒฐ์ id)๋ฅผ ๋ฎ์ด์์ฐ๊ธฐ๋ฅผ ํ์ฌ ๊ธฐ์กด์ ๊ฒฐ์ url์ ๋ฌด๋ ฅํ
๊ฒฐ๊ณผ ๋ฐ ํ์ธ : ํด๋น ๋ฐฉ๋ฒ์ ์ ์ฉ ํ ๊ฒฐ์ ๊ฐ ์์ฒญ ์ ๋งํผ ์๊ธฐ์ง ์๊ณ url์ ์๋ก ๋ฐ๊ธ ๋ฐ์๋ ์ค๋ณต ๊ฒฐ์ ๋ฅผ ๋ฐฉ์ง
| ํ์๋ช | ํฌ์ง์ | ๋ด๋น(๊ฐ์ธ๋ณ ๊ธฐ์ฌ์ ) | ๊นํ๋ธ ๋งํฌ |
|---|---|---|---|
| ๋ฐํ์ธ | ์ฌ์ฉ์ ์ธ์ฆ/์ธ๊ฐ | โถ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ์๋น์ค - JWT ๊ธฐ๋ฐ ์ธ์ฆ ๋ฐ ์ธ๊ฐ ์๋น์ค ์ค๊ณ ๋ฐ ๊ตฌํ - ์ธ์ฆ ํ ํฐ ๊ฒ์ฆ ๋ฐ ์ฒ๋ฆฌ ๋ก์ง ๊ฐ๋ฐ - ์ธ์ฆ/์ธ๊ฐ ๊ด๋ จ ์๋น์ค ๊ฐ ํต์ ๋ฐ ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฅ ์ถ๊ฐ โถ ๊ฒ์ดํธ์จ์ด ์๋น์ค - MSA ํ๊ฒฝ์ ์ํ ๊ฒ์ดํธ์จ์ด ์๋น์ค ๊ตฌ์ถ - Caffeine ์บ์๋ฅผ ํ์ฉํ ์บ์ฑ ๋ก์ง ์ค๊ณ ๋ฐ ๊ตฌํ โถ ์ ์ ์๋น์ค - ์ ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ ์ค๊ณ ๋ฐ ๊ตฌํ - ๋ด๋ถ ํต์ ๋ฐ ๊ธฐ๋ณธ ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฅ ์ถ๊ฐ |
GitHub tellang |
| ์ ์๋ฐฐ | ๊ฒฐ์ ์๋น์ค ๊ฐ๋ฐ | โถ ๊ฒฐ์ ์๋น์ค ๊ฐ๋ฐ - ์ค์ ์์ฝ๋ ํฐ์ผ์ ๋ํ ๊ฒฐ์ ์๋น์ค ์ ๊ณต - ์นด์นด์คํ์ด ๊ฒฐ์ ๋ฅผ ์ฐ๋ํ์ฌ ์ค ๊ฒฐ์ ์ฒดํ โถ AWS ์ธํ๋ผ ๊ตฌ์ฑ ๋ฐ ์ํคํ ์ณ ์ค๊ณ - RDS, ElastiCache, S3, EC2 ๊ตฌ์ฑ โถ ๋ก๊ทธ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง ๊ตฌ์ถ - ELK๋ฅผ ํตํ MSA ํ๊ฒฝ ํตํฉ ๋ก๊ทธ ์์ง - Grafana & Prometheus ์์คํ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง |
GitHub SerenityZenDev |
| ๋ฐ์ฃผ์ | ๊ณต์ฐ/์ข์ ์๋น์ค ๊ฐ๋ฐ | โถ ๊ณต์ฐ/์ข์ ์๋น์ค ๊ฐ๋ฐ - ๋ค์์ ๊ณต์ฐ ์ ๋ณด์ ์ฐ๊ด๋ ์ข์๋ค๋ก ํฐ์ผํ ์ ํ์ํ ์ ๋ณด๋ค์ ๊ด๋ฆฌ - ํฐ์ผ ์๋น์ค์ Kafka ๋น๋๊ธฐ ํต์ ์ผ๋ก, ํฐ์ผ์ด ์์ฑ/์ทจ์ ์์ ์ข์ ๋ณ๊ฒฝ ํ๋ก์ฐ ๊ฐ๋ฐ - Redis๋ฅผ ํตํ ์ค์๊ฐ ์ข์ ๊ด๋ฆฌ ๊ธฐ๋ฅ ๊ฐ๋ฐ |
GitHub juoonge |
| ์ตํ | ํฐ์ผ ์๋น์ค ๊ฐ๋ฐ | โถ ํฐ์ผ ์๋น์ค ๊ฐ๋ฐ - ๊ณต์ฐ/์ข์์ ๋ํ ํฐ์ผ์ ์์ฑ ๋ฐ ๊ด๋ฆฌ - ๊ณต์ฐ/์ข์ ์๋น์ค์ Kafka ๋น๋๊ธฐ ํต์ ์ผ๋ก, ํฐ์ผ์ ์ํ์ ๋ฐ๋ฅธ ๊ณต์ฐ/์ข์ ๋ณ๊ฒฝ ํ๋ก์ฐ ๊ฐ๋ฐ โถ ECS, MSK, Elastic Cache, RDS๋ฅผ ํ์ฉํ์ฌ ํธ์คํ ํ๊ฒฝ ๊ตฌ์ถ |
GitHub CZ-punk |









