ํ ์คํธ ์ ๊ด๋ฆฌ์ ํ์ด์ง์์ ๋งค๋์ ์น์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.
admin ํ์ด์ง ์ฃผ์
๋น๋ฐ๋ฒํธ: admin (ํ๊ฐ ๊ธฐ๊ฐ ํ ๋ณ๊ฒฝ ์์ ์ ๋๋ค)
๋งค๋์ ๋ฑ๋ก ํ ๋งค๋์ ์ฑ์ ํ๋กํ ํ์ด์ง์์ ๊ทผ๋ฌด ์ง์ญ๊ณผ ๊ทผ๋ฌด ์๊ฐ์ ์ค์ ํด์ผ ๊ทธ์ ๋ง๊ฒ ์ด์ฉ์ ์ฑ์์ ๊ฒ์๋ฉ๋๋ค. ์์ธํ ์ฑ ์ฌ์ฉ๋ฒ์ ํ ์คํธ ์๋๋ฆฌ์ค์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๋ชฉ์ฐจ
์ ํฌ ์น ์ ํ๊ธฐ ํ์ โ๋ณ์ ๋ํ ์๋น์ค ๋งค์นญ ํ๋ซํผโ ์ ์ฃผ์ ๋ก ์ ์ ํ์ต๋๋ค. ๊ณ ๋ นํ ์ฌํ๋ก ์ ์ด๋ค๋ฉด์ ์๋ฃ ์ด์ฉ์ ์ด๋ ค์์ ๊ฒช๋ ๊ณ ๋ น์ธต์ด ๋์ด๋๊ณ ์์ต๋๋ค. ํนํ ๋ฌด์ธ ์ ์๊ธฐ ๋ฑ ๋์งํธ ๋๊ตฌ์ ๋์ ์ผ๋ก ์ธํด ์ต์ํ์ง ์์ ์ด๋ฅด์ ๋ค์ ๋ณ์ ์ด์ฉ์ ๋ถํธํจ์ ๊ฒช๊ณ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ํฌ๋ ๋์์ด ํ์ํ ํ์์ ์ ๋ฌธ ๋งค๋์ ๋ฅผ ๋งค์นญํ์ฌ ํ์๊ฐ ์์ ํ๊ฒ ์๋ฃ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ ํ๋ซํผ์ ์ ์ํฉ๋๋ค. ๋ณ์ ๋ํ ์๋น์ค์ ์์๋ ๊ณ ๋ นํ์ 1์ธ ๊ฐ๊ตฌ ์ฆ๊ฐ๋ก ์ธํด ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๊ณ ์์ผ๋ฉฐ, ๋ณ์ ๋ํ ๋งค๋์ ์ ๋ฌด๋ ๋น๊ต์ ๋ฎ์ ๋ ธ๋ ๊ฐ๋๋ก ์ค์ฅ๋ ์ธต์ ์๋ก์ด ์ง์ ์ผ๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค.
์ ํฌ ํ๋ซํผ์ ํ์์ ์ ๋ฌธ ๋งค๋์ ๊ฐ์ ๋งค์นญ์ ํตํด ๋ณ์ ์ด์ฉ์ ์ง์ํ๋ฉฐ, ์ค์๊ฐ ์กฐํ ๋ฐ ๋ฆฌํฌํธ ๊ธฐ๋ฅ์ ํตํด ์๋ ๋ค๋ ์์ฌํ๊ณ ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋๋ก ๋๊ฒ ์ต๋๋ค.
ํฌ๋ช ํ ์๋น์ค๋ก ํ์์ ๋ณ์ ๋ํ ๋งค๋์ ๋ฅผ ๋งค์นญํ๋ค, '๋ฉ๋ํฌ๊ฒ๋'
-
โ๏ธ ๋ก๊ทธ์ธ ๋ฐ ํ์๊ฐ์
- SNS ๊ฐํธ ๋ก๊ทธ์ธ (์นด์นด์ค)์ผ๋ก ํ์๊ฐ์ ์ด ๊ฐ๋ฅํด์.
- ๋ก๊ทธ์์ ๋ฐ ํํด ๊ธฐ๋ฅ๋ ์ ๊ณตํ๊ณ ์์ด์.
-
๐๏ธ ํ์์ ํ๋กํ ๊ด๋ฆฌ
- ํ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ์ ๋ ฅํ๊ณ ์๋ฃ ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ ์ ์์ด์ (์ด๋ฆ, ๋์ด, ์ฑ๋ณ, ๋ณ๋ ฅ ๋ฑ).
- ์ฃผ์น์ ์ ๋ณด๋ ๋ฑ๋กํด๋๋ฉด ์๋น์ค ์ด์ฉ์ ๋์์ด ๋ผ์.
-
๐ ์๋น์ค ์์ฝ์ผ๋ก ๋ณ์ ๋ํ์ ๋ฏธ๋ฆฌ ์ค๋นํด์
- ๋ํ ์๋น์ค ์์ฝ์ ํตํด ๋ณ์ ์ ๋ณด์ ์์ฝ ์๊ฐ์ ์ฝ๊ฒ ์ค์ ํ ์ ์์ด์.
- ์์ฝ ํ์๋ ์์ ์ด๋ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํด์.
-
๐ ์ค์๊ฐ ๋ํ ํํฉ ์๋ฆผ
- ๋ํ ์๋น์ค ์ด์ฉ ์ค ์ค์๊ฐ์ผ๋ก ํ์์ ๋ํ์์ ์์น๋ฅผ ํ์ธํ ์ ์์ด์.
- ๋ณดํธ์๋ ํ์ ๋ณธ์ธ์ด ์ดํ์์ ์ด๋ ๊ฒฝ๋ก์ ์์น๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์์ด์.
-
๐ ์ง๋ฃ ๋ฆฌํฌํธ ์ ๊ณต์ผ๋ก ์ง๋ฃ ์ ๋ณด๋ฅผ ํ๋์
- ์ง๋ฃ๊ฐ ๋๋๋ฉด ๋ฆฌํฌํธ๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค์ (์ง๋ฃ ์ ๋ณด, ์ฒ๋ฐฉ ๋ด์ญ ๋ฑ ํฌํจ).
2024.09 ~ 2024.11 (์นด์นด์ค ํ ํฌ ์บ ํผ์ค 2๊ธฐ - STEP3)
๊ฐ์๋ฏผ | ๊น์ํด | ๋ฐ๋ฏผ์ฌ | ์ด์ฑํ | |
---|---|---|---|---|
[email protected] | [email protected] | [email protected] | [email protected] | |
GitHub | wvssm | gobad820 | minjae4650 | NextrPlue |
![]() |
![]() |
![]() |
![]() |
- ๋ก๊ทธ์ธ/ํ์๊ฐ์
- ์์ฝ
- ์ค์๊ฐ ๋ํ ํํฉ
- ์์ฝ ํํฉ
- ๋งค๋์ ๋ฆฌ์คํธ ์กฐํ
- ๋งค๋์ ํ๋กํ ์กฐํ
- ์ง๋ฃ ๋ฆฌํฌํธ
- ๊ฒฐ์
๊ธฐ๋ฅ | ์ค๋ช |
---|---|
๋ก๊ทธ์ธ/ํ์๊ฐ์ | ์นด์นด์ค OAuth ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฉฐ, ์นด์นด์ค ๋ก๊ทธ์ธ ํ ๋ฐ๊ธ๋ access token๊ณผ refresh token์ ํตํด JWT ๊ด๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. refresh token์ ๋ง๋ฃ ๊ธฐ๊ฐ์ด 7์ผ ์ด์ ๋จ์ ์์ ๊ฒฝ์ฐ ์๋ ๋ก๊ทธ์ธ๋ ์ง์ํฉ๋๋ค. |
์์ฝ | ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ๋ ฅ(์ด๋ฆ, ์๋ ์์ผ, ์ฑ๋ณ, ์ฐ๋ฝ์ฒ, ์ถ๋ฐ์ง, ๋์ฐฉ์ง ๋ฑ) ๋ฐ์ ๊ฐ์ธ์ ๋ณด ์์ง ๋์ ํ ์์ฝ์ ์๋ฃํฉ๋๋ค. |
์ค์๊ฐ ๋ํ ํํฉ | ๋งค๋์ ์ฑ์์ ๋งค๋์ ๊ฐ ์ ๋ ฅํ ๋ํ ์ํฉ ์ ๋ณด(์: 24.11.20 21:04 ๋ถ์ฐ๋ ๋ณ์ ๋์ฐฉ)๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค. |
์์ฝ ํํฉ | ํ์ฌ ์์ฝ ์ํ์ ์ง๋ ์์ฝ ๋ด์ญ์ ์กฐํํ ์ ์์ผ๋ฉฐ, ์งํ ์ค์ธ ์์ฝ์ ๋ํด์๋ ์ทจ์ ์์ฒญ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ํ, ์ง๋ ์์ฝ์ ๋ํ ๋ฆฌํฌํธ๋ ํ์ธํ ์ ์์ต๋๋ค. |
๋งค๋์ ๋ฆฌ์คํธ ์กฐํ | ์์ฝ ์ ์ถ๋ฐ์ง๋ฅผ ๋๋ก๋ช ์ฃผ์ ๊ฒ์ API๋ฅผ ํตํด ์ ํํ๋ฉด, ํด๋น ์ถ๋ฐ์ง์ ์/๋ ์ ๋ณด๋ฅผ ์ ์ฅํ์ฌ ํด๋น ์ง์ญ์ ๋ง๋ ๋งค๋์ ๋ฆฌ์คํธ๋ฅผ ์กฐํํ ์ ์์ต๋๋ค. |
๋งค๋์ ํ๋กํ ์กฐํ | ๋งค๋์ ๋ฆฌ์คํธ์์ ํญ๋ชฉ์ ์ ํํ๋ฉด ๋งค๋์ ์ฑ์ ๋ฑ๋ก๋ ๋งค๋์ ๋ค์ ํ๋กํ์ ์กฐํํ ์ ์์ต๋๋ค. ํนํ, ๋งค๋์ ํ๋กํ ์ด๋ฏธ์ง๋ Amazon S3 ์๋น์ค๋ฅผ ํตํด ๋ค์ด๋ก๋ ๋ฐ์ ํ์๋ฉ๋๋ค. |
๊ฒฐ์ | ๋์ด์คํ์ด๋จผ์ธ ๋ฅผ ํตํ ๊ฒฐ์ ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋น๋งํค ๋ฐ๊ธ์ ํตํ ์นด๋ ๋ฑ๋ก ๋ฐ ๊ฒฐ์ ๋ฅผ ์ง์ํฉ๋๋ค. ๋น๋งํค๋ ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๊ฒฐ์ ์ทจ์๋ ์ง์ํฉ๋๋ค. |
๋ชจ๋ ์์ฒญ๊ณผ ์๋ต์ DTO(Data Transfer Object) ๋ก ์ฒ๋ฆฌํ์ฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ช ํ์ฑ์ ํ๋ณดํ๊ณ , Controller์ Service ๊ฐ์ ๋ฐ์ดํฐ ์์กด์ฑ์ ์ค์์ต๋๋ค.
์ด๋ฅผ ํตํด ์ฝ๋ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๊ณ ๊ฐ ๋ ์ด์ด์ ์ฑ ์์ ๋ช ํํ ๋ถ๋ฆฌํ์์ต๋๋ค.
Controller๋ ์ ์์ ์ธ ๋์์ ๊ฐ์ ํ๋ฉฐ, ํต์ฌ ๊ฒ์ฆ๊ณผ ์์ธ ์ฒ๋ฆฌ๋ Service ๋ ์ด์ด์์ ๋ด๋นํ๋๋ก ์ค๊ณํ์ต๋๋ค.
์ด๋ฅผ ํตํด Controller๋ ์์ฒญ์ ์ ๋ฌํ๊ณ , Service๋ ์ค์ ๋ก์ง๊ณผ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ํํด ์ ์ฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ๊ฐํํ์ต๋๋ค.
๋ชจ๋ ์์ธ ์ฝ๋๋
ErrorCode
ํด๋์ค์์ ํตํฉ ๊ด๋ฆฌํ์ฌ, ์ฝ๋ ๋ด์์ ์ผ๊ด๋ ์์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ํ์ต๋๋ค.์ด๋ฅผ ํตํด ์์ธ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์์ต๋๋ค.
์ด๊ธฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค Primary Key๋ฅผ ํตํด ์ง์ ์กฐํํ๋ ๋ฐฉ์์ผ๋ก ์ค๊ณํ์ง๋ง, Android ํด๋ผ์ด์ธํธ๊ฐ ๊ทผ๋ฌด์๊ฐ ํ ์ด๋ธ์ ID๋ฅผ ์ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ์ฌ ์ค๊ณ ๋ฐฉ์์ ๋ณ๊ฒฝํ์ต๋๋ค.
- ๊ณ ๋ คํ๋ ๋ฐฉ๋ฒ: ์์ผ๋ณ๋ก ๊ฐ๊ธฐ ๋ค๋ฅธ ํ ์ด๋ธ์ ์์ฑํ๊ฑฐ๋, ํ๋์ ํ ์ด๋ธ์ ๋ชจ๋ ์์ผ ์ ๋ณด๋ฅผ ํตํฉํ๋ ๋ฐฉ์ ์ค ๊ณ ๋ฏผํ์ต๋๋ค.
- ์ต์ข ๊ตฌํ: ํ๋์ ํ ์ด๋ธ์ ์ ์ฒด ์์ผ๋ณ ๊ทผ๋ฌด์๊ฐ ์ ๋ณด๋ฅผ ํตํฉํ์ฌ ๊ด๋ฆฌํ์ต๋๋ค.
User
->Manager
->๊ทผ๋ฌด์๊ฐ ํ ์ด๋ธ
๋ก One-to-One ๋งคํ์ ์ค์ ํ์ฌ, ๋งค๋์ ํ๋กํ ์กฐํ ์ ์ ์ฒด ๊ทผ๋ฌด์๊ฐ์ ํ ๋ฒ์ ์กฐํํ ์ ์๋๋ก ํจ์จ์ฑ์ ๋์์ต๋๋ค.
์๋๋ก์ด๋์์ ๋ค์ดํฐ๋ธ ๋ฐฉ์์ผ๋ก OAuth๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ ๊ฐํธํ ๋ก๊ทธ์ธ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ง๋ง, ์๋๋ก์ด๋์์ ์ ๊ณตํ ์ ๋ณด๋ฅผ ๊ฒ์ฆํ๊ธฐ ์ํด ๋ฐฑ์๋์ OAuth ์๋ฒ ๊ฐ์ ์ง์ ์ ์ธ ํต์ ์ด ํ์ํ์ผ๋ฉฐ, ์ด์ OAuth ์๋ฒ์ Token์ด ํ์ํ์ต๋๋ค.
์๋๋ก์ด๋์ ๋ฐฑ์๋ ๊ฐ์ OAuth ์๋ฒ์ ํ ํฐ์ ์ฃผ๊ณ ๋ฐ๋๋ค๋ฉด ๋ณด์์ ์ํํ ์ํฉ์ด๋ฏ๋ก, ์ด๋ฅผ ๋ณด์ํ๊ณ ์ HTTPS ํ๋กํ ์ฝ์ ์ฌ์ฉํด ํต์ ๋ณด์์ ๊ฐํํ์ต๋๋ค.
JWT ํ ํฐ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ํฌํจํ๋ ๊ฒ์ ๋ณด์์ ์ํํ๋ค๊ณ ํ๋จํ์ฌ, ์ฌ์ฉ์ ์ด๋ฆ ๋์ UUID๋ฅผ ํฌํจํ๋๋ก ๊ฒฐ์ ํ์ต๋๋ค.
ulid-creator ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด UUID ๋ฒ์ 7์ ํ์ฉํ์ผ๋ฉฐ, ์ด๋ ํ์์คํฌํ ๊ธฐ๋ฐ์ผ๋ก ๊ณ ์ ์ฑ์ ๋ณด์ฅํ์ฌ ์ค๋ณต ๊ฐ๋ฅ์ฑ์ ์ต์ํํ์ต๋๋ค.
์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ง๋ค ๊ณ ์ ํ ๊ฐ์ ์ ์งํ๋ฉด์๋ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ๋ฅผ ๊ฐํํ์ต๋๋ค.
์์คํ ์ ํด๋ผ์ด์ธํธ ํค, ์ํฌ๋ฆฟ ํค ๋ฑ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด Spring Cloud Config์ HashiCorp Vault๋ฅผ ํ์ฉํ์์ต๋๋ค.
Spring Cloud Config๋ ํ๊ฒฝ๋ณ ์ค์ ์ ์ค์์์ ๊ด๋ฆฌํ์ฌ ์ฝ๋ ์์ ์์ด ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ, Vault๋ ์ํฌ๋ฆฟ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ํธํํ๊ณ ์ ๊ทผ ์ ์ด๋ฅผ ํตํด ๋ณดํธํฉ๋๋ค.
๋์ด์คํ์ด๋จผ์ธ ์ ์ฐ๋ํ์ฌ ๋น๋งํค ๊ธฐ๋ฐ์ ๊ฒฐ์ ์์คํ ์ ๊ตฌ์ถํ์์ต๋๋ค.
ํ ๋ฒ์ ์นด๋ ๋ฑ๋ก์ผ๋ก ๊ฐํธํ๊ฒ ๊ฒฐ์ ๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ์ข ๋์ ๋ฐ ๊ตฌ๋ ์๋น์ค์๋ ํ์ฉํ ์ ์์ต๋๋ค.
๋น๋งํค ๋ฐ๊ธ ๊ณผ์ ์์ ์นด๋ ์ ๋ณด๋ฅผ ์๋๋ก์ด๋๋ก๋ถํฐ ํ๋ฌธ์ผ๋ก ์ ์ก๋ฐ๋ ๊ฒ์ ๋ณด์์ ์ํ์ด ์์ต๋๋ค.
์๋๋ก์ด๋์์ ์นด๋ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ ์๋ฒ๋ก ์ ์กํ๊ณ , ์๋ฒ๋ ํด๋น ์ํธํ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋์ด์คํ์ด๋จผ์ธ ์ ์ ๋ฌํ์ฌ ์๋ฒ ๋ด ์นด๋ ์ ๋ณด ์ฒ๋ฆฌ ๋ฐ ์ ์ฅ์ ๋ฐฉ์งํ๋ฉฐ ๋ณด์์ฑ์ ํฅ์์์ผฐ์ต๋๋ค.
๋น๋งํค์ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ํญ์ ์ํธํ๋ ์ํ๋ก ์ ์ฅ๋๋ฉฐ, ํ์ ์์๋ง ๋ณตํธํํ์ฌ ์ฌ์ฉํฉ๋๋ค.
Vault์
secretKey
๋ฅผ ์ฌ์ฉํด ์ํธํํ์ฌ ๋ณด์์ฑ์ ๊ทน๋ํํ๊ณ ๋ฐ์ดํฐ ์ ์ถ์ ์ํ์ ์ต์ํํฉ๋๋ค.
๐ API ๋ฌธ์
Requirements: Java 21, Spring 3.3.3
๋ฉ๋ํฌ๊ฒ๋ ํ๊ฒฝ ๋ณ์ ์ค์ ์ด ์๋ฃ๋์ด์ผ ํ๋ก์ ํธ๊ฐ ์คํ๋ฉ๋๋ค.
- ํ๋ก์ ํธ ํด๋ก
git clone https://github.com/kakao-tech-campus-2nd-step3/Team25_BE.git
cd Team25_BE
- ์คํ
./gradlew build
cd build
cd libs
java -jar backend-0.0.1-SNAPSHOT.jar