์ค์๊ฐ ์๋น ์์ฝ ๋ฐ ๋ฐฉ๋ฌธ ๊ด๋ฆฌ ์์คํ
๐ Notion์ผ๋ก ๋ณด๊ธฐ:
Table-Now
- ๐ ํ๋ก์ ํธ ์๊ฐ
- ๐ฏ ํต์ฌ ๋ชฉํ
- ๐ ์ฃผ์ ๊ธฐ๋ฅ
- ๐ ๏ธ ์ฌ์ฉ ๊ธฐ์
- ๐๏ธ ์ํคํ ์ฒ
- ๐ง ๊ธฐ์ ์ ์์ฌ๊ฒฐ์
- ๐งฏ ํธ๋ฌ๋ธ ์ํ
- ๐๏ธ API ๋ช ์ธ์
- ๐๏ธ ERD
- ๐งโ๐ป ํ์ ์๊ฐ
TableNow๋ ์ฌ์ฉ์๊ฐ ์๋น์ ์์ฝํ๊ณ ๋ฐฉ๋ฌธํ ์ ์๋๋ก ์ง์ํ๋ ์ค์๊ฐ ์์ฝ ๊ด๋ฆฌ ์์คํ
์
๋๋ค.
๊ณ ๊ฐ, ์ฌ์ฅ๋, ๊ด๋ฆฌ์ ๊ฐ๊ฐ์ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Spring Security + JWT
- Redis: Refresh Token ์ ์ฅ, Access Token ๋ธ๋๋ฆฌ์คํธ ๋ฑ๋ก
- OAuth2.0 ์์ ๋ก๊ทธ์ธ ์ฐ๋
- Elasticsearch: ๊ฒ์ ๊ธฐ๋ฅ ๊ณ ๋ํ
- ์ญ์์ธ โ ๋น ๋ฅธ ๊ฒ์ ์๋ ๋ณด์ฅ
- ํํ์ ๋ถ์, ์ ์ฌ๋ ๊ธฐ๋ฐ ๋ญํน โ ํจ์จ์ ์ธ ๊ฒ์ ์์ง ๊ตฌํ
- Redis: ์๊ฐ๋๋ณ ์ธ๊ธฐ ๊ฒ์์ด ์บ์ฑ
- Redis ๊ธฐ๋ฐ ๋ถ์ฐ ๋ฝ(Redisson)
- Rabbit MQ ์ฌ์ฉ
- ํ์ ํํด, ํ๋กํ ์ด๋ฏธ์ง ๋ฑ๋ก ๋ฐ ์์
- ํ๋กํ ๋ฐ ๊ฐ๊ฒ ์ด๋ฏธ์ง ์ ๋ก๋
- ๊ฐ๊ฒ ์ ๋ณด ๋ฑ๋ก/์์
- ์์ ์นดํ ๊ณ ๋ฆฌ ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ
- ์ฌ์ฉ์ ํ์ ๋ฑ๋ก
- ์ค์๊ฐ ์์ฝ ๋ฑ๋ก
- ์ด๋ฒคํธ ์ ์ฒญ ๋ฐ ์๋ฆผ
- ๋น์๋ฆฌ ๋๊ธฐ ๋ฑ๋ก ๋ฐ ์๋ฆผ
- ์์ฝ๊ธ ๊ฒฐ์ ์ฒ๋ฆฌ
- ๊ฐ๊ฒ๋ณ ๋งค์ถ ์ ์ฐ ๋ฐ ์๋ ์ง๊ณ
- ์์ฝ์ โ ์ฌ์ฅ 1:1 ์ฑํ
- ๐ ๋์์ฑ ์ ์ด๋ฅผ ์ํ DB Lock vs Redisson Lock ๋น๊ต
- ๐ RDBMS LIKE ๊ฒ์ VS Elastic Search ์ ํค์๋ ๊ฒ์
- ๐ค ์์ ๋ก๊ทธ์ธ(Kakao, Naver)์ WebClient๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ ์ด์
- ๐ฌ 1:1(์์ฝ์:๊ฐ๊ฒ) ์ฑํ ๊ธฐ๋ฅ ๊ณ ๋ํ๋ฅผ ์ํด RabbitMQ Relay๋ฅผ ์ ์ฉํ ์ด์
- ๐ ๊ธฐ์ ์ ์์ฌ ๊ฒฐ์ : Waitlist ๋ฑ๋ก ๋์์ฑ ์ ์ด๋ฅผ ์ํ ๋ฝ ๋ฐฉ์ ์ ํ ๋ฐฐ๊ฒฝ
- ๐ Spring Batch์ Reddison Lock์ ์ ํํ ์ด์
- ๐ Redis + RabbitMQ ๊ธฐ๋ฐ ์ด๋ฒคํธ ์คํ ๊ตฌ์กฐ ๋์
โ ๏ธ ๋ฐ์ดํฐ ์ ํฉ์ฑ ์ค๋ฅ: ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ Redis + ES ๋ฐ์โ ๏ธ ๋น์๋ฆฌ ์๋ฆผ ๊ฐ์ : ์ค์ผ์ค๋ฌ โ RabbitMQโ ๏ธ RepositoryItemReader์ ํ์ด์ง ์ฒ๋ฆฌ ๋ฐฉ์์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ํ์ด์ง ๋ฐ๋ฆผ ํ์โ ๏ธ WebSocket Handshake ์ Authorization ํค๋๊ฐ ๋๋ฝ๋๋ ์ด์ ์ ํ ์คํธ ํ๊ฒฝ์ ํ๊ณโ ๏ธ Redisson ๋ฝ ์ ์ฉ ์ ๋ฐ์ดํฐ ๋ฏธ๋ฐ์ ์ด์์ self-invocation ๋ฌธ์
|
๐ ๋ฆฌ๋ ์ต์ ๋ฆฌ ๊ฐ๊ฒ / ์นดํ ๊ณ ๋ฆฌ GitHub |
๐ ๋ถ๋ฆฌ๋ ๊นํ๋ ์ธ์ฆ / ์ ์ / ์ฑํ GitHub |
๐ซ ๋ฉค๋ฒ ๋ฐ์ฑํ ๊ฒฐ์ / ์ ์ฐ GitHub |
๐ซ ๋ฉค๋ฒ ๋ฐ์ฑํธ ์๋ฆผ / ๋๊ธฐ๋ชฉ๋ก GitHub |
๐ซ ๋ฉค๋ฒ ์ด์ฑ์ ์์ฝ / ์ด๋ฒคํธ GitHub |


