Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

38 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

create-schedule

๋ชฉ์ฐจ

1. ํ•„์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ

2. Use Case Diagram

3. API ๋ช…์„ธ์„œ

3. ERD

์ž…๋ฌธ ์ฃผ์ฐจ

1. ํ•„์ˆ˜ ์š”๊ตฌ ์‚ฌํ•ญ

๊ณตํ†ต ์กฐ๊ฑด

  1. ์ผ์ • ์ž‘์„ฑ,์ˆ˜์ •,์กฐํšŒ ์‹œ ๋ฐ˜ํ™˜ ๋ฐ›์€ ์ผ์ • ์ •๋ณด์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ œ์™ธ ๋˜์–ด์•ผ ํ•œ๋‹ค.
  2. ์ผ์ • ์ˆ˜์ •, ์‚ญ์ œ ์‹œ ์„ ํƒํ•œ ์ผ์ •์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ์š”์ฒญํ•  ๋•Œ ํ•จ๊ป˜ ๋ณด๋‚ธ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•  ๊ฒฝ์šฐ์—๋งŒ ๊ฐ€๋Šฅ

1๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์ผ์ • ์ž‘์„ฑ

  • ํ• ์ผ ์ œ๋ชฉ, ํ• ์ผ ๋‚ด์šฉ, ๋‹ด๋‹น์ž, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ž‘์„ฑ์ผ ์„ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ €์žฅ๋œ ์ผ์ • ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ ๋ฐ›์•„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

2๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์„ ํƒํ•œ ์ผ์ • ์กฐํšŒ

  • ์„ ํƒํ•œ ์ผ์ •์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

3๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์ผ์ • ๋ชฉ๋ก ์กฐํšŒ

  • ๋“ฑ๋ก๋œ ์ผ์ • ์ „์ฒด๋ฅผ ์กฐํšŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์กฐํšŒ๋œ ์ผ์ • ๋ชฉ๋ก์€ ์ž‘์„ฑ์ผ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ๋˜์–ด์žˆ๋‹ค.

4๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์„ ํƒํ•œ ์ผ์ • ์ˆ˜์ •

  • ์„ ํƒํ•œ ์ผ์ •์˜ ํ• ์ผ ์ œ๋ชฉ, ํ• ์ผ ๋‚ด์šฉ, ๋‹ด๋‹น์ž๋ฅผ ์ˆ˜์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ค.
    • ์„œ๋ฒ„์— ์ผ์ • ์ˆ˜์ •์„ ์š”์ฒญํ•  ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌ๋œ๋‹ค.
  • ์ˆ˜์ •๋œ ์ผ์ •์˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ ๋ฐ›์•„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

5๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์„ ํƒํ•œ ์ผ์ • ์‚ญ์ œ

  • ์„ ํƒํ•œ ์ผ์ •์„ ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์„œ๋ฒ„์— ์ผ์ • ์‚ญ์ œ๋ฅผ ์š”์ฒญํ•  ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌํ•œ๋‹ค.

์ถ”๊ฐ€ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

6๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์˜ˆ์™ธ ๋ฐœ์ƒ ์ฒ˜๋ฆฌ

  • ์ˆ˜์ •, ์‚ญ์ œ ์‹œ ์š”์ฒญํ•  ๋•Œ ๋ณด๋‚ด๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ
  • ์„ ํƒํ•œ ์ผ์ • ์ •๋ณด๊ฐ€ ์ด๋ฏธ ์‚ญ์ œ๋˜์–ด ์กฐํšŒํ•  ์ˆ˜ ์—†์„ ๋•Œ
  • ์‚ญ์ œํ•˜๋ ค๋Š” ์ผ์ • ์ •๋ณด๊ฐ€ ์ด๋ฏธ ์‚ญ์ œ ์ƒํƒœ์ผ ๋•Œ

7๋‹จ๊ณ„ ๊ธฐ๋Šฅ : Swagger ํ™œ์šฉ & ํŒŒ๋ผ๋ฏธํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, null ์ฒดํฌ ๋ฐ ํŠน์ • ํŒจํ„ด์— ๋Œ€ํ•œ ๊ฒ€์ฆ ์ˆ˜ํ–‰

  • Swagger
    • wagger UI๋ฅผ ํ†ตํ•ด API ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Swagger UI๋ฅผ ํ†ตํ•ด API ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ํ• ์ผ ์ œ๋ชฉ์€ ์ตœ๋Œ€ 200์ž ์ด๋‚ด๋กœ ์ œํ•œ, ํ•„์ˆ˜๊ฐ’ ์ฒ˜๋ฆฌ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ํ•„์ˆ˜๊ฐ’ ์ฒ˜๋ฆฌ
    • ๋‹ด๋‹น์ž๋Š” ์ด๋ฉ”์ผ ํ˜•์‹์„ ๊ฐ–๋„๋ก ์ฒ˜๋ฆฌ

8๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ํŒŒ์ผ ์—…๋กœ๋“œ & ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž๋Š” ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์€ ๊ฐœ์ธ PC์— ์ €์žฅํ•œ๋‹ค.
    • ํŠน์ • ํŒŒ์ผ ํ˜•์‹๋งŒ์„ ์—…๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • JPG, PNG, JPEG ๋“ฑ ์ด๋ฏธ์ง€

9๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

  • ์ฃผ์–ด์ง„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ JUnit๊ณผ Mockito๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ
    • ์ด๋ฅผ ํ†ตํ•ด ๊ฐ ๊ธฐ๋Šฅ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆ
  • ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด Jacoco๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ๋Œ€์ƒ ์ฝ”๋“œ๋ฅผ 80% ์ด์ƒ ์ปค๋ฒ„ํ•˜๋„๋ก ๋ชฉํ‘œ๋ฅผ ์„ค์ •
  • ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ณ  ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.

์ˆ™๋ จ ์ฃผ์ฐจ

1๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์ผ์ •๊ณผ ๋Œ“๊ธ€์˜ ์—ฐ๊ด€ ๊ด€๊ณ„

  • ์ง€๋‚œ ๊ณผ์ œ์—์„œ ๋งŒ๋“  ์ผ์ •์— ๋Œ“๊ธ€์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ERD ์—๋„ ๋Œ“๊ธ€ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ์ผ์ •์— ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ จ ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งคํ•‘ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. (1:1 or N:1 or N:M)

2๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ๋Œ“๊ธ€ ๋“ฑ๋ก

  • ์„ ํƒํ•œ ์ผ์ •์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ“๊ธ€์ด ๋“ฑ๋ก๋˜์—ˆ๋‹ค๋ฉด client์—๊ฒŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์„ ํƒํ•œ ์ผ์ •์ด DB์— ์ €์žฅ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ“๊ธ€์„ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ ๋ฒˆํ˜ธ, ๋Œ“๊ธ€ ๋‚ด์šฉ, ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•œ ์‚ฌ์šฉ์ž ์•„์ด๋””, ๋Œ“๊ธ€์ด ์ž‘์„ฑ๋œ ์ผ์ • ์•„์ด๋””, ์ž‘์„ฑ์ผ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โš ๏ธย ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ์„ ํƒํ•œ ์ผ์ •์˜ ID๋ฅผ ์ž…๋ ฅ ๋ฐ›์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • ๋Œ“๊ธ€ ๋‚ด์šฉ์ด ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ
  • ์ผ์ •์ด DB์— ์ €์žฅ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

3๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ๋Œ“๊ธ€ ์ˆ˜์ •

  • ์„ ํƒํ•œ ์ผ์ •์˜ ๋Œ“๊ธ€์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ“๊ธ€์ด ์ˆ˜์ •๋˜์—ˆ๋‹ค๋ฉด ์ˆ˜์ •๋œ ๋Œ“๊ธ€์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
    • ๋Œ“๊ธ€ ๋‚ด์šฉ๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    • ์„ ํƒํ•œ ์ผ์ •๊ณผ ๋Œ“๊ธ€์ด DB์— ์ €์žฅ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธย ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ์„ ํƒํ•œ ์ผ์ •์˜ ID๋ฅผ ์ž…๋ ฅ ๋ฐ›์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • ์ผ์ •์ด๋‚˜ ๋Œ“๊ธ€์ด DB์— ์ €์žฅ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • ์„ ํƒํ•œ ๋Œ“๊ธ€์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉ์ž์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

4๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ๋Œ“๊ธ€ ์‚ญ์ œ

  • ์„ ํƒํ•œ ์ผ์ •์˜ ๋Œ“๊ธ€์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    • ์„ฑ๊ณตํ–ˆ๋‹ค๋Š” ๋ฉ”์‹œ์ง€์™€ ์ƒํƒœ ์ฝ”๋“œ ๋ฐ˜ํ™˜ํ•˜๊ธฐ
    • ์„ ํƒํ•œ ์ผ์ •๊ณผ ๋Œ“๊ธ€์ด DB์— ์ €์žฅ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธย ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ์„ ํƒํ•œ ์ผ์ •์˜ ID๋ฅผ ์ž…๋ ฅ ๋ฐ›์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • ์ผ์ •์ด๋‚˜ ๋Œ“๊ธ€์ด DB์— ์ €์žฅ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
  • ์„ ํƒํ•œ ๋Œ“๊ธ€์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ์‚ฌ์šฉ์ž์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

5 - 7 ๋‹จ๊ณ„ ๊ณตํ†ต ์กฐ๊ฑด

  1. ์ž…๋ฌธ์ฃผ์ฐจ ๊ฐœ์ธ ๊ณผ์ œ ์ผ์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋‚˜์˜จ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ Validation ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. 2-4 ๋‹จ๊ณ„์—์„œ ๊ตฌํ˜„ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ Validation ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ ํ›„ 3, 4๋‹จ๊ณ„์—์„œ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์— ์•„๋ž˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋Œ“๊ธ€๋งŒ ์‚ญ์ œ, ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5๋‹จ๊ณ„ ๊ธฐ๋Šฅ : JWT

  • JWT๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.
  • ์œ„ 1~4 ๋‹จ๊ณ„์—์„œ ์ธ์ฆ/์ธ๊ฐ€๊ฐ€ ์™„๋ฃŒ๋œ ํ›„์—๋งŒ ๊ธฐ๋Šฅ์ด ๋™์ž‘ํ•˜๋„๋ก ์ˆ˜์ •ํ•œ๋‹ค.
    • Access Token ๋งŒ๋ฃŒ์‹œ๊ฐ„ 60๋ถ„
    • Refresh Token ๊ตฌํ˜„์€ 8๋‹จ๊ณ„์ด๋ฏ€๋กœ ์ด๋ฒˆ์—๋Š” ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

โš ๏ธย ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ๊ณตํ†ต์กฐ๊ฑด
    • StatusCode : 400
    • client์— ๋ฐ˜ํ™˜
  • ํ† ํฐ์ด ํ•„์š”ํ•œ API ์š”์ฒญ์—์„œ ํ† ํฐ์„ ์ „๋‹ฌํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ •์ƒ ํ† ํฐ์ด ์•„๋‹ ๋•Œ
    • ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ : ํ† ํฐ์ด ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํ† ํฐ์ด ์žˆ๊ณ , ์œ ํšจํ•œ ํ† ํฐ์ด์ง€๋งŒ ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€/๋Œ“๊ธ€์ด ์•„๋‹ ๋•Œ
    • ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ : ์ž‘์„ฑ์ž๋งŒ ์‚ญ์ œ/์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • DB์— ์ด๋ฏธ ์กด์žฌํ•˜๋Š” username์œผ๋กœ ํšŒ์›๊ฐ€์ž…์„ ์š”์ฒญํ•  ๋•Œ
    • ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ : ์ค‘๋ณต๋œ username ์ž…๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์ธ ์‹œ, ์ „๋‹ฌ๋œ username๊ณผ password ์ค‘ ๋งž์ง€ ์•Š๋Š” ์ •๋ณด๊ฐ€ ์žˆ์„ ๋•Œ
    • ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ : ํšŒ์›์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

6๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ํšŒ์›๊ฐ€์ž…

  • ์ˆ˜์ •, ์‚ญ์ œ ์‹œ ์š”์ฒญํ•  ๋•Œ ๋ณด๋‚ด๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ
  • ์„ ํƒํ•œ ์ผ์ • ์ •๋ณด๊ฐ€ ์ด๋ฏธ ์‚ญ์ œ๋˜์–ด ์กฐํšŒํ•  ์ˆ˜ ์—†์„ ๋•Œ
  • ์‚ญ์ œํ•˜๋ ค๋Š” ์ผ์ • ์ •๋ณด๊ฐ€ ์ด๋ฏธ ์‚ญ์ œ ์ƒํƒœ์ผ ๋•Œ

7๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ๋กœ๊ทธ์ธ

  • Swagger
    • wagger UI๋ฅผ ํ†ตํ•ด API ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Swagger UI๋ฅผ ํ†ตํ•ด API ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    • ํ• ์ผ ์ œ๋ชฉ์€ ์ตœ๋Œ€ 200์ž ์ด๋‚ด๋กœ ์ œํ•œ, ํ•„์ˆ˜๊ฐ’ ์ฒ˜๋ฆฌ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ํ•„์ˆ˜๊ฐ’ ์ฒ˜๋ฆฌ
    • ๋‹ด๋‹น์ž๋Š” ์ด๋ฉ”์ผ ํ˜•์‹์„ ๊ฐ–๋„๋ก ์ฒ˜๋ฆฌ

์ถ”๊ฐ€ ๊ตฌํ˜„ ๊ธฐ๋Šฅ

8๋‹จ๊ณ„ ๊ธฐ๋Šฅ : Refresh Token

  • 5๋‹จ๊ณ„์—์„œ ๊ตฌํ˜„ํ•œ JWT๋ฅผ Refresh Token์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ
  • ์„ธ์…˜ ๊ด€๋ฆฌ
    • ์ž์ฃผ ๋กœ๊ทธ์ธ์„ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊ธด ์œ ํšจ ๊ธฐ๊ฐ„์„ ๊ฐ€์ง„ Refresh Token์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ์— ์ง€์†์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ
    • ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ JWT๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„๋Š” ์„ธ์…˜์„ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ์ž์›์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

9๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์ผ์ •๊ณผ ๋Œ“๊ธ€ ์ˆ˜์ •

  • ๋กœ๊ทธ์ธ ํ•œ ์‚ฌ์šฉ์ž์— ํ•œํ•˜์—ฌ ์ผ์ •๊ณผ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ๋งŒ๋ฃŒ๋˜์ง€ ์•Š์€ ์œ ํšจ ํ† ํฐโ€™์ธ ๊ฒฝ์šฐ์—๋งŒ ์ผ์ •๊ณผ ๋Œ“๊ธ€ โ€˜์ƒ์„ฑโ€™์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ€๊ฒฝ
  • ์กฐํšŒ๋Š” ๋ˆ„๊ตฌ๋‚˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
  • ๋ณด์•ˆ
    • ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ํ†ตํ•ด ์ ‘๊ทผ์„ ์ œ์–ดํ•˜์—ฌ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ์ธ ๋กœ๊ทธ๋ฅผ ์ ์žฌํ•˜๊ณ  ๋ถ„์„ํ•˜๋ฉด ๋ชจ๋‹ˆํ„ฐ๋ง๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๊ฒฝํ—˜
    • ๋กœ๊ทธ์ธ์„ ํ†ตํ•ด ๊ฐœ์ธ์„ ์‹๋ณ„ํ•˜๊ณ  ๊ฐœ์ธ์— ๋งž์ถ˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž ์ถ”์ ์„ ํ†ตํ•ด ๋งž์ถค ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์ธ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • ์œ ํšจํ•œ ํ† ํฐ์ธ ๊ฒฝ์šฐ์—๋งŒ ์ผ์ •๊ณผ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ์ •์„ ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž์™€ ๋™์ผํ•œ username์ด๋ฉด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•œ ์‚ฌ์šฉ์ž์™€ ๋™์ผํ•œ username์ด๋ฉด ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

10๋‹จ๊ณ„ ๊ธฐ๋Šฅ: ํŒŒ์ผ ์ฒจ๋ถ€ ๊ธฐ๋Šฅ with DB

  • ํŒŒ์ผ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
  • ์ผ์ •์— ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ
  • ์ผ์ •๊ณผ ํŒŒ์ผ ํ…Œ์ด๋ธ” ๊ฐ„ ์—ฐ๊ฐ„๊ด€๊ณ„ ํ˜•์„ฑ
    • 1:1 ๋งคํ•‘
    • ERD์—๋„ ํŒŒ์ผ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

img_4.png

  • ์ผ์ •์„ ์ƒ์„ฑํ•  ๋•Œ ํŒŒ์ผ์„ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ผ์ •์„ ์ˆ˜์ •ํ•  ๋•Œ ํŒŒ์ผ์„ ์ฒจ๋ถ€๋œ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

โš ๏ธย ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ์ผ์ •์„ ์‚ญ์ œํ•  ๋•Œ ํŒŒ์ผ๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋œ๋‹ค.
  • ํŒŒ์ผ ํ˜•์‹์€ png, jpg๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์šฉ๋Ÿ‰์€ ์ตœ๋Œ€ 5MB๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

11๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ๋กœ๊น…

๊ธฐ๋Šฅ

  • ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋กœ๊ทธ ํŒŒ์ผ์— ์ ์žฌ๊ฐ€ ๋˜๊ณ  ํ•ด๋‹น ๋กœ๊ทธ ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋””๋ฒ„๊น…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋กœ๊ทธ ๊ธฐ๋ก ํ•ญ๋ชฉ ๋ฐ์ดํ„ฐ ํ˜•์‹ (์˜ˆ์‹œ)
    ์‹œ๊ฐ„ 2024-05-14 15:37:21
    ๋กœ๊ทธ ๋ ˆ๋ฒจ TRACE, DEBUG, INFO, WARN, ERROR (5๊ฐœ ์ค‘ 1๊ฐœ)
    ์Šค๋ ˆ๋“œ ๋ช… http-nio-8080-exec-10
    ํด๋ž˜์Šค ๋ช… com.example.myapp.service.SpartaService
    ๋กœ๊ทธ ๋ฉ”์„ธ์ง€ User validation failed: userId=12345 reason=Email not verified

์˜ˆ์‹œ ๋ฐ์ดํ„ฐ

2024-05-14 15:37:21 ERROR [http-nio-8080-exec-10] com.example.myapp.service.SpartaService - User validation failed: userId=12345 reason=Email not verified

์„ค๋ช…

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

์กฐ๊ฑด

  • ๋กœ๊ทธ ๋ ˆ๋ฒจ ERROR ์ˆ˜์ค€์œผ๋กœ .log ํ™•์žฅ์ž๋กœ ์ถ”์ถœ

12๋‹จ๊ณ„ ๊ธฐ๋Šฅ : ์Šคํ”„๋ง AOP

  • ๋ฐ˜๋ณต์ ์ด๊ณ  ๊ณตํ†ต์ ์ธ ์ž‘์—…์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์Šคํ”„๋ง AOP๋ฅผ ์‚ฌ์šฉํ•ด๋ณธ๋‹ค. ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ์ธํ•ด ํ™•์žฅ์„ฑ ๋ฉด์—์„œ ์ด์ ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ†’ ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ

์„ค๋ช…

  • ๋กœ๊ทธ์ธ์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์ธ ๊ณผ์ • ์ „๋ฐ˜์„ ์ด๋ ฅ์œผ๋กœ ๋‚จ๊น๋‹ˆ๋‹ค.

์กฐ๊ฑด

  • ์Šคํ”„๋ง AOP๋ฅผ ์ด์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ ์ด๋ ฅ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • 11๋‹จ๊ณ„์—์„œ ๊ตฌํ˜„ํ•œ ๋กœ๊ทธ์—๋„ ๊ธฐ๋ก์ด ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ERD์—๋„ ๋กœ๊ทธ์ธ ์ด๋ ฅ ๋ชจ๋ธ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋กœ๊ทธ์ธ ์ด๋ ฅ ํ…Œ์ด๋ธ” ์ž…๋ ฅ
    • ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰ ์ „ - Before

    • ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์„ฑ๊ณต - AfterReturning

    • ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์‹คํŒจ - AfterThrowing

    • img_5.png


2. Use Case Diagram


3. API ๋ช…์„ธ์„œ


img_2.png

4. ERD

img_3.png

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages