์ด ํ๋ก์ ํธ๋ B2B ๋ฌผ๋ฅ ๊ด๋ฆฌ ๋ฐ ๋ฐฐ์ก ์์คํ ์ ๋๋ค. ๊ฐ ์ง์ญ์ ํ๋ธ ์ผํฐ๊ฐ ์๊ณ , ๋๋งค ์ ์ฒด๊ฐ ํ์ํ ๋ฌผํ์ ๋ฌผ๋ฅ์ผํฐ๋ก ์ฃผ๋ฌธ์ ํ๋ฉด ๊ฐ๊ณต์ ์ฒด์์ ์์ฐ๋ ๋ฌผํ์ด ์ ์ฅ๋์ด ์๋ ํ๋ธ์์ ๊ฐ๊ณต์ ์ฒด๊น์ง ๋ฐฐ์ก์ ํฉ๋๋ค.
| ์ญํ | ๋ด๋น์ | ์ค๋ช |
|---|---|---|
| ํ์ฅ | ๋ฐ๋ํ | ์ฃผ๋ฌธ ๋ฐ ๋ฐฐ์ก ์๋น์ค API ์ค๊ณ ๋ฐ ๊ฐ๋ฐ |
| ํ์ | ์ํ์ฌ | jwt์ security ๋ฅผ ํ์ฉํ ์ธ์ฆ ๋ฐ ์ฌ์ฉ์์ ๋ฐฐ์ก๋ด๋น์ ์๋น์ค API ์ค๊ณ ๋ฐ ๊ฐ๋ฐ |
| ํ์ | ์ง๊ฐํ | OPEN API๋ฅผ ํ์ฉํ ํ๋ธ์ ํ๋ธ๊ฐ ์ด๋๊ฒฝ๋ก ์๋น์ค API ์ค๊ณ ๋ฐ ๊ฐ๋ฐ |
| ํ์ | ๊น์งํ | ์ ์ฒด์ ์ํ ์๋น์ค API ์ค๊ณ ๋ฐ ๊ฐ๋ฐ๊ณผ gemini๋ฅผ ํ์ฉํ ์ฌ๋๋ฉ์ธ์ง API ์ค๊ณ ๋ฐ ๊ฐ๋ฐ |
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ณ(MSA)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง์ดํฌ๋ก ์๋น์ค ํ๊ฒฝ์ ๊ตฌ์ถํ๊ณ , eureka server๋ฅผ ํตํด API gateway๋ก ๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ํธ์ถํฉ๋๋ค. ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ Docker๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ , ํ๋์ ์ปจํ ์ด๋์์ ์คํ ๋ฐ ๊ด๋ฆฌ๋ฅผ ํฉ๋๋ค.
API ๋ช ์ธ์ โ ์ฌ๊ธฐ๋ก
ํ
์ด๋ธ ๋ช
์ธ์ โ ์ฌ๊ธฐ๋ก

- ์ฌํ๊ป ์ธ์ฆ์ธ๊ฐ๋ฅผ JWT๋ฅผ ํตํด์ SecurityContext๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ํตํด ๋ด๋ถ Security๋ฅผ ๊ฑฐ์ณ์ ์ธ์ฆ์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํด์๋ค.
- ํ์ง๋ง Spring Security๋ ํ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์์์๋ง ๋์ํ๊ธฐ ๋๋ฌธ์ MSAํ๊ฒฝ์์ ์ด๋ป๊ฒ ์ ์ฉํด์ผ ํ ์ง ๊ณ ๋ฏผ์ด์๋ค.
๋ฉํฐ ๋ชจ๋ ๋ฐฉ์์ผ๋ก ๊ณตํต๋ชจ๋์ ํตํด ์ค์์์ ๊ด๋ฆฌํ๋ ๋ฐฉํฅ์ผ๋ก ๊ณ ๋ฏผ
- ๊ณตํต๋ชจ๋๋ก ์ธํด์ ๊ฐ ํ์ ๋ชจ๋์์ ์ด์๊ฐ ๋ฐ์ํด ์ด์ spring cloud ๋ฐฉ์์ผ๋ก ๋กค๋ฐฑ
- ์ค์ต ๊ณผ์ ์์๋ API gateway์์ ์ธ์ฆ์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ฌ์ฉ
- ๊ฐ ๋๋ฉ์ธ ๋ง๋ค Security๋ฅผ ์ค์ ํ๊ณ ์ธ์ฆ์ธ๊ฐ๋ฅผ ํด์ผ๋๋๊ฐ ์๋ฌธ์ด ์๊น
- ์ฌ์ฉ์ ๋๋ฉ์ธ์์ Security๋ฅผ ์ค์ ํ๊ณ Gateway์ Filter๋ฅผ ์์ฑ
- Gateway์ ์๋ ํํฐ์์ ์ธ์ฆ์ ํ ํ Request์ header๋ฅผ ์ถ๊ฐํ์ฌ ํ์ฌ์ฌ์ฉ์์ id์ role์ ๋๊น
- ๊ฐ ๋๋ฉ์ธ์์ requestHeader๋ก ๋ฐ์ role๋ก ๊ถํ ์ฒ๋ฆฌ
๋ฌธ์ ์ด๊ธฐ ์ค๊ณ์์๋ ์ฃผ๋ฌธ ์๋น์ค์์ ์ฃผ๋ฌธ์ด ์์ฑ๋๋ฉด ๋ฐฐ์ก ์๋น์ค์ ๋ฐฐ์ก ๊ฒฝ๋ก ์๋น์ค๊น์ง ์์ฐจ์ ์ผ๋ก ํธ์ถํ๋ ๊ตฌ์กฐ์์. ์ด๋ก ์ธํด ์ฃผ๋ฌธ ์๋น์ค๊ฐ ๋ฐฐ์ก ๋ฐ ๋ฐฐ์ก ๊ฒฝ๋ก ์์ฑ๊น์ง ์ง์ ์ ์ดํ๊ฒ ๋์๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋์ ์๋น์ค์ ๊ณผ๋ํ ๋น์ฆ๋์ค ์ฑ ์์ด ์ฃผ์ด์ก๋ค๊ณ ์๊ฐํจ. ๋ํ ๋ฐฐ์ก ๊ฒฝ๋ก ์์ฑ์๋ ํ๋ธ ๊ฐ ๊ฑฐ๋ฆฌ ๋ฐ ์์ ์๊ฐ ์ ๋ณด๊ฐ ํ์ํ๋ฐ ์ด๋ฅผ ์ํด ํ๋ธ ์๋น์ค๊น์ง ํธ์ถํ๊ฒ ๋๋ฉด์ ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๊ฐ ๊ณผ๋ํ๊ฒ ๋์์ก๋ค๊ณ ํ๋จ.
ํด๊ฒฐ ๊ณผ์ ์ด๋ฌํ ๊ตฌ์กฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋น์ค๊ฐ ์ญํ ์ ๋ช ํํ ๋ถ๋ฆฌํ๊ธฐ๋ก ํจ. ์ฃผ๋ฌธ ์๋น์ค๋ ๋ฐฐ์ก ์์ฑ๊น์ง๋ง ์ฑ ์์ง๊ณ , ์ดํ ๋ฐฐ์ก์ด ์์ฑ๋๋ฉด ๋ฐฐ์ก ์๋น์ค ๋ด๋ถ์์ ๋ฐฐ์ก ๊ฒฝ๋ก๋ฅผ ์๋์ผ๋ก ์์ฑํ๋๋ก ์ค๊ณ๋ฅผ ๋ณ๊ฒฝ. ์ด๋ก์จ API ์ฒด์ธ์ด ๋จ์ํ๋๊ณ ๊ฐ ์๋น์ค๊ฐ ์์ ์ ์ฑ ์๋ง ์ํํ ์ ์๊ฒ ๋จ.
swagger๋ฅผ ์ฌ์ฉํด api ๋ฌธ์ ์๋ํ๋ฅผ ํ๊ณ gateway๋ก ํตํฉ ๋ฌธ์๋ฅผ ๋ณผ ์ ์๊ฒ ํ๋ ค ํ์ง๋ง ๊ฐ๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค์์๋ sawgger ui ๊ฐ ์ ์ ๋์ํ๋๋ฐ api gateway ์์๋ 404 not found๊ฐ ๋จ๋ ๋ฌธ์ ๋ฐ์
๊ฐ ๋ง์ดํฌ๋ก ์๋น์ค์ gateway์ yml ํ์ผ์ swagger ์ค์ ์ ํด์ฃผ์์ง๋ง ๋์ผํ ์ค๋ฅ๊ฐ ์ง์์ ์ผ๋ก ๋ฐ์
๋ชจ๋๋ฆฌ์ ์ํคํ ์ณ์ผ๋๋ ๋จ์ผ ํ๋ก์ ํธ์๊ธฐ ๋๋ฌธ์ swagger ์์กด์ฑ์ webmvc๋ก ํด๋ 1:1 ๋ก ์์ฒญํ๊ธฐ๋๋ฌธ์ ๋ฌธ์ ์๋ํ์ ๋ฌธ์ ๊ฐ ์์์ง๋ง MSA๋ ์ฌ๋ฌ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ N:1 ์์ฒญ์ด ํ์ํ๋ค. swagger ์์กด์ฑ์ webflux๋ก ๋ฐ๊ฟ์ฃผ๋ฉด gateway๋ก swagger ์ ๊ทผ์ ํตํฉ๋ฌธ์๋ก ๋ณด์ฌ์ฃผ๊ฒ ๋๋ค.
| Java | Spring boot | Spring cloud | JWT | Spring security | PostgreSQL | JPA | QueryDSL |
|---|---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Redis | Docker | Swagger | Zipkin | Git | GitHub | Slack | Discord |
|---|---|---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
swagger-ui link: http://localhost:19091/webjars/swagger-ui/index.html
API docs โ ์ฌ๊ธฐ๋ก















