๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project/์‹นํ‹”์›€

[์‹นํ‹”์›€] 10/21 ๊ฐœ๋ฐœ์ผ์ง€ ์‹นํ‹”์›€ ํ”„๋กœ์ ํŠธ SA ์ž‘์„ฑ ๋ฐ ํšŒ์˜, ์ดˆ๊ธฐ ์ž‘์—… ์ง„ํ–‰ ์‚ฌํ•ญ

by ํ•œ33 2024. 10. 22.

๐ŸŒฑ ๊ฐœ์š”

  • ์‹๋ฌผ ํ‚ค์šฐ๊ธฐ ๊ฐ€์ด๋“œ ๋ฐ ์ •๋ณด๊ณต์œ  ์„œ๋น„์Šค
    • ์ดˆ๋ณด์ž๋ถ€ํ„ฐ ์ˆ™๋ จ์ž๊นŒ์ง€ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ๋ฐ˜๋ ค์‹๋ฌผ์„ ํ‚ค์šฐ๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์ •๋ณด ์ œ๊ณต ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”Œ๋žซํผ.

๐Ÿ“š ๋ฐฐ๊ฒฝ

  • ์ฝ”๋กœ๋‚˜ ์ดํ›„ ์ฆ๊ฐ€ํ•˜๋Š” ํ™ˆ๊ฐ€๋“œ๋‹
    • ์ฝ”๋กœ๋‚˜19 ํŒฌ๋ฐ๋ฏน์€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ง‘์—์„œ ๋ณด๋‚ด๋Š” ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๋ฉด์„œ ํ™ˆ ๊ฐ€๋“œ๋‹์˜ ์ธ๊ธฐ๋ฅผ ๋†’์˜€์Šต๋‹ˆ๋‹ค. ์‹๋ฌผ์€ ์‹ฌ๋ฆฌ์  ์•ˆ์ •๊ณผ ์น˜์œ  ํšจ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ํ—ˆ๋ธŒ์™€ ๋‹ค์œก์‹๋ฌผ ๋“ฑ์˜ ์ˆ˜์š”๊ฐ€ ๊ธ‰์ฆํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ์„œ๋กœ์˜ ๊ฒฝํ—˜๊ณผ ์ •๋ณด๋ฅผ ๋‚˜๋ˆ„๋ฉฐ, ํ™ˆ ๊ฐ€๋“œ๋‹์„ ์ฆ๊ธฐ๋Š” ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

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

๐ŸŽฏ ์ฃผ์ œ

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

์™€์ด์–ดํ”„๋ ˆ์ž„


ERD


 

GitHub SSak Tium ์กฐ์ง ์ƒ์„ฑ ๋ฐ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ƒ์„ฑ https://github.com/SSak-Tium

( Fork by User setting Repository https://github.com/DaegyuHan/spring-user-setting )


๐ŸŒฑ ์˜ค์ „ ํšŒ์˜ ๋ฐ ํ”ผ๋“œ๋ฐฑ

๋”๋ณด๊ธฐ
์ผ๋‹จ ๊ธฐํš์„œ ๋จผ์ € ์ œ๋Œ€๋กœ ์ž‘์„ฑ(์„œ๋น„์Šค ์ด๋ฆ„, ์ œ๊ณตํ•˜๊ณ ์žํ•˜๋Š” ๊ธฐ๋Šฅ)
  1. CRUD ํ•˜๋‚˜์”ฉ(entity) ๋งก์•„์„œ ํ•˜๊ณ  ๊ทธ ์ดํ›„ ๋”ฅํ•˜๊ฒŒ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ๊ฑด์ง€ (๊ฒฐ๋ก ์€ ์„œ๋ฒ„๋ฅผ ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์œผ๋กœ DB์— ์ ‘๊ทผํ•˜๊ณ  ์šด์˜ํ• ์ง€)
  2. ๋„ˆ๋ฌด ์„œ๋น„์Šค ๊ด€์ ์œผ๋กœ๋งŒ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Œ.(ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„ํ• ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์œ„์น˜๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ๋“ฑ์€ ํ•„์š”์—†์„ ๊ฑฐ๊ฐ™์Œ)
  3. ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ์„ธ๋ถ€์ ์œผ๋กœ ์ชผ๊ฐค ๊ฒƒ.
  4. 1์ฃผ์ฐจ ์™„๋ฃŒ๋  ๊ธฐ๋Šฅ, 2์ฃผ์ฐจ ์™„๋ฃŒ๋  ๊ธฐ๋Šฅ์„ ์ชผ๊ฐœ์–ด ๋ณผ ๊ฒƒ. (3์ฃผ์ฐจ, 4์ฃผ์ฐจ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€)
  5. ์ด๋ ฅ์„œ, ํฌํŠธํด๋ฆฌ์˜ค ์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„ˆ๋ฌด ์„œ๋น„์Šค ์œ„์ฃผ๋กœ ์ƒ๊ฐํ•˜์ง€ ๋ง ๊ฒƒ. (๊ฐœ๋ฐœ์ž๊ฐ€ ์†”๊นƒํ•  ๊ธฐ์ˆ  ์œ„์ฃผ๋กœ)
  6. ํ•ต์‹ฌ๊ธฐ๋Šฅ์—์„œ๋Š” ์ด ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ํฌํด, ๋ฉด์ ‘์—์„œ ์–ดํ•„์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์€์ง€ ์ƒ๊ฐ์„ ํ•ด๋ณด๊ณ  ์ž‘์„ฑํ•  ๊ฒƒ.
  7. ์–ด๋ ค์›€, ํšจ๊ณผ ๋“ฑ -> ์–ดํ•„์ด ๋ ๋งŒํ•œ ์‚ฌํ•ญ์œผ๋กœ ๊ณ ๋ ค.
  8. ๋ณธ์ธ์˜ ์ฝ”๋“œ์˜ ํ€„๋ฆฌํ‹ฐ๋ฅผ ์–ด๋””๊นŒ์ง€ ์˜ฌ๋ฆด์ง€๋„ ๊ณ ๋ฏผ์„ ํ•ด์•ผํ•จ.
  9. ํ•„์ˆ˜๊ธฐ๋Šฅ์—์„œ ์ดํ›„๋กœ ํ•ต์‹ฌ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋Š” ๋Š๋‚Œ(์• ์ž์ผ ๋ฐฉ์‹ ๋ง›๋ณด๊ธฐ) -> ์ด ๋•Œ, ๊ธฐ์กด์˜ ์„ค๊ณ„๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ๋œ๋‹ค๋ฉด ๊ทธ ํ๋ฆ„์„ ์ž˜ ๊ธฐ๋กํ•ด๋‘˜ ๊ฒƒ.
์œ ์ €๊ด€๋ จ - OpenConnectAPI
๊ฒŒ์‹œ๊ธ€ - ๋‰ด์Šคํ”ผ๋“œ ๋””์ž์ธ
๊ฒ€์ƒ‰ - ๋งŽ์ด ๊ฒ€์ƒ‰ํ•œ ๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ&์ถ”์ฒœ

๐ŸŒฑ ์˜คํ›„ ํšŒ์˜ ๋ฐ ํ”ผ๋“œ๋ฐฑ

๋”๋ณด๊ธฐ

๊ฐ์ž ๋„๋ฉ”์ธ ๋ณ„๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋‚˜๋ˆ„๋ฉด ์ข‹์Œ
ํ•ด์‹œํƒœํฌ๊ฐ€ MySQL๋กœ๋งŒ ๊ฐ„๋‹จํžˆ ํ•ด๋„ ๋  ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์„ ํ•  ๊ฑด์ง€ ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•ด๋ณผ ๊ฒƒ.
ํ†ต๊ณ„ ๊ตฌํ˜„ ์‹œ ๋ ˆ๋””์Šค๋ฅผ ์‚ฌ์šฉ ์‹œ ๋งŽ์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹์Œ.
์†Œ์…œ๋กœ๊ทธ์ธ(๋‹ค์–‘ํ•œ ์†Œ์…œ๋กœ๊ทธ์ธ, ์•„์ด๋””ํ†ตํ•ฉ)
JWT ํ• ๋•Œ๋Š” ์•ก์„ธ์Šคํ† ํฐ๊ณผ ๋ฆฌํ”„๋ ˆ์‰ฌํ† ํฐ์„ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์˜๋ฏธ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•จ
์•Œ๋ฆผ๊ธฐ๋Šฅ๋„ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Œ.
๋ฉ€ํ‹ฐํŒฉํ„ฐ ๋กœ๊ทธ์ธ(OTP๋“ฑ์˜ 2์ฐจ์ธ์ฆ)


๐ŸŒฑ ์„œ๋น„์Šค ๊ธฐ๋Šฅ ์•„์ด๋””์–ด ํšŒ์˜ ๋ฐ ์šฐ์„ ๋„ ์„ ์ • ( 1์ฐจ ํšŒ์˜ )

์ตœ์ข…ํ”„๋กœ์ ํŠธ ๊ธฐ๋ŠฅList - Google Sheets

 

๐ŸŒฑ ์˜ค์ „ ํ”ผ๋“œ๋ฐฑ ์ˆ˜์šฉ ํ›„ ํ•„์ˆ˜๊ธฐ๋Šฅ ๋ฐ ํ•ต์‹ฌ๊ธฐ๋Šฅ ๊ฐ„์†Œํ™” ์ž‘์—…. ( ์ถ”ํ›„ ์ˆ˜์ • )

๋”๋ณด๊ธฐ
  • ํ•„์ˆ˜ ๊ธฐ๋Šฅ
    • ์‚ฌ์šฉ์ž
      • ํšŒ์›๊ฐ€์ž…
      • ๋กœ๊ทธ์ธ
      • ํšŒ์›ํƒˆํ‡ด
      • ๋งˆ์ด ํŽ˜์ด์ง€
        • ํ”„๋กœํ•„ ์‚ฌ์ง„ ๋“ฑ๋ก ๋ฐ ์ˆ˜์ •
        • ์นœ๊ตฌ ๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ (์นœ๊ตฌ ์š”์ฒญ, ์ˆ˜๋ฝ, ์‚ญ์ œ)
        • ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ
        • ์œ ์ € ์ •๋ณด ์ˆ˜์ •(๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ ๋“ฑ)
    • SNS ๊ธฐ๋Šฅ : ๋‚ด๊ฐ€ ํ‚ค์šฐ๋Š” ์‹๋ฌผ ์ž๋ž‘ํ•˜๊ณ  ์งˆ๋ฌธํ•˜๊ธฐ
      • ์‹๋ฌผ์‚ฌ์ง„๋“ฑ๋ก
      • ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ
      • ๋Œ“๊ธ€ ์ž‘์„ฑ, ์‚ญ์ œ
      • ์ข‹์•„์š”
    • ์‹๋ฌผ ์ •๋ณด ์ œ๊ณต ๊ฒŒ์‹œํŒ (์šด์˜์ž ์ „์šฉ)
      • ์‹๋ฌผ ์‚ฌ์ง„ ๋“ฑ๋ก
      • ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ๋ฐ ์‚ญ์ œ
      • ์‹๋ฌผ ์ •๋ณด ๊ฒ€์ƒ‰
  • ํ•ต์‹ฌ ๊ธฐ๋Šฅ
    • ๊ฒ€์ƒ‰๊ธฐ๋Šฅ
      • ๊ฒŒ์‹œ๊ธ€ ๋ฐ ์ •๋ณด๊ธ€ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰
      • ํ•ด์‹œํƒœ๊ทธ ๋ถ€์—ฌ ๋ฐ ๋‹ค์–‘ํ•œ ๊ฒ€์ƒ‰ํ™˜๊ฒฝ ์ œ๊ณต
      • ๊ฒ€์ƒ‰์„ฑ๋Šฅ ์ตœ์ ํ™”
    • ํ†ต๊ณ„๊ธฐ๋Šฅ
      • ์กฐํšŒ ์ˆ˜ ๋ฐ ๋Œ“๊ธ€ ์ˆ˜ ๊ธฐ๋ฐ˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๊ธ€ ์ˆœ์œ„
      • ์ธ๊ธฐ ์‹๋ฌผ ๋ฐ ๊ฒ€์ƒ‰์–ด ๋ฐ์ดํ„ฐ ๋ถ„์„
      • ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ์ถ”์ฒœ
    • ์†Œ์…œ ๋กœ๊ทธ์ธ (์นด์นด์˜ค ๋กœ๊ทธ์ธ)
      • OAuth 2.0์„ ์ด์šฉํ•œ ์•ˆ์ „ํ•œ ์†Œ์…œ ๋กœ๊ทธ์ธ
      • ์ƒ์„ธ ํšŒ์› ์ •๋ณด ๊ธฐ์ž… ํŽ˜์ด์ง€ ์œ ๋„
    • ์•Œ๋ฆผ ๊ธฐ๋Šฅ
      • ์นœ๊ตฌ ์š”์ฒญ ๋ฐ ํ™œ๋™ ์•Œ๋ฆผ
      • ์•Œ๋ฆผ ์„ค์ • ๊ธฐ๋Šฅ
      • ์ฃผ์š” ์ด๋ฒคํŠธ ์•Œ๋ฆผ