์ผ๋ฆฌ๋ฒ๋(Early-Bird)๋ ์ฌ์ฉ์๋ค์ด ๋ค์ํ ์ข ๋ฅ์ ์ํ์ ํ๋งคํ๊ณ ๊ตฌ๋งคํ ์ ์๋ e-commerce ํ๋ซํผ์ ๋๋ค. ํนํ ํ๋งค์๋ ํ๋งค์๊ฐ ํน์ ์๊ฐ์ ๊ตฌ๋งค ๋ฒํผ์ด ํ์ฑํ๋๋๋ก ํ๋งค ์๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ด ์๊ฐ ๋์ ๊ตฌ๋งค์๋ค์ ํ์ ์๋ ์ํ์ ๊ตฌ๋งคํ ์ ์๊ฒ ๋ฉ๋๋ค.
ํ๋ก์ ํธ ๊ธฐ๊ฐ: 2024.04.17 - 2024.05.14
- Java 21
- Gradle
- Spring Boot 3.2.5
- MariaDB
ํ๋ ์์ํฌ & ๋ผ์ด๋ธ๋ฌ๋ฆฌ
DB
๋ฉ์์ง ํ ์์คํ
์ธํ๋ผ
- Redis Caching์ ํตํ ์ํ ์ฌ๊ณ ๊ด๋ฆฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ ๊ฐ์ ๋ฐ ์ฌ๊ณ ๊ด๋ฆฌ ์ฑ๋ฅ ํฅ์
- Api Gateway๋ฅผ ํตํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ ๊ตฌ์ถ
- ๋จ์ผ ์๋ํฌ์ธํฐ ์ ๊ณต ๋ฐ ํ์ฅ์ฑ ํฅ์, ์ธ๊ฐ ๋ฐ ๊ถํ ๊ด๋ฆฌ
- Kafka๋ฅผ ํตํ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ
์ฒ ๊ตฌ์ถ
- Kafka๋ฅผ ํตํด ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ๋น๋๊ธฐ ํต์ ๊ตฌํ(๋ฐ์ดํฐ ์กฐ์ ์์ )
- Redis Replication์ ํตํ ๋ถ์ฐ ์ฒ๋ฆฌ
- ์ฑ๋ฅ ์ ํ ๊ฐ์ ๋ฐ ๊ฐ์ฉ์ฑ ํฅ์
- Open Feign์ ํ์ฉํ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ํต์
- ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ๋๊ธฐ ํต์ ๊ตฌํ(๋จ์ ์กฐํ)
- ์ค์ผ์ค๋ฌ๋ฅผ ํตํ ์ฃผ๋ฌธ ๋ฐ ๋ฐฐ์ก ์ํ ๊ด๋ฆฌ
- ์ฃผ๊ธฐ์ ์ธ ์ฃผ๋ฌธ ๋ฐ ๋ฐฐ์ก ์ํ ๋ณ๊ฒฝ
- ํ์ ์๋ ์ํ ๊ตฌ๋งค ๊ธฐ๋ฅ
- JWT๋ฅผ ์ฌ์ฉํ ๋ก๊ทธ์ธ
- Google SMTP๋ฅผ ์ฌ์ฉํ ์ด๋ฉ์ผ ์ธ์ฆ
- Spring Security๋ฅผ ์ฌ์ฉํ ์ฌ์ฉ์ ์ธ์ฆ
Redis ์บ์๋ฅผ ํ์ฉํ์ฌ ์ํ ์ฃผ๋ฌธ ์ฒ๋ฆฌ ์ฑ๋ฅ ๊ฐ์ : write-back & Lua script ์ฌ์ฉ (โ๏ธ click)
- ์ฐ๊ธฐ ์ ๋ต: Write-Throw -> Write-Back
- TPS: 153.1/sec -> 648.1/sec
Kafka ํธ๋์ญ์
๊ณผ Spring ํธ๋์ญ์
์์ ์ฐจ์ด๋ก ์ธํ ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์ ํด๊ฒฐ (โ๏ธ click)
- ๋ฌธ์ ์ํฉ: ํธ๋์ญ์ ์ฑ๊ณต ์ฌ๋ถ์ ๊ด๊ณ์์ด ์นดํ์นด ์ด๋ฒคํธ๋ฅผ ๋ฐํํจ. ์ด๋ก ์ธํด ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์ ์ฐ๋ ค
- ํด๊ฒฐ ๋ฐฉ๋ฒ: Spring์ย @TransactionalEventListener์ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ์ปค๋ฐ ์ดํ์ ์ด๋ฒคํธ๋ฅผ ๋ฐํํ๋๋ก ๊ตฌํ
Kafka Consumer ๊ทธ๋ฃน ๊ด๋ฆฌ๋ฅผ ํตํ ๋ฉ์์ง ์ฒ๋ฆฌ ์ต์ ํ (โ๏ธ click)
- ๋ฌธ์ ์ํฉ: Kafka์์ ๋์ผํ ๊ทธ๋ฃน ID๋ฅผ ์ฌ์ฉํ๋ 2๊ฐ์ Consumer๊ฐ ํ๋์ ํ ํฝ์ ๊ตฌ๋ ํ ๋, ํ ์ปจ์๋จธ์์๋ง ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๋ฌธ์ ๋ฐ์
- ํด๊ฒฐ ๋ฐฉ๋ฒ: Consumer๋ง๋ค ๊ณ ์ ํ ๊ทธ๋ฃน ID๋ฅผ ์ง์ ํด ๋ ๋ฆฝ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๋๋ก ๊ตฌํ
- ๋ฌธ์ ์ํฉ: OpenFeign ํต์ ์ค ์ฅ์ ๋ฐ์ ์, ๋ค๋ฅธ ์๋น์ค์ ์ฅ์ ๊ฐ ์ ํ๋จ
- ํด๊ฒฐ ๋ฐฉ๋ฒ: Resilience4J์ Circuit Breaker ์ TimeLimiter ๊ธฐ๋ฅ์ ํ์ฉํด ์๋น์ค ๊ฐ ์ฅ์ ์ ํ ๋ฌธ์ ํด๊ฒฐ
Redis Replication์ ํตํ ๋ถ์ฐ ์ฒ๋ฆฌ (โ๏ธ click)
- ๋ฌธ์ ์ํฉ: ๋จ์ผ Redis ์ธ์คํด์ค์ ๊ณผ๋ํ ๋ถํ๊ฐ ๋ฐ์ํ๋ฉด ์ฑ๋ฅ ์ ํ ๋ฐ ๊ฐ์ฉ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
- ํด๊ฒฐ ๋ฐฉ๋ฒ: Redis Replication์ ํตํด ๋ง์คํฐ-์ฌ๋ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ์ฌ ๋ถํ๋ฅผ ๋ถ์ผ์ํด
- ๋ง์คํฐ: ๋ฐ์ดํฐ ์ฐ๊ธฐ ์์ ๋ด๋น
- ์ฌ๋ ์ด๋ธ: ๋ง์คํฐ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ๋ฐ์ ์ฝ๊ธฐ ์์ ๋ด๋น