์ค๋ ์ ์ฌ์๋ ๋ฌด์์ ๋จน์์ง, ์ผ์ ์ ํ ๋์ ํ์ธํ ์ ์์์ง, ํด๊ทผ์ ๋ ์ด๋ป๊ฒ ํ ์ง.. ํ์ฌ์์ด๋ผ๋ฉด ํ๋ฒ ์ฏค ํด๋ณธ ๊ณ ๋ฏผ๋ค์ ๋๋ค.
ํค๋ง์ ํ์ฌ ๊ทผ์ฒ ์๋น ๋ฆฌ์คํธ, ๊ตํต ์ ๋ณด, ์บ๋ฆฐํฐ, ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ ๋ฑ ํ์ฌ ์ํ์ ํ์ํ ์ ๋ณด๋ฅผ ํตํฉํ์ฌ ํ ๊ณณ์์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ์ต๋๋ค.
ํ์ฌ ์ํ์ ๋์ฑ ํธ๋ฆฌํ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ฌ์ธ์ ํ๋ซํผ ํค๋ง์์, ์ ์ฉํ ์ ๋ณด๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ์ธํด๋ณด์ธ์!
| ์คํ | ๋ฒ์ | ์ ์ ์ด์ ๋ฐ ํจ๊ณผ |
|---|---|---|
| Spring Boot | 3.2.x | ยท ๊ฐ๋ ฅํ DI/AOP, ๋ฐฉ๋ํ ์ํ๊ณ, ๋ค๋ฅธ Spring ํ๋ก์ ํธ์์ ์ ๊ธฐ์ ์ธ ํตํฉ์ ํตํด ์์ ์ ์ด๊ณ ์ ์ง๋ณด์์ฑ์ด ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฐ์ ๋ง๋ จํ์ต๋๋ค. |
| Spring Security | 6.2.x | ยท OAuth2์ JWT๋ฅผ ๊ฒฐํฉํ ๋ณต์กํ ์ธ์ฆ/์ธ๊ฐ ์๊ตฌ์ฌํญ์ ํํฐ ์ฒด์ธ ์ปค์คํฐ๋ง์ด์ง์ ํตํด ์ ์ฐํ๊ฒ ๊ตฌํํ์ต๋๋ค. ยท ๋ฉ์๋ ์ํ๋ฆฌํฐ๋ก ๋น์ฆ๋์ค ๋ก์ง ๋จ์์ ์ธ๋ฐํ ๊ถํ ์ ์ด๋ฅผ ์ ์ฉํ์ต๋๋ค. |
| Spring Data JPA | 3.2.x | ยท ๊ฐ์ฒด์งํฅ์ ์ธ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ํด ์ฑํํ์ต๋๋ค. ยท Fetch Join, BatchSize ๋ฑ ๋ค์ํ ์ต์ ํ ์ ๋ต์ ์ ์ฉํ๋ฉฐ JPA์ ๋์ ์๋ฆฌ๋ฅผ ๊น์ด ์๊ฒ ํ์ตํ์ต๋๋ค. |
| QueryDSL | 5.1.0 | ยท ๋ฌธ์์ด ๊ธฐ๋ฐ ์ฟผ๋ฆฌ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ , ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ๋ฅผ ํ์
-์ธ์ดํ(Type-Safe)ํ๊ฒ ์์ฑํ๊ธฐ ์ํด ๋์
ํ์ต๋๋ค. ยท ์ปดํ์ผ ์์ ์ ์ฟผ๋ฆฌ ์ค๋ฅ๋ฅผ ๊ฒ์ฆํ์ฌ ๋ฐํ์ ์์ ์ฑ์ ํฌ๊ฒ ํฅ์์์ผฐ์ต๋๋ค. |
| Jib | 3.4.x | ยท Dockerfile ์์ด๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํ๋ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ , ๋ ์ด์ด ์บ์ฑ์ ํตํด CI/CD ํ์ดํ๋ผ์ธ์ ๋น๋ ์๋๋ฅผ ๊ฐ์ ํ์ต๋๋ค. |
| JJWT | 0.12.x | ยท Stateless ์ธ์ฆ ์์คํ ์ ํต์ฌ์ธ JWT์ ์์ฑ, ํ์ฑ, ๊ฒ์ฆ์ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉํ์ต๋๋ค. |
| ์คํ | ๋ฒ์ | ์ ์ ์ด์ ๋ฐ ํจ๊ณผ |
|---|---|---|
| MySQL | 8.0 | ยท ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ RDBMS๋ก ์์ ์ฑ์ด ๊ฒ์ฆ๋์์ต๋๋ค. ยท ํนํ ๊ณต๊ฐ ์ธ๋ฑ์ค(Spatial Index)์ ๊ด๋ จ ํจ์๋ฅผ ํ์ฉํ์ฌ ํจ์จ์ ์ธ ์์น ๊ธฐ๋ฐ ๊ฒ์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. |
| Redis | 7.x | ยท ํฅํ ์ถ๊ฐ ๊ฐ๋ฐ ์์ ์ธ ์ค์๊ฐ ๋ญํน๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ํธ๋ํฝ์ ๋ฐ๋ผ ๋ค์ค์ธ์คํด์ค๋ฅผ ๊ตฌํํ ๊ณํ์ ๊ฐ์ง๊ณ ๋์
ํ์ต๋๋ค. ยท ํ์ฌ ์ข์์ ๊ธฐ๋ฅ, ์ค๋์ ํ์์ถ์ฒ ๊ธฐ๋ฅ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. |
| ์คํ | ๋ฒ์ | ์ ์ ์ด์ ๋ฐ ํจ๊ณผ |
|---|---|---|
| AWS | - | ยท EC2, RDS, ALB, ACM, Route 53 ๋ฑ AWS์ ๊ฐ๋ ฅํ ๊ด๋ฆฌํ ์๋น์ค๋ฅผ ํ์ฉํ์ฌ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์์ ์ ์ธ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. |
| Docker | 26.x | ยท ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ํํ์ฌ ์ด๋ค ํ๊ฒฝ์์๋ ๋์ผํ ์คํ์ ๋ณด์ฅํ๊ณ , ๋ฐฐํฌ์ ์ผ๊ด์ฑ๊ณผ ์ด์์ฑ์ ํ๋ณดํ์ต๋๋ค. |
| GitHub Actions | - | ยท JIB์ ์ฌ์ฉํด ๋น๋, ํ ์คํธ, ์ด๋ฏธ์ง ํธ์, EC2 ๋ฐฐํฌ๊น์ง์ ์ ๊ณผ์ ์ ์ต์ ํ์ ์๋ํํ๋ CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ฌ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๊ทน๋ํํ์ต๋๋ค. |
-
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ์ ์ต์ ํ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์์ ์ ์ธ ์ํคํ ์ฒ๋ฅผ ์งํฅํฉ๋๋ค.
-
AWS์ ๊ด๋ฆฌํ ์๋น์ค๋ฅผ ์ ๊ทน ํ์ฉํ์ฌ ์ธํ๋ผ ๊ด๋ฆฌ ๋ถ๋ด์ ์ต์ํํ๊ณ , ๋ชจ๋ ๋ฐฐํฌ ๊ณผ์ ์ ์๋ํํ์ฌ ๊ฐ๋ฐ ์์ฐ์ฑ์ ๊ทน๋ํํ์ต๋๋ค.
-
์ฌ์ฉ์ ์์ฒญ โ Route 53 โ ALB (HTTPS, ACM ์ธ์ฆ์) โ EC2 (Docker) โ RDS (MySQL) ์ ํ๋ฆ์ ๊ฐ์ง๋๋ค.
-
์ธ์ฆ/์ธ๊ฐ: ์นด์นด์ค OAuth2 ์์ ๋ก๊ทธ์ธ๊ณผ JWT (Access/Refresh Token) ๊ธฐ๋ฐ์ Stateless ์ธ์ฆ ์์คํ
-
๋ง์ง(Place) ์๋น์ค: ์์น ๊ธฐ๋ฐ ๊ทผ์ฒ ๋ง์ง ๊ฒ์, ๋์ ์ ๋ ฌ ๋ฐ ์นดํ ๊ณ ๋ฆฌ ํํฐ๋ง, ์ข์์/์ทจ์ ๊ธฐ๋ฅ
-
ํ/๋ฉค๋ฒ ๊ด๋ฆฌ: ํ ์์ฑ ๋ฐ ๋ฉค๋ฒ ์์ ๊ด๋ฆฌ, ์ฌ์ฉ์ ํ๋กํ ์กฐํ ๋ฐ ์์
-
์บ๋ฆฐ๋ ์๋น์ค: ํ ๊ณต์ ์บ๋ฆฐ๋, ์ผ๋ฐ ์ผ์ ๋ฑ๋ก ๋ฐ ํ์ ์์ผ ๋์ ํ์
-
๋ฐ์ดํฐ ๊ด๋ฆฌ: ์์ ํ์ผ ์ผ๊ด ์ ๋ก๋๋ฅผ ํตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค Bulk Insert
-
API ๋ฌธ์: Swagger (OpenAPI 3.0)๋ฅผ ํตํ ์๋ API ๋ฌธ์ํ
โ๏ธ ์ฃผ์ ๊ธฐ์
Redis,Spring @Async,@EventListener
โ๏ธ ํด๊ฒฐ ์ ๋ต ๋ฐ ํจ๊ณผ
-
๋์์ฑ์ ๋ฐ๋ฅธ DB ์ฐ๊ธฐ ๋ฝ ๊ฒฝํฉ ๋ฐ ์ปค๋ฅ์ ํ ๊ณ ๊ฐ ๋ฌธ์ ๋ฅผ Redis์ Atomic ์ฐ์ฐ๊ณผ Spring์ ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ก ํด๊ฒฐํ์ต๋๋ค.
-
Redis์์ ์ค์๊ฐ ์๋ต ์ฒ๋ฆฌ ํ, DB ์ ์ฅ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ํํจ์ผ๋ก์จ ์์ฒญ ์คํจ์จ์ 72% โ 0%, 95% ์๋ต์๊ฐ์ 1์ด โ 255ms๋ก ๊ฐ์ ํ์ต๋๋ค.
โ๏ธ ์ฃผ์ ๊ธฐ์
QueryDSL
โ๏ธ ํด๊ฒฐ ์ ๋ต ๋ฐ ํจ๊ณผ
-
Native Query ๋ฐฉ์์ผ๋ก ์ธํ ์ฝ๋ ์ค๋ณต ๋ฐ ๋ฐํ์ ์ค๋ฅ ๋ฌธ์ ๋ฅผ QueryDSL์ ํ์ ์ธ์ดํ ๋์ ์ฟผ๋ฆฌ๋ก ์ ํํ์ฌ ํด๊ฒฐํ์ต๋๋ค.
-
์ ๋ ฌ ์กฐ๊ฑด ์ถ๊ฐ ์๋๋ง๋ค ์ฟผ๋ฆฌ ๋ฉ์๋๋ฅผ ์๋ก ๋ง๋ค ํ์ ์์ด BooleanExpression๊ณผ OrderSpecifier ์กฐํฉ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ๊ฒ ์ค๊ณํ์ต๋๋ค.
| ๋ฐฑ์๋ | ํ๋ก ํธ์๋ | ํ๋ก ํธ์๋ | ํ๋ก ํธ์๋ |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| ๊นํ๋ฏผ | ๊นํ์ | ๋ฐฑํ์ธ | ์๋ค์ |

















