- ๊ฐ์
- Skils
- Installation
- Directory
- API Reference
- ํ๋ก์ ํธ ์งํ ๋ฐ ์ด์ ๊ด๋ฆฌ
- ๊ตฌํ๊ณผ์ (์ค๊ณ ๋ฐ ์๋)
- TIL ๋ฐ ํ๊ณ
- Authors
- References
๋ณธ ์๋น์ค๋ ์ฌ์ฉ์๋ค์ด ํ ํ๋ก์ ํธ๋ฅผ ๋ชจ์ง, ์งํ, ๊ด๋ฆฌํ๋๋ฐ ๋์์ ์ฃผ๋ฉฐ SNS ๊ธฐ๋ฅ์ ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์ด ์ฑ์ ์งํ์ค์ธ ํ ํ๋ก์ ํธ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ์ฌ์ฉ์๋ค์๊ฒ ํ๋ก์ ํธ, ๊ฒ์๊ธ, ํ์์ ์ถ์ฒํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ฝ๊ณ ํธํ๊ฒ ์งํํ๊ณ ์ ํ๋ ๋ชฉํ ๋ฌ์ฑ์ ๋์์ด ๋ฉ๋๋ค.
(ํ๋ก์ ํธ, ๊ฒ์๊ธ, ํ์์ ์ถ์ฒํ๋ ๊ธฐ๋ฅ์ ํตํด ์ํํ ํ๋ก์ ํธ ์งํ์ ์ง์ํฉ๋๋ค)
Java 17์ด ์ค์น๋์ด์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค
- synergy_be ํ๋ก์ ํธ๋ฅผ
git clone
๋ช ๋ น์ด๋ฅผ ํตํด ํด๋ก ๋ฐ์ต๋๋ค. - ํด๋ก ๋ฐ์ ์คํ๋ง ํ๋ก์ ํธ ์คํํ์ผ (*.jar) ์ ์์ฑํฉ๋๋ค.
- ๋ฃจํธ ์์น์์ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํด
chmod +x gradlew
๋ช ๋ น์ด ์คํ ./gradlew build -x test
๋ช ๋ น์ด ์คํ
- ๋ฃจํธ ์์น์์ ๊ถํ ๋ถ์ฌ๋ฅผ ์ํด
- app_network ์ด๋ฆ์ ๋คํธ์ํฌ๋ฅผ
docker network create app_network
๋ช ๋ น์ด๋ก ์์ฑํฉ๋๋ค. docker-compose.yml
ํ์ผ์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์ฑํฉ๋๋ค.docker-compose.yml
ํ์ผ์ ๋ณด์์ ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฌํฉ๋๋ค.- mac์ผ ๊ฒฝ์ฐ docker-compose.yml์ mysql, mongo ์
platform: linux/amd64
์ถ๊ฐ ํ์
- mac์ผ ๊ฒฝ์ฐ docker-compose.yml์ mysql, mongo ์
docker-compose build
๋ช ๋ น์ด๋ก docker ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.docker-compose up -d
๋ช ๋ น์ด๋ก docker-compose ๋ฅผ ํตํด docker ์ด๋ฏธ์ง๋ฅผ ์คํ (์ปจํ ์ด๋ํ) ํฉ๋๋ค.- host ๋
localhost
์ด๋ฉฐlocalhost
url์ ํตํด ํ๋ก ํธ ๋ก์ปฌ ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ฑํฉ๋๋ค.
์ ๋ก์ปฌ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ ์์๋ ์๋์ ๊ฐ์ด ์งํ๋ฉ๋๋ค.
1. ํ๋ก์ ํธ clone
2. ํ๋ก์ ํธ ๋น๋
3. docker network ์์ฑ
4. docker-compose.yml ํ์ผ ์์ฑ
5. docker image ๋น๋
6. docker image ์คํ
We publish image to https://hub.docker.com at every release.
docker pull jonghuni/synergy_be
๊ธฐ๋ฅ API
- Oauth ๋ก๊ทธ์ธ ๊ธฐ๋ฅ, JWT ํ ํฐ ์ธ์ฆ, ์ธ๊ฐ
- ๊ฒ์๊ธ, ํ๋ก์ ํธ, ์ ์ ์ถ์ฒ
- ๊ฒ์๊ธ, ํ๋ก์ ํธ, ์ ์ ์กฐํ
- ํ๋ก์ ํธ ์ ๋ฌด ํฐ์ผ ๊ด๋ฆฌ (์นธ๋ฐ๋ณด๋ ํ์)
- ํ๋ก์ ํธ ์ ์ฒญ, ์๋ฝ, ๊ฑฐ์
- ํ๋ก์ ํธ ํ๊ฐ
ํ์ผ ๊ตฌ์กฐ ๋ณด๊ธฐ
src
โโdomain
โ โโapply
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโApply
โ โโauth
โ โ โโcontroller
โ โ โโentity
โ โ โโinfo
โ โ โโrepository
โ โ โโservice
โ โ โโtoken
โ โโcomment
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโComment
โ โโfollow
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโFollow
โ โโimage
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโImage
โ โโnotice
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโNotice
โ โโnotification
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโNotification
โ โโpost
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโPost
โ โโpostlike
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโPostLike
โ โโproject
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโProject
โ โโprojectlike
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโProjectLike
โ โโprojectuser
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโProjectUser
โ โโrate
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโRate
โ โโschedule
โ โ โโcontroller
โ โ โโdto
โ โ โโrepository
โ โ โโservice
โ โ โโSchedule
โ โโuser
โ โโcontroller
โ โโdto
โ โโrepository
โ โโservice
โ โโUser
โโsystem
โโcommon
โโconfig
โ โโproperties
โโexception
โโfilter
โโhandler
โโutils
ํ ์ด๋ธ ๊ด๊ณ - click
- ์ฃผ์ ๋๋ฉ์ธ์ผ๋ก user, post, project, notification ์ผ๋ก ๋๋๋ค
- Project ์ Category ๊ด๊ณ
- Category๋ฅผ ํ๋์ ํ ์ด๋ธ๋ก ๋ง๋ค๊ฒ์ธ๊ฐ ? (์ ๊ทํ ๊ณ ๋ ค)
- ํน์ Enum์ผ๋ก๋ง ๊ด๋ฆฌํ ๊ฒ ์ธ๊ฐ ?
- Enum์ผ๋ก ๊ด๋ฆฌํ๋ค(Field๋ก ์ด๋ฆ ๋ณ๊ฒฝ)
- Enum ๋ง์ผ๋ก๋ ๋ถ๋ฅ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ
- ์ถ๊ฐ์ ์ผ๋ก ๋ถ๋ฅ์ ๋ํ ์ฑ๋ฅ๊ฐ์ ์ด ํ์ํ๊ฑฐ๋ ์์ ์ฆ๊ฐ๊ฐ ์์๋ ๊ฒฝ์ฐ Entity๋ก ๊ตฌํ์ ๊ณ ๋ คํ์ฌ ์ ๊ทํ๋ฅผ ์งํํ๋ค
- Enum์ผ๋ก ๊ด๋ฆฌํ๋ค(Field๋ก ์ด๋ฆ ๋ณ๊ฒฝ)
- Project ์ User ๊ด๊ณ
- Project ์ User๋ N ๋ N ๊ด๊ณ๋ก ์ค์ ํ๋ค. ์ด์ ๋ Project(ํ๋ก์ ํธ)๋ User(์ฌ์ฉ์) ๋ฅผ ์ฌ๋ฌ๋ช
๊ฐ์ง ์ ์๊ณ ๋ฐ๋๋ก User๋ ์ฌ๋ฌ Project๋ฅผ ์ํํ ์ ์์ผ๋ฏ๋ก
- ์ถ๊ฐ๋ก ๊ณ ๋ คํ ์ฌํญ
- Project์ ์๊ตฌ์ฌํญ์ด ๋์ด๋จ์ ๋ฐ๋ผ User์ ์ ๋ณด๋ฅผ Project ๋ด์์๋ ์๋ฐฉํฅ ๊ด๊ณ๋ก ๊ด๋ฆฌํ๋๊ฒ ๋ง์๊น ?
- ํ์ฌ๋ Project๊ฐ ์ฌ๋ฌ User๋ฅผ ๊ฐ์ง๋ค๋ ๊ฐ๋ ์ด๋ฏ๋ก ์๋ฐฉํฅ์ผ๋ก ๋งคํ์ ํด์ฃผ์
- ์ถ๊ฐ๋ก ๊ณ ๋ คํ ์ฌํญ
- Project ์ User๋ N ๋ N ๊ด๊ณ๋ก ์ค์ ํ๋ค. ์ด์ ๋ Project(ํ๋ก์ ํธ)๋ User(์ฌ์ฉ์) ๋ฅผ ์ฌ๋ฌ๋ช
๊ฐ์ง ์ ์๊ณ ๋ฐ๋๋ก User๋ ์ฌ๋ฌ Project๋ฅผ ์ํํ ์ ์์ผ๋ฏ๋ก
๊ณ ๊ฐ์ ํ์ ๊ฐ์ , ๋ก๊ทธ์ธ, ํ์ ์ ๋ณด ๋ณ๊ฒฝ, ํ์ ์ ๋ณด ์กฐํ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค.
- OAuth์ JWT๋ฅผ ํ์ฉํ์ฌ ํ์์ ์ธ์ฆ๊ณผ ์ธ๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ฉฐ, ์ด๋ฅผ ํตํด ์์ ๋ก๊ทธ์ธ ์ Access Token๊ณผ Refresh Token์ ์ด์ฉํ์ฌ ์ธ์ฆ ๊ณผ์ ์ ์๋ฃํฉ๋๋ค.
๊ธฐ๋ฅ
- ๋ก๊ทธ์ธ(์ฒซ ์์ ๋ก๊ทธ์ธ์ ์๋ ํ์๊ฐ์ )
- ํ์ ์ ๋ณด ๋ณ๊ฒฝ
- login (users/auth/login)
- ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์ ์ํํฉ๋๋ค. ๋ก๊ทธ์ธ ์ฑ๊ณต์ token์ ๋ฐ๊ธํ๋ฉฐ ์ดํ ์์ฒญ์ ๋ํด์ ํด๋น ํ ํฐ์ผ๋ก ์ธ์ฆ์ ์งํํฉ๋๋ค.
- updateMyInfo (users/me/info)
- ํ์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
- Spring Boot, Java 11, Spring Data JPA, Mysql, Lombok, Gradle, JWT
์ฌ์ฉ์๊ฐ ๊ฐ์ง ํ๋๋ค์ ๋ฐํ์ผ๋ก ์ฌ์ฉ์์๊ฒ ์๋ง๋ ์ปจํ ์ธ (๊ฒ์๊ธ, ํ๋ก์ ํธ, ์ ์ )๋ฅผ ์ถ์ฒํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค.
- ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ฑํํ LightFM ๋ชจ๋ธ์ ์ฝํ
์ธ ๊ธฐ๋ฐ ๋ฐฉ์๊ณผ ํ์
ํํฐ๋ง์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ํ๋ ฌ ๋ถํด ๋ชจ๋ธ
- ์ฑํํ ์ด์ ๋ ์ฌ์ฉ์์ ์์ดํ
์ ๊ทธ๋ค์ ์ฝํ
์ธ ํน์ฑ์ ์ ์ฌ ์์ธ๋ค๋ก ํํํ๋ฉฐ, ์ํธ์์ฉ ๋ฐ์ดํฐ๊ฐ ๋ถ์กฑํ ์ฝ๋ ์คํํธ ์ํฉ์์๋ ํจ๊ณผ์ ์ด๋ฏ๋ก
- ์ถ์ฒ ๊ธฐ๋ฅ์ด ๋์ํ๋ FastAPI ์๋ฒ๋ฅผ docker Imageํ ํ์ฌ docker ์ปจํ ์ด๋ ์์์ ์คํ (๋ฉ์ธ์๋ฒ ๋ํ Imageํ ํ์ฌ ์ปจํ ์ด๋์์์ ์คํ)
- DB์ ๋ฉ์ธ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ์ API ์์ฒญ์ ๋ฐ์ ๋ชจ๋ธํ์ต ๋ฐ ์ถ์ฒ์ ์ํ
- ์ฑํํ ์ด์ ๋ ์ฌ์ฉ์์ ์์ดํ
์ ๊ทธ๋ค์ ์ฝํ
์ธ ํน์ฑ์ ์ ์ฌ ์์ธ๋ค๋ก ํํํ๋ฉฐ, ์ํธ์์ฉ ๋ฐ์ดํฐ๊ฐ ๋ถ์กฑํ ์ฝ๋ ์คํํธ ์ํฉ์์๋ ํจ๊ณผ์ ์ด๋ฏ๋ก
- getRecommendProjects (projects/recommend)
- ์ ์ ํ๋์ ๋ฐํ์ผ๋ก ์ ํฉํ ํ๋ก์ ํธ๋ฅผ ์ถ์ฒํฉ๋๋ค.
- getRecommendPosts (posts/recommend)
- ์ ์ ํ๋์ ๋ฐํ์ผ๋ก ์ ํฉํ ๊ฒ์๊ธ์ ์ถ์ฒํฉ๋๋ค.
- getSimilarUsers (users/recommend)
- ์ ์ ํ๋์ ๋ฐํ์ผ๋ก ์ ํฉํ ์ ์ ๋ฅผ ์ถ์ฒํฉ๋๋ค.
์ฌ์ฉ์๊ฐ ํ์์ ๊ตฌ์ฑํ๋ฉฐ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ณต์ง์ํญ, ์ผ์ , ํฐ์ผ ๊ด๋ฆฌ, ํ๊ฐ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค.
- ํฐ์ผ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ ํฐ์ผ์ ์นธ๋ฐ๋ณด๋๋ก ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ Status๋ณ๋ก ๋๋์ด ํฐ์ผ๋ค์ ์ฌ๋ฐ๋ฅธ ์์น๋ก ์ด๋ํ๊ฒ๋ ๊ตฌํ
- changePositionTicket (tickets/change/{ticketId})
- ํฐ์ผ ์์น ๋ณ๊ฒฝ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ข์ ๊ฐ์ฒด ID ๋ง๋ค๊ธฐ ๋ธ๋ก๊ทธ - click
- ์ข์ ๊ฐ์ฒด ID๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์๋ 4๊ฐ์ง ์ฌํญ์ ๊ณ ๋ คํ์ฌ ๋ง๋ค๊ธฐ ์ํด ๋
ธ๋ ฅํ์์ต๋๋ค.
- ๊ณ ์ ์ฑ
- ์๋ณ ๊ฐ๋ฅ์ฑ
- ๋ณด์์ฑ
- ์์ฑ ์๊ฐ์ ์ ๋ ฌ
- ๊ด๋ จ PR
- ์ข์ ๊ฐ์ฒด ID๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์๋ 4๊ฐ์ง ์ฌํญ์ ๊ณ ๋ คํ์ฌ ๋ง๋ค๊ธฐ ์ํด ๋
ธ๋ ฅํ์์ต๋๋ค.
- WebSocket ์ ์ดํดํ๋ฉฐ ์ฑํ
์๋น์ค๋ฅผ ๊ตฌํํด๋ณด์์ | MySQL, MongoDB
- ์ฑํ
์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์๋ ์ฌํญ๋ค์ ๊ณ ๋ คํด๋ณด์์ต๋๋ค.
- ์น์์ผ ํ๋กํ ์ฝ ์ดํด
- ์ค์๊ฐ์ฑ ๋ณด์ฅ
- ์ฑํ
์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์๋ ์ฌํญ๋ค์ ๊ณ ๋ คํด๋ณด์์ต๋๋ค.
_._.-.Clipchamp.1.mp4
-.Clipchamp.mp4
_.mp4
_.-.Clipchamp.mp4
_._._.-.Clipchamp.mp4
_.mp4
_._.mp4
_._.-.Clipchamp.mp4
๋์ฉ๋ ํธ๋ํฝ ์ฒ๋ฆฌ
- ๊ฐ์ ์ฌ์ฉ์ 1์ฒ๋ช -> Jmeter๋ก ์งํ ์์
github ci-cd
- ๋น๋ ๋ฐ ๋ฐฐํฌ ์๋ํ
๋ด์ฉ ์์ฑ