Skip to content

๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ ๋ณ‘์› ์ด๋™๋ถ€ํ„ฐ ๊ท€๊ฐ€๊นŒ์ง€ ๋ฏฟ์„ ์ˆ˜ ์žˆ๋Š” ๋™ํ–‰ ์„œ๋น„์Šค - ๋ฉ”๋””ํˆฌ๊ฒŒ๋”

Notifications You must be signed in to change notification settings

kakao-tech-campus-2nd-step3/Team25_BE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Team25_BE

โ— ํ…Œ์ŠคํŠธ ์•ˆ๋‚ด

ํ…Œ์ŠคํŠธ ์‹œ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์—์„œ ๋งค๋‹ˆ์ € ์Šน์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
admin ํŽ˜์ด์ง€ ์ฃผ์†Œ
๋น„๋ฐ€๋ฒˆํ˜ธ: admin (ํ‰๊ฐ€ ๊ธฐ๊ฐ„ ํ›„ ๋ณ€๊ฒฝ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค)
๋งค๋‹ˆ์ € ๋“ฑ๋ก ํ›„ ๋งค๋‹ˆ์ € ์•ฑ์˜ ํ”„๋กœํ•„ ํŽ˜์ด์ง€์—์„œ ๊ทผ๋ฌด ์ง€์—ญ๊ณผ ๊ทผ๋ฌด ์‹œ๊ฐ„์„ ์„ค์ •ํ•ด์•ผ ๊ทธ์— ๋งž๊ฒŒ ์ด์šฉ์ž ์•ฑ์—์„œ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์•ฑ ์‚ฌ์šฉ๋ฒ•์€ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๋ฉ”๋””ํˆฌ๊ฒŒ๋” ์†Œ๊ฐœ

๋ชฉ์ฐจ


ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๊ฐœ๋ฐœ ๋™๊ธฐ ๋ฐ ๋ชฉ์ 

์ €ํฌ ์น ์ „ํŒ”๊ธฐ ํŒ€์€ โ€œ๋ณ‘์› ๋™ํ–‰ ์„œ๋น„์Šค ๋งค์นญ ํ”Œ๋žซํผโ€ ์„ ์ฃผ์ œ๋กœ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๋ นํ™” ์‚ฌํšŒ๋กœ ์ ‘์–ด๋“ค๋ฉด์„œ ์˜๋ฃŒ ์ด์šฉ์— ์–ด๋ ค์›€์„ ๊ฒช๋Š” ๊ณ ๋ น์ธต์ด ๋Š˜์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฌด์ธ ์ ‘์ˆ˜๊ธฐ ๋“ฑ ๋””์ง€ํ„ธ ๋„๊ตฌ์˜ ๋„์ž…์œผ๋กœ ์ธํ•ด ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์–ด๋ฅด์‹ ๋“ค์€ ๋ณ‘์› ์ด์šฉ์— ๋ถˆํŽธํ•จ์„ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ €ํฌ๋Š” ๋„์›€์ด ํ•„์š”ํ•œ ํ™˜์ž์™€ ์ „๋ฌธ ๋งค๋‹ˆ์ €๋ฅผ ๋งค์นญํ•˜์—ฌ ํ™˜์ž๊ฐ€ ์•ˆ์ „ํ•˜๊ฒŒ ์˜๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”Œ๋žซํผ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋ณ‘์› ๋™ํ–‰ ์„œ๋น„์Šค์˜ ์ˆ˜์š”๋Š” ๊ณ ๋ นํ™”์™€ 1์ธ ๊ฐ€๊ตฌ ์ฆ๊ฐ€๋กœ ์ธํ•ด ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋ณ‘์› ๋™ํ–‰ ๋งค๋‹ˆ์ € ์—…๋ฌด๋Š” ๋น„๊ต์  ๋‚ฎ์€ ๋…ธ๋™ ๊ฐ•๋„๋กœ ์ค‘์žฅ๋…„์ธต์˜ ์ƒˆ๋กœ์šด ์ง์—…์œผ๋กœ ์ฃผ๋ชฉ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ €ํฌ ํ”Œ๋žซํผ์€ ํ™˜์ž์™€ ์ „๋ฌธ ๋งค๋‹ˆ์ € ๊ฐ„์˜ ๋งค์นญ์„ ํ†ตํ•ด ๋ณ‘์› ์ด์šฉ์„ ์ง€์›ํ•˜๋ฉฐ, ์‹ค์‹œ๊ฐ„ ์กฐํšŒ ๋ฐ ๋ฆฌํฌํŠธ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ž๋…€๋“ค๋„ ์•ˆ์‹ฌํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๊ฒ ์Šต๋‹ˆ๋‹ค.


์„œ๋น„์Šค ์†Œ๊ฐœ

ํˆฌ๋ช…ํ•œ ์„œ๋น„์Šค๋กœ ํ™˜์ž์™€ ๋ณ‘์› ๋™ํ–‰ ๋งค๋‹ˆ์ €๋ฅผ ๋งค์นญํ•˜๋‹ค, '๋ฉ”๋””ํˆฌ๊ฒŒ๋”'

  1. โœ๏ธ ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž…

    • SNS ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ (์นด์นด์˜ค)์œผ๋กœ ํšŒ์›๊ฐ€์ž…์ด ๊ฐ€๋Šฅํ•ด์š”.
    • ๋กœ๊ทธ์•„์›ƒ ๋ฐ ํƒˆํ‡ด ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด์š”.
  2. ๐Ÿ—‚๏ธ ํ™˜์ž์˜ ํ”„๋กœํ•„ ๊ด€๋ฆฌ

    • ํ™˜์ž ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์˜๋ฃŒ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์š” (์ด๋ฆ„, ๋‚˜์ด, ์„ฑ๋ณ„, ๋ณ‘๋ ฅ ๋“ฑ).
    • ์ฃผ์น˜์˜ ์ •๋ณด๋„ ๋“ฑ๋กํ•ด๋‘๋ฉด ์„œ๋น„์Šค ์ด์šฉ์— ๋„์›€์ด ๋ผ์š”.
  3. ๐Ÿ“… ์„œ๋น„์Šค ์˜ˆ์•ฝ์œผ๋กœ ๋ณ‘์› ๋™ํ–‰์„ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด์š”

    • ๋™ํ–‰ ์„œ๋น„์Šค ์˜ˆ์•ฝ์„ ํ†ตํ•ด ๋ณ‘์› ์ •๋ณด์™€ ์˜ˆ์•ฝ ์‹œ๊ฐ„์„ ์‰ฝ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์–ด์š”.
    • ์˜ˆ์•ฝ ํ›„์—๋„ ์ˆ˜์ •์ด๋‚˜ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์š”.
  4. ๐Ÿ“ ์‹ค์‹œ๊ฐ„ ๋™ํ–‰ ํ˜„ํ™ฉ ์•Œ๋ฆผ

    • ๋™ํ–‰ ์„œ๋น„์Šค ์ด์šฉ ์ค‘ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™˜์ž์™€ ๋™ํ–‰์ž์˜ ์œ„์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
    • ๋ณดํ˜ธ์ž๋‚˜ ํ™˜์ž ๋ณธ์ธ์ด ์–ดํ”Œ์—์„œ ์ด๋™ ๊ฒฝ๋กœ์™€ ์œ„์น˜๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
  5. ๐Ÿ“ ์ง„๋ฃŒ ๋ฆฌํฌํŠธ ์ œ๊ณต์œผ๋กœ ์ง„๋ฃŒ ์ •๋ณด๋ฅผ ํ•œ๋ˆˆ์—

    • ์ง„๋ฃŒ๊ฐ€ ๋๋‚˜๋ฉด ๋ฆฌํฌํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค˜์š” (์ง„๋ฃŒ ์ •๋ณด, ์ฒ˜๋ฐฉ ๋‚ด์—ญ ๋“ฑ ํฌํ•จ).

๊ฐœ๋ฐœ ๊ธฐ๊ฐ„

2024.09 ~ 2024.11 (์นด์นด์˜ค ํ…Œํฌ ์บ ํผ์Šค 2๊ธฐ - STEP3)


ํŒ€์› ์†Œ๊ฐœ

๊ฐ•์ˆ˜๋ฏผ ๊น€์ƒํ•ด ๋ฐ•๋ฏผ์žฌ ์ด์„ฑํ›ˆ
E-Mail [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 ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๊ฒฐ์ œ ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ๋ฅผ ํ†ตํ•œ ๊ฒฐ์ œ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๋นŒ๋งํ‚ค ๋ฐœ๊ธ‰์„ ํ†ตํ•œ ์นด๋“œ ๋“ฑ๋ก ๋ฐ ๊ฒฐ์ œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋งํ‚ค๋Š” ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฒฐ์ œ ์ทจ์†Œ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

BE ๊ฐœ๋ฐœ ์ฃผ์•ˆ์ 

๐Ÿ“Œ Request์™€ Response๋Š” ๋ฐ˜๋“œ์‹œ DTO๋กœ ์‚ฌ์šฉ

๋ชจ๋“  ์š”์ฒญ๊ณผ ์‘๋‹ต์€ DTO(Data Transfer Object) ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๋ช…ํ™•์„ฑ์„ ํ™•๋ณดํ•˜๊ณ , Controller์™€ Service ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์˜์กด์„ฑ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๊ณ  ๊ฐ ๋ ˆ์ด์–ด์˜ ์ฑ…์ž„์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Controller์™€ Service์˜ ์—ญํ•  ๋ถ„๋ฆฌ

Controller๋Š” ์ •์ƒ์ ์ธ ๋™์ž‘์„ ๊ฐ€์ •ํ•˜๋ฉฐ, ํ•ต์‹ฌ ๊ฒ€์ฆ๊ณผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋Š” Service ๋ ˆ์ด์–ด์—์„œ ๋‹ด๋‹นํ•˜๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด Controller๋Š” ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ , Service๋Š” ์‹ค์ œ ๋กœ์ง๊ณผ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ด ์œ ์—ฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ์˜ˆ์™ธ ์ฝ”๋“œ ๊ด€๋ฆฌ: ErrorCode ํด๋ž˜์Šค ์‚ฌ์šฉ

๋ชจ๋“  ์˜ˆ์™ธ ์ฝ”๋“œ๋Š” ErrorCode ํด๋ž˜์Šค์—์„œ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜์—ฌ, ์ฝ”๋“œ ๋‚ด์—์„œ ์ผ๊ด€๋œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์˜ˆ์™ธ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ๊ทผ๋ฌด์‹œ๊ฐ„ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ์„ค๊ณ„

์ดˆ๊ธฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Primary Key๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์กฐํšŒํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ–ˆ์ง€๋งŒ, Android ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ทผ๋ฌด์‹œ๊ฐ„ ํ…Œ์ด๋ธ”์˜ ID๋ฅผ ์•Œ ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ์„ค๊ณ„ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ณ ๋ คํ–ˆ๋˜ ๋ฐฉ๋ฒ•: ์š”์ผ๋ณ„๋กœ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ๋ชจ๋“  ์š”์ผ ์ •๋ณด๋ฅผ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ๊ณ ๋ฏผํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์ข… ๊ตฌํ˜„: ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์ „์ฒด ์š”์ผ๋ณ„ ๊ทผ๋ฌด์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. User -> Manager -> ๊ทผ๋ฌด์‹œ๊ฐ„ ํ…Œ์ด๋ธ”๋กœ One-to-One ๋งคํ•‘์„ ์„ค์ •ํ•˜์—ฌ, ๋งค๋‹ˆ์ € ํ”„๋กœํ•„ ์กฐํšŒ ์‹œ ์ „์ฒด ๊ทผ๋ฌด์‹œ๊ฐ„์„ ํ•œ ๋ฒˆ์— ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํšจ์œจ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Android์™€ OAuth ์ฑ…์ž„ ๋ถ„๋ฆฌ ๋ฐ ๋ณด์•ˆ ๊ฐ•ํ™”

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐฉ์‹์œผ๋กœ OAuth๋ฅผ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ ๊ฐ„ํŽธํ•œ ๋กœ๊ทธ์ธ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์ œ๊ณตํ•œ ์ •๋ณด๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑ์—”๋“œ์™€ OAuth ์„œ๋ฒ„ ๊ฐ„์˜ ์ง์ ‘์ ์ธ ํ†ต์‹ ์ด ํ•„์š”ํ–ˆ์œผ๋ฉฐ, ์ด์— OAuth ์„œ๋ฒ„์˜ Token์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ์™€ ๋ฐฑ์—”๋“œ ๊ฐ„์— OAuth ์„œ๋ฒ„์˜ ํ† ํฐ์„ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค๋ฉด ๋ณด์•ˆ์ƒ ์œ„ํ—˜ํ•œ ์ƒํ™ฉ์ด๋ฏ€๋กœ, ์ด๋ฅผ ๋ณด์•ˆํ•˜๊ณ ์ž HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ํ†ต์‹  ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ JWT ํ† ํฐ์— ํฌํ•จํ•  ์ •๋ณด

JWT ํ† ํฐ์— ๊ฐœ์ธ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ๋ณด์•ˆ์ƒ ์œ„ํ—˜ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜์—ฌ, ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋Œ€์‹  UUID๋ฅผ ํฌํ•จํ•˜๋„๋ก ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

ulid-creator ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด UUID ๋ฒ„์ „ 7์„ ํ™œ์šฉํ–ˆ์œผ๋ฉฐ, ์ด๋Š” ํƒ€์ž„์Šคํƒฌํ”„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ ์œ ์„ฑ์„ ๋ณด์žฅํ•˜์—ฌ ์ค‘๋ณต ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๊ณ ์œ ํ•œ ๊ฐ’์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋ฏผ๊ฐํ•œ ์ •๋ณด ๊ด€๋ฆฌ: Spring Cloud Config์™€ Vault

์‹œ์Šคํ…œ์˜ ํด๋ผ์ด์–ธํŠธ ํ‚ค, ์‹œํฌ๋ฆฟ ํ‚ค ๋“ฑ์˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Spring Cloud Config์™€ HashiCorp Vault๋ฅผ ํ™œ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Spring Cloud Config๋Š” ํ™˜๊ฒฝ๋ณ„ ์„ค์ •์„ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, Vault๋Š” ์‹œํฌ๋ฆฟ ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์•”ํ˜ธํ™”ํ•˜๊ณ  ์ ‘๊ทผ ์ œ์–ด๋ฅผ ํ†ตํ•ด ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ  ๊ฒฐ์ œ ์„œ๋น„์Šค ๊ตฌํ˜„

๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ์™€ ์—ฐ๋™ํ•˜์—ฌ ๋นŒ๋งํ‚ค ๊ธฐ๋ฐ˜์˜ ๊ฒฐ์ œ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ•œ ๋ฒˆ์˜ ์นด๋“œ ๋“ฑ๋ก์œผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ฒฐ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ข…๋Ÿ‰์ œ ๋ฐ ๊ตฌ๋… ์„œ๋น„์Šค์—๋„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ์นด๋“œ ์ •๋ณด ์•ˆ์ „ ์ „์†ก

๋นŒ๋งํ‚ค ๋ฐœ๊ธ‰ ๊ณผ์ •์—์„œ ์นด๋“œ ์ •๋ณด๋ฅผ ์•ˆ๋“œ๋กœ์ด๋“œ๋กœ๋ถ€ํ„ฐ ํ‰๋ฌธ์œผ๋กœ ์ „์†ก๋ฐ›๋Š” ๊ฒƒ์€ ๋ณด์•ˆ์ƒ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์นด๋“œ ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๊ณ , ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์•”ํ˜ธํ™” ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ์— ์ „๋‹ฌํ•˜์—ฌ ์„œ๋ฒ„ ๋‚ด ์นด๋“œ ์ •๋ณด ์ฒ˜๋ฆฌ ๋ฐ ์ €์žฅ์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ ๋ณด์•ˆ์„ฑ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ๊ด€๋ฆฌ

๋นŒ๋งํ‚ค์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ์•”ํ˜ธํ™”๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋˜๋ฉฐ, ํ•„์š” ์‹œ์—๋งŒ ๋ณตํ˜ธํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Vault์˜ secretKey๋ฅผ ์‚ฌ์šฉํ•ด ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ณด์•ˆ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์œ ์ถœ์˜ ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.


๋งํฌ ๋ชจ์Œ

๊ธฐํš ๋””์ž์ธ ๊ฐœ๋ฐœ ๋ฐฐํฌ
๋…ธ์…˜ ์™€์ด์–ดํ”„๋ ˆ์ž„ ๋ฐฑ์—”๋“œ ๊นƒํ—ˆ๋ธŒ ๋ฐฑ์—”๋“œ ๋ฐฐํฌ ์ฃผ์†Œ
์ตœ์ข… ๊ธฐํš์•ˆ ์•ˆ๋“œ๋กœ์ด๋“œ(์ด์šฉ์ž ์•ฑ) ๊นƒํ—ˆ๋ธŒ ๋ฉ”๋””ํˆฌ๊ฒŒ๋” ์›์Šคํ† ์–ด
์•ˆ๋“œ๋กœ์ด๋“œ(๋งค๋‹ˆ์ € ์•ฑ) ๊นƒํ—ˆ๋ธŒ ๋ฉ”๋””ํˆฌ๊ฒŒ๋” ๋งค๋‹ˆ์ €์•ฑ ์›์Šคํ† ์–ด
API ๋ฌธ์„œ Vault ์„œ๋ฒ„ ๋ฐฐํฌ ์ฃผ์†Œ
ERD ๋ช…์„ธ์„œ ๋ฉ”๋””ํˆฌ๊ฒŒ๋” ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€
ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค
ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ณด๊ณ ์„œ

ERD

ERD


API ๋ชจ์•„๋ณด๊ธฐ

๐Ÿ“ API ๋ฌธ์„œ

API ๋ช…์„ธ์„œ


์‹œ์ž‘ ๊ฐ€์ด๋“œ

Requirements: Java 21, Spring 3.3.3

๋ฉ”๋””ํˆฌ๊ฒŒ๋” ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •์ด ์™„๋ฃŒ๋˜์–ด์•ผ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. ํ”„๋กœ์ ํŠธ ํด๋ก 
git clone https://github.com/kakao-tech-campus-2nd-step3/Team25_BE.git
cd Team25_BE
  1. ์‹คํ–‰
./gradlew build
cd build
cd libs
java -jar backend-0.0.1-SNAPSHOT.jar

์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

๊ธฐ์ˆ  ์Šคํƒ

About

๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ ๋ณ‘์› ์ด๋™๋ถ€ํ„ฐ ๊ท€๊ฐ€๊นŒ์ง€ ๋ฏฟ์„ ์ˆ˜ ์žˆ๋Š” ๋™ํ–‰ ์„œ๋น„์Šค - ๋ฉ”๋””ํˆฌ๊ฒŒ๋”

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published