728x90
ARCHITECTURE
[์ค๊ณ ์์ฌ๊ฒฐ์ ] ์๋ฆฌ์ฆ ๋ชฉ๋ก
๋จ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ฒ๋ณด๋ค ๋ ์ค์ํ๋ ๊ฑด “์ ์ด ๋ฐฉ์์ ์ ํํ๋๊ฐ?”์ ๋ํ ๊ณ ๋ฏผ์ด์๋ค.
๋ชฉ์ฐจ
์ด ์๋ฆฌ์ฆ๋ Booktine ๊ฐ๋ฐ ๊ณผ์ ์์ ์ค์ ๋ก ๊ณ ๋ฏผํ๋ ์ค๊ณ ์ ํ ๊ณผ์ ๋ค์ ์ ๋ฆฌํ ๊ธ์ด๋ค. ๋จ์ ๊ตฌํ ๋ฐฉ๋ฒ๋ณด๋ค๋ “์ ์ด ๊ตฌ์กฐ๋ฅผ ์ ํํ๋๊ฐ”๋ฅผ ์ค์ฌ์ผ๋ก ๊ธฐ๋กํ๋ค.
01
์ด๋ฏธ์ง ์
๋ก๋ ์ ์ฑ
๊ฒฐ์ ๊ณผ์
Booktine์๋ ์ฑ
ํ์ง ์ด๋ฏธ์ง์ ํ๋กํ ์ด๋ฏธ์ง ๋ ๊ฐ์ง ์ด๋ฏธ์ง๊ฐ ์กด์ฌํ๋ค. ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ์ธ๋ถ URL ์ง์ ์ ์ฅ, ์๋ฒ์์ S3 ์ฌ์
๋ก๋, Presigned URL์ ํตํ ํด๋ผ์ด์ธํธ ์ง์ ์
๋ก๋ ์ธ ๊ฐ์ง๋ฅผ ๋น๊ตํ๋ค.
์ด๋ฏธ์ง ์ข
๋ฅ๋ณ๋ก ํน์ฑ์ด ๋ฌ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ ์ ํํ๊ฒ ๋ ๊ณผ์ ์ ์ ๋ฆฌํ๋ค.
→ ์์ธํ ๋ณด๊ธฐ 02
ํ์ด์ง๋ค์ด์
๋ฐฉ์ ์ ํ ๊ณผ์
๊ฒ์๋ฌผ, ๋ฉ๋ชจ, ์ถ์ฒ ๋์ ๋ชฉ๋ก ๋ฑ ๋ชฉ๋ก ์กฐํ๊ฐ ๋ง์ ์๋น์ค ํน์ฑ์ ํ์ด์ง๋ค์ด์
๋์
์ด ํ์ํ๋ค.
์คํ์
๊ธฐ๋ฐ๊ณผ ์ปค์ ๊ธฐ๋ฐ์ ๋น๊ตํ๊ณ , Spring Data์
→ ์์ธํ ๋ณด๊ธฐ Page<T>์ Slice<T> ์ค ์ด๋ค ๋ฐฉ์์ด Booktine์ ์ ํฉํ์ง ์ ํํ ๊ณผ์ ์ ์ ๋ฆฌํ๋ค.03
๋
์ ๋ฆฌ๋ง์ธ๋ ์๋ฆผ ๊ตฌํ ๋ฐฉ์ ์ ํ ๊ณผ์
์ฌ์ฉ์๊ฐ ์ค์ ํ ์๊ฐ์ ๋ง์ถฐ ์๋ฒ๊ฐ ์๋ฆผ์ ์ ๋ฌํ๋ ๋ฆฌ๋ง์ธ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ฉด์
@Scheduled + SSE, ์ด๋ฉ์ผ, WebSocket, FCM ๋ฑ ์ฌ๋ฌ ๋ฐฉ์์ ๋น๊ตํ๋ค.๋จ๋ฐฉํฅ ์๋ฆผ ์ ๋ฌ์ด๋ผ๋ ์๊ตฌ์ฌํญ์ ๋ง๋ ๋ฐฉ์์ ์ ํํ ๊ณผ์ ์ ์ ๋ฆฌํ๋ค.
→ ์์ธํ ๋ณด๊ธฐ 04
๊ตญ๋ด ๋์ ๊ฒ์ API ์ ํ ๊ณผ์
๋์ ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ํด ์๋ผ๋, ์นด์นด์ค, ๋ค์ด๋ฒ, ๊ตญ๋ฆฝ์ค์๋์๊ด, ๋์๊ด ์ ๋ณด๋๋ฃจ API๋ฅผ ๋น๊ตํ๋ค.
ํ์ง ์ด๋ฏธ์ง ์ ๊ณต ์ฌ๋ถ, ์ ๊ฐ/๋ฒ ์คํธ์
๋ฌ ๋ฐ์ดํฐ, JSON ์๋ต ์ง์ ๋ฑ์ ๊ธฐ์ค์ผ๋ก ๊ฒํ ํ๊ณ ์ต์ข
API๋ฅผ ์ ํํ ๊ณผ์ ์ ์ ๋ฆฌํ๋ค.
→ ์์ธํ ๋ณด๊ธฐ 05
JWT + Redis ์ธ์ฆ ์ค๊ณ
Booktine์ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ด ์ธ์ฆ์ ์ ์ ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ธ์ฆ ๋ฐฉ์ ์ ํ์ด ์ค์ํ ์ค๊ณ ๊ฒฐ์ ์ด์๋ค.
์ธ์
๋ฐฉ์๊ณผ JWT๋ฅผ ๋น๊ตํ๊ณ , Refresh Token ๊ฐ์ ๋ฌดํจํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Redis๋ฅผ ๋์
ํ ๊ณผ์ ์ ์ ๋ฆฌํ๋ค.
→ ์์ธํ ๋ณด๊ธฐ 728x90
'๐ป PROJECT > [Spring Boot, React] ๋ ์ ์ต๊ด ๊ด๋ฆฌ ์๋น์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์ค๊ณ์์ฌ๊ฒฐ์ ] JWT + Redis ์ธ์ฆ (0) | 2026.05.13 |
|---|---|
| [ํ๋ก์ ํธ ๊ฐ์] ํ๋ก์ ํธ ์๊ฐ ๋ฐ ๊ธฐํ (0) | 2026.05.12 |
| [์ค๊ณ์์ฌ๊ฒฐ์ ] ๊ตญ๋ด ๋์ ๊ฒ์ API ์ ํ ๊ณผ์ (0) | 2026.05.08 |
| [ํธ๋ฌ๋ธ์ํ ] JWT secret ํค ๊ธธ์ด ๋ถ์กฑ์ผ๋ก ์ธํ WeakKeyException (0) | 2026.05.07 |
| [ํธ๋ฌ๋ธ์ํ ] ์ปค๋ฎค๋ํฐ ์ข์์ ์ํ ๋ถ์ผ์น๋ก ์ธํ 409 ์ค๋ฅ (0) | 2026.05.07 |