๋ค์ด๋ฒํด๋ผ์ฐ๋์บ ํ ์๊ฐ ์ค ๊ฐ์ฌ์ ์๊ฐ์์ ์ํต ๋ฌธ์ , ํ์์ ์์ ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ์ง์ ๋๋ผ๊ณ ๊ฐ์ ๋ ํ์ต ํ๊ฒฝ์ ์ ๊ณตํ๊ณ ์ ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๊ฒ ๋์์ต๋๋ค.
ํ์ต ์ฑ๊ณผ ํฅ์, ๊ฐ์ฌ-ํ์ ๊ฐ ์ ๋ขฐ ๊ฐํ, ์์ ์ด์ ํจ์จ์ฑ ์ฆ๋, ํ์ต ๊ณต๋์ฒด ํ์ฑํ์ ๊ฐ์ ๊ธ์ ์ ์ธ ๋ณํ๋ฅผ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
-
ํ๋ก์ ํธ๋ช : ClazzBridge
-
์งํ ๊ธฐ๊ฐ : 2024.08 ~ 2024.11 (3๊ฐ์)
-
์ธ์: 5๋ช
-
ํ์:
-
Common Role : FullStack & DevOps
-
ํ์ฉ ๊ธฐ์
- ๋ฉ์ธ ๋ฐฑ์๋ - Java, Spring [Boot, Security, Data JPA], REST API, MySQL, Mapstruct
- ์น์์ผ ๋ฐฑ์๋ - Node.js, express, Socket.IO, redis, Axios
- ํ๋ก ํธ์๋ - React, Redux, Material UI, Axios, Socket.IO
- ๊ณตํต - Role-based Access Control, JWT
- Java 11
- Spring Boot 2.7.3
- Gradle
- Spring Data JPA
- MySQL 8.0
- Lombok
- RESTful API
- Mapstruct
- Node.js
- express
- Socket.Io
- redis
- React
- JavaScript
- jQuery
- HTML 5
- MUI
- Axios
- Socket.Io
- MySQL 8.0
- Redis
- Apache Tomcat v9.0
- Naver Cloud Platform
- GitHub Actions
- Docker
- Jenkins
- Spring Security
- JWT
- RESTful API
- Github
- Notion
- Slack
- JWT ์ธ์ฆ ํ์ธ ๋ฉ์๋ ์ ์ (ํ์คํ)
- ์ก์ธ์ค ํ ํฐ ์ ํจ ์
- ํด๋ผ์ด์ธํธ์ API ์์ฒญ ํค๋์ ์ค๋ฆฐ ์ก์ธ์ค ํ ํฐ์ด ์ ํจํ์ง ๊ฒ์ฌ (๋ฐฑ์๋)
- ์ ํจํ ๊ฒฝ์ฐ True ๋ฐํ ๋ฐ API ์คํ (๋ฐฑ์๋)
- ์ก์ธ์ค ํ ํฐ ๋ฌดํจ, ๋ฆฌํ๋ ์ฌ ํ ํฐ ์ ํจ ์
- ํด๋ผ์ด์ธํธ์ API ์์ฒญ ํค๋์ ์ค๋ฆฐ ์ก์ธ์ค ํ ํฐ์ด ์ ํจํ์ง ๊ฒ์ฌ (๋ฐฑ์๋)
- ์ ํจํ์ง ์์ ๊ฒฝ์ฐ False ๋ฐํ (๋ฐฑ์๋)
- False ๋ฐํ ์ ์ฟ ํค์ ์ค๋ฆฐ ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ๋ฐฑ์๋์ ๊ฒ์ฌ ๋ฐ ์ก์ธ์ค ํ ํฐ ๋ฐ๊ธ ์์ฒญ (ํ๋ก ํธ์๋)
- ๋ฆฌํ๋ ์ฌ ํ ํฐ ์ ํจ ์ True ๋ฐํ ๋ฐ ์ก์ธ์ค ํ ํฐ ์ฌ๋ฐ๊ธ (๋ฐฑ์๋)
- True ๋ฐํ ์ ๋ฐ๊ธ๋ ์ก์ธ์ค ํ ํฐ๊ณผ ํจ๊ป API ์ฌ์์ฒญ (ํ๋ก ํธ์๋)
- ์ก์ธ์ค ํ ํฐ ๊ฒ์ฌ ํ ์์ฒญ API ์คํ (๋ฐฑ์๋)
- ์ก์ธ์ค ํ ํฐ ๋ฌดํจ, ๋ฆฌํ๋ ์ฌ ํ ํฐ ๋ฌดํจ ์
- ํด๋ผ์ด์ธํธ์ API ์์ฒญ ์ ํค๋์ ์ค๋ฆฐ ์ก์ธ์ค ํ ํฐ์ด ์ ํจํ์ง ๊ฒ์ฌ (๋ฐฑ์๋)
- ์ ํจํ์ง ์์ ๊ฒฝ์ฐ False ๋ฐํ (๋ฐฑ์๋)
- False ๋ฐํ ์ ์ฟ ํค์ ์ค๋ฆฐ ๋ฆฌํ๋ ์ฌ ํ ํฐ์ ๋ฐฑ์๋์ ๊ฒ์ฌ ๋ฐ ์ก์ธ์ค ํ ํฐ ๋ฐ๊ธ ์์ฒญ (ํ๋ก ํธ์๋)
- ๋ฆฌํ๋ ์ฌ ํ ํฐ ๋ฌดํจ ์ False ๋ฐํ (๋ฐฑ์๋)
- False ๋ฐํ ์ ๋ก๊ทธ์์ ํ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ (ํ๋ก ํธ์๋)
- ์ก์ธ์ค ํ ํฐ ์ ํจ ์
- Spring Security์ JWT๋ฅผ ์ฌ์ฉํ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐฉ์ ๊ตฌํ
- DB ๋ฐ์ดํฐ์ ๋น๊ต ํ ์ธ์ฆ ์คํจ ์ ์ค๋ฅ ๋ฉ์์ง ์ถ๋ ฅ
- ๋ก๊ทธ์ธ ์ ๋ง์ฃผํ๊ฒ ๋๋ ํ์ด์ง
- Role-based Access Control ์์ธ์ฒ๋ฆฌ (๋ฐฑ์๋)
- ๋งค๋์ ๋ ๊ฐ์ ์งํ ์ํฉ์ด ๋ณด์ด์ง ์๊ณ , ์บ๋ฆฐ๋์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ๋ฅ
- ๊ฐ์ฌ์ ์๊ฐ์์ ๊ฐ์ ์งํ ์ํฉ์ด ๋ณด์ด๊ณ , ์์ ๊ฐ์์ ํ์ ์ ์ฒด ์ผ์ ๋ฐ์ดํฐ๋ง ์ ๊ทผ ๊ฐ๋ฅ
- ์ธ๋ถ API ์ฐ๊ฒฐ, ์์น ๊ธฐ๋ฐ ์๋น์ค
- OpenWeather API๋ก ํ์ฌ ์ ์ ์ง์ญ์ ๋ ์จ ์ ๋ณด ์ ๊ณต
- ์ดํด ์๋ฃ, ์ ๋ค๊ธฐ, ์จ๋ผ์ธ์ ์ํ ๊ด๋ฆฌ ๊ธฐ๋ฅ (ํ์คํ)
- ๋ณธ์ธ์ ์ดํด๋ ๋ฐ ์ ๋ค๊ธฐ ์ํ๋ฅผ Floating Action Button์ ๋๋ฌ ํํ (์๊ฐ์)
- ์๊ฐ์๋ค์ ์ดํด๋์ ์ ๋ค๊ธฐ, ์จ๋ผ์ธ์ ์ํ๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธ (๊ฐ์ฌ)
- WebSocket์ผ๋ก ํต์ ํ์ฌ ์ค์๊ฐ์ผ๋ก ์กฐํ ๊ฐ๋ฅ
- redis-client๋ฅผ ํตํ redis ๋ฐ์ดํฐ ์ ๊ทผ
- ํ์์ ํ์ฌ ์ํ ๋ฐ ์ข์ ๋ฐฐ์น ์กฐํ
- ํ์ ์ดํด๋, ์ ๋ค๊ธฐ ํ์ธ (๊ฐ์ฌ)
- ๋ณธ์ธ์ ์ํ ํ์ธ, ํ ํ์ ํ๋กํ ์กฐํ (์๊ฐ์)
- ์ง์์๋ต CRUD ๊ธฐ๋ฅ ๊ตฌํ (๋ฐฑ์๋)
- RESTful API ๊ตฌ์กฐ ์ค์
- ๋ต๋ณ CRUD ๊ธฐ๋ฅ ๊ตฌํ (๊ฐ์ฌ)
- ์ง๋ฌธ CRUD ๊ธฐ๋ฅ ๊ตฌํ ๋ฐ ๋ณธ์ธ ์ง๋ฌธ์ ๋ํด์๋ง UD ๊ฐ๋ฅ (์๊ฐ์)
- Role-based Access Control ์์ธ์ฒ๋ฆฌ (ํ์คํ)
- ํ๋ก ํธ์๋์์ ๊ถํ๋ณ UI ์ฐจ์ด ๊ตฌํ
- ๋ฐฑ์๋์์ ๊ถํ์ ๋ง์ง ์๋ API ์์ฒญ ์ ์๋ฌ ๋ฐํ
- ํ์ธ์ ์ง๋ฌธ์ API ์์ฒญ ์, ์ก์ธ์ค ํ ํฐ๊ณผ ๋น๊ตํ์ฌ ์ธ์ฆ ์คํจ ์ค๋ฅ ๋ฐํ
- ํฌํ ๋ ์ง์ ์ ๋ชฉ, ๋ด์ฉ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ํฌํ ์์ฑ (๊ฐ์ฌ)
- ํฌํ ๋ฆฌ์คํธ ์ค ํฌํ๋ฅผ ์ ํํ์ฌ ํฌํ ๊ฐ๋ฅ (์๊ฐ์)
- Role-based Access Control - ๊ถํ์ ๋ง์ง ์๋ ์ก์ ์ํ ์ ์ค๋ฅ ๋ฐ์
- ์ง๋ฌธ, ๊ณต์ง์ฌํญ, ํผ๋๋ฐฑ ๋ฑ์ ์นดํ ๊ณ ๋ฆฌ ๊ตฌ์ฑ
- ๊ณต์ง์ฌํญ์ ์ต์๋จ์ ๊ณ ์
- ์ฌ์ฉ์ ์ ๋ ฅ์ด 0.5s ๋ฉ์ท์ ๋ ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ (๋๋ฐ์ด์ฑ)
- ์นดํ ๊ณ ๋ฆฌ๋ณ ํํฐ๋ง ๊ฐ๋ฅ
- ์งํ ์ค, ๋ง๊ฐ ๋น์ผ, ๋ง๊ฐ๋ ๊ณผ์ ํ์ธ ๊ฐ๋ฅ
- ๋ฆฌ์กํธ ํผ ์๋ํฐ๋ก ๊ณผ์ ์ ์ถ ๊ฐ๋ฅ (์๊ฐ์)
- ํ์๋ณ ์ ์ถ ์ํ๋ฅผ ํ์ธ ๊ฐ๋ฅ (๊ฐ์ฌ)
- ๊ณผ์ ์์ฑ ๊ฐ๋ฅ (๊ฐ์ฌ)
- ์ผ์ ๋ ์ง์ ์ ๋ชฉ, ๋ด์ฉ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ผ์ ์์ฑ (๊ฐ์ฌ, ๋งค๋์ )
- ์๊ฐ์์ ์ผ์ ์กฐํ๋ง ๊ฐ๋ฅ (์๊ฐ์)
- ์ผ์ ์์ ๋ ์ง์ ๋ ๋ ์ง๊ฐ ๋ง์ง ์๋ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฐ์
- Role-based Access Control - ๊ถํ์ ๋ง์ง ์๋ ์ก์ ์ํ ์ ์ค๋ฅ ๋ฐ์
- ๊ด๋ฆฌ์ ๊ณ์ ๋ง ์ ๊ทผ ๋ฐ ๊ด๋ฆฌ ๊ฐ๋ฅ
- ์์ด๋, ์ด๋ฉ์ผ ๋ฑ Key์ ๋ํ ์ค๋ณต ์์ธ์ฒ๋ฆฌ (ํ๋ก ํธ์๋)
- API์ง์ ์์ฒญ์ผ๋ก ๋ฑ๋ก ์์ฒญ ์์๋ JWT ๊ธฐ๋ฐ ์์ธ์ฒ๋ฆฌ (๋ฐฑ์๋)
- ๊ด๋ฆฌ์ ๊ณ์ ๋ง ์ ๊ทผ ๋ฐ ๊ด๋ฆฌ ๊ฐ๋ฅ
- ๊ฐ์์ค ์ด๋ฆ, ์ฌ์ฉ์ค์ธ ๊ฐ์์ค ๋ฑ์ ๋ํ ์ค๋ณต ์์ธ์ฒ๋ฆฌ (ํ๋ก ํธ์๋)
- API์ง์ ์์ฒญ์ผ๋ก ๋ฑ๋ก ์์ฒญ ์์๋ JWT์ DB ๊ธฐ๋ฐ ์์ธ์ฒ๋ฆฌ (๋ฐฑ์๋)
- WebSocket์ผ๋ก ํต์ ํ์ฌ ์ค์๊ฐ ์ฑํ ๊ตฌํ (ํ์คํ)
- Role-based Access Control ์์ธ์ฒ๋ฆฌ
- ์ฑํ ์ ์๊ฐ์๊ณผ ๊ฐ์ฌ๊ฐ ์ํ ๊ฐ์ ๋ฉค๋ฒ ํน์ ๋งค๋์ ๋ง ์ฑํ ๊ฐ๋ฅํ๋๋ก ์์ธ์ฒ๋ฆฌ
- redis DB ์ค๊ณ
- redis-client๋ฅผ ํตํ redis ๋ฐ์ดํฐ ์ ๊ทผ
- ChatRoom:Id, ChatRoom:Id:Messages, User:Id๋ก redis ๋ฐ์ดํฐ Key ๊ตฌ์ฑ
- Git ์ฝ๋ ๋ณ๊ฒฝ (Git push)
- ์ ํจ์ค์์ Github WebHook์ผ๋ก ์ฝ๋ ๋ณ๊ฒฝ ์ธ์
- ์๋ก์ด ์ฝ๋๋ก jar ๋น๋ ๋ฐ docker ์ด๋ฏธ์ง ์์ฑ
- ์์ฑ๋ ์ด๋ฏธ์ง Docker Hub์ ํธ์
- SSH ํค ์ธ์ฆ๊ณผ ํจ๊ป Docker Hub์ ํธ์๋ ์ด๋ฏธ์ง๋ก ์ ํ๋ก ํธ์๋ ์ปจํ ์ด๋ ๋น๋
- ์ ๋ฐ์ดํธ ๋ฐ ๋ฐฐํฌ ์๋ฃ
-
์ฑํ ๋ฐฉ ์์ฑ์ ์ํ ๊ฐ์ ๊ฐ์์ค ์์์ ๋ฉค๋ฒ์ ๊ฐ์ฌ, ๋งค๋์ ๋ฐ์ดํฐ ์์ฒญ ์ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ๋ฌธ์ ์๋ณ (๋ฐฑ์๋)
- Spring Data JPA๋ก MySQL์ ๋ณต์กํ ๋ก์ง์ ๋ฐ์ดํฐ ์์ฒญ ์ Query๋ฌธ์ด ๊ธธ๊ฒ ์์ฑ๋๋ ๋ฌธ์ ์๋ณ
โ LeftJoin, Where, Select๋ฅผ ์ง์ ์ฌ์ฉํด Query๋ฌธ ์์ฑ ๋ฐ ์ต์ ํ
โ Query๋ฌธ ๊ธธ์ด ์ถ์ (100์ค โ 6์ค)
โ ์คํ ์๊ฐ ๋จ์ถ (์ฝ 40%)
-
React ์ปดํฌ๋ํธ ์ง์ ๊ตฌ์กฐ๊ฐ ์๋์ ๋ค๋ฅด๊ฒ ์ค๊ณ๋๊ณ , ์ ์ญ ์ํ ๊ด๋ฆฌ๊ฐ ์กด์ฌํ์ง ์์ ์ํ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ด ๋ฌธ์ ์๋ณ (ํ๋ก ํธ์๋)
โ FrontEnd์ ์ ์ฒด ์ปดํฌ๋ํธ ๊ตฌ์กฐ๋ฅผ ์คํ ์์์ ๋ฐ๋ผ ๋ฆฌํฉํ ๋ง
โ ์ ์ญ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํ Redux ์ฌ์ฉ
โ App ์ปดํฌ๋ํธ๋ฅผ [Socket, Login, User] Provider๋ก ๊ฐ์ธ ์ ์ญ์ผ๋ก ๊ด๋ฆฌ
-
์๋ก๊ณ ์นจ ์ UserData ์์ค ๋ฌธ์ (ํ๋ก ํธ์๋)
- ์๋ก๊ณ ์นจ ์ React ์ปดํฌ๋ํธ๊ฐ ๋ชจ๋ ์ธ๋ง์ดํธ๋ ํ ์ฌ๋ง์ดํธ
- ์ฌ๋ง์ดํธ ๊ณผ์ ์์ UserData UseState ์ด๊ธฐ๊ฐ์ธ null๋ก ๊ฐ ์ด๊ธฐํ
โ UserData UseState ์ด๊ธฐ๊ฐ์ LocalStorage์์ ๊ฐ์ ธ์ค๋๋ก ์ค์
-
LocalStorage ๊ฐ์ ์์๋ก ์์ ์ ์๋น์ค์ ์ํฅ์ ๋ฏธ์นจ (ํ๋ก ํธ์๋)
- LocalStorage์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๊ฐ๊ณตํ๋ ๋ก์ง ๋ฐ๊ฒฌ
โ LocalStorage ๋ฐ์ดํฐ๋ ๋จ์ ์ฐธ์กฐ์ฉ์ผ๋ก ์ฌ์ฉ.
โ ์ฌ๊ฐ๊ณตํ ๋ฐ์ดํฐ๋ Redux๋ฅผ ๋์ ํ์ฌ ์๋ก๊ณ ์นจ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์๋๋ก๋ถํฐ Fetchingํ๋๋ก ๋ก์ง ๋ณ๊ฒฝ
-
์ฑํ ๋ฐฉ์์ ์๋ก๊ณ ์นจ ์ ์์ผ ์ฐ๊ฒฐ์ด ๋๊ธด ์ํ์์ ๋ฐ์ดํฐ ์์ฒญ ์๋ (ํ๋ก ํธ์๋)
- ์๋ก๊ณ ์นจ ํ ์์ผ ์ฌ์ฐ๊ฒฐ์ ์๋ํ๋, ๋ฐ์ดํฐ ์์ฒญ๋ณด๋ค ์ฌ์ฐ๊ฒฐ์ด ๋๋ฆฐ ๋๊ธฐ์ฒ๋ฆฌ ์ค๋ฅ ๋ฐ๊ฒฌ
- ์์ผ ์ฌ์ฐ๊ฒฐ ์กฐ๊ฑด์ด SocketProvider ์ปดํฌ๋ํธ ๋ง์ดํธ ์๋ก ๋์ด์์์ ๋ฐ๊ฒฌ
โ ์์ผ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ์์ฒญ(socket.emit())์
โ socket.connected() ๋ฉ์๋ ํ์ธ
โ False ์ ์ฌ์ฐ๊ฒฐ timeout 5์ด ๋ด์ ์ฌ์ฐ๊ฒฐ ์์ฒญ
โ ๋ฐ์ดํฐ ์์ฒญ ์ฌ์๋
โ False ์ ์๋ฌ ๋ฐํ
- ํ๋ก์ ํธ ๊ฐ๋ฐ ํ์ดํ๋ผ์ธ์ ์ค์์ฑ ๊ฒฝํ
- ์ด๋ฐ์ ๋ ์ค๋ฅด๋ ๋๋ก, ์๊ตฌ์ฌํญ์ ์ค๊ณํ๊ณ UseCase ์ค๊ณ ํ ํ๋กํ ํ์ ์ ์ ์ํ ๋ค ๊ฐ๋ฐ์ ์งํํ์์ต๋๋ค. ํ์ง๋ง ๊ฐ๋ฐ์ ํ์ํ ๊ตฌ์กฐ๊ฐ ์ ๋๋ก ํ๋ฆฝ๋์ง ์์ ์ฌ๋ฌ ๋ฒ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉฐ ํ๋ก์ ํธ ์งํ์ ํฐ ์ฐจ์ง์ ๋น์์ต๋๋ค.
- ๊ฒฐ๊ตญ ๋ถํธ์บ ํ๋ฅผ ์งํํ๋ฉฐ ๋ฐฐ์ด ๊ฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฑํํด ๊ฐ๋จํ ํ๋กํ ํ์ ์ ์ ํ UseCase๋ฅผ ์กํฐ๋ณ๋ก ์๋ณํ์์ต๋๋ค. ๊ทธ ํ ์์ด์ด ํ๋ ์์ ์ค์๋น์ค์ ๊ฐ๊น๊ฒ ์ค๊ณํ ๋ค DB ๋ชจ๋ธ๋ง์ ์งํํ๊ณ ๊ฐ๋ฐ์ ์์ํ์์ต๋๋ค.
- ๊ทธ ๊ฒฐ๊ณผ DB๋ชจ๋ธ๋ง์ ๋ฐ๋ผ DDL๊ณผ Domain์ ๋จผ์ ๊ตฌํํ ๋ค, UseCase์ ๋ฐ๋ผ Controller์ Service๋ฅผ ๊ตฌํํ๋ ํ๋ก์ ํธ์ ์งํ์ด ํจ์ฌ ๋งค๋๋ฝ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ด ๋น ๋ฅธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์ ์์๊ฐ ์ผ๋ง๋ ์ค์ํ ์ง ๋ชธ์ ๋๋ ์ ์์์ต๋๋ค.
- ํ๋ก์ ํธ ๊ตฌํ ์ ํ๋ก์ ํธ ๊ตฌ์กฐ ํ๋ฆฝ์ ์ค์์ฑ
- ์ฒซ ํ๋ก์ ํธ ๊ฐ๋ฐ์ด๊ธฐ์ ํ๋ก์ ํธ ๊ตฌ์กฐ ๊ฐ๋ ์ด ํ๋ฆฝ๋์ง ์์ ์ํ์์ ํ๋ก์ ํธ๋ฅผ ์์ํ์ต๋๋ค.
- ๊ทธ๋ ๊ฒ ํ๋ก์ ํธ ๋ด์์ Domain, Controller, Service์ ๋ถ๋ฆฌ ์์ด ํต์งธ๋ก ์งํํ๋ ์ค ์ฝ๋ ๋ณ๊ฒฝ ์ ๋ณต์ก์ฑ ์ฆ๊ฐ๋ก ์ค๋ฅ ๋ฐ์์ด ์ฝ๊ณ ๋๋ฒ๊น ์ด ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ก์ ํธ ํ์๋ฅผ ์งํํ์ฌ Domain, Controller, Service, Util Method, RESTful API์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ฅด๊ธฐ๋ก ๊ฒฐ์ ํ์์ต๋๋ค. ๊ทธ ํ ์ ์ง๋ณด์๊ฐ ํจ์ฌ ์ฉ์ดํด์ง์ ๋ฐ๊ฒฌํ๊ณ , ๊ฐ์ฒด์งํฅ์ ๊ธฐ๋ณธ ์์น์ธ SOLID ์์น์ ์ค์ํ ์ ์์์ต๋๋ค.
- ์ํต์ ์ค์์ฑ ๊ฒฝํ
- ๊ฐ์ ํ์๋ฅผ ํด๋ ๊ฐ์ ์๊ฐํ ๊ธฐ์ค๊ณผ ์ฃผ๊ด์ด ๋ฌ๋ผ ์ํต์ ๊ฐ๊ฒฉ์ด ๋์์๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์์ต๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ ๊ฐ์ ์ํต ์ฃผ๊ธฐ๋ฅผ ์ค์ฌ ๋ ์ฆ์ ๋ํ๋ฅผ ์ด๋์ด ์ฃผ๊ด ์ฐจ์ด๋ฅผ ์ค์์ต๋๋ค. ๋ํ ๋งํ์ง ์์๋ ๊ด์ฐฎ๊ฒ ์ง, ํ๋ ์ฌ์ํ ๋ถ๋ถ๊น์ง ๋ชจ๋ ์ํตํด์ผ ํจ์ ๊นจ๋ซ๊ณ ํ๋ก์ ํธ์ ๊ด๋ จ๋ ์ฌ์ํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ชจ๋ ์ํตํ์์ต๋๋ค.
- ๊ทธ ๊ฒฐ๊ณผ ์ํต์ ์ฐจ์ด๋ฅผ ์ค์ผ ์ ์์๊ณ , ํ๋ด ์ํต์ ์ค๋ฅ๋ฅผ ์ค์ฌ ๋ถํ์ ์๊ธฐ๋ ์ค์ผ ์ ์์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ํต์ ๋น๋๋ฅผ ์ค์ด๋ ๊ฒ์ ์ค์์ฑ, ์ฃผ๊ด ์ฐจ์ด์ ๋ํ ์ดํด๋๋ฅผ ๋์ผ ์ ์์์ต๋๋ค.















