Requirements - takeoff-26/logistics-service GitHub Wiki

MSA ๊ธฐ๋ฐ˜ ๊ตญ๋‚ด ๋ฌผ๋ฅ˜ ๊ด€๋ฆฌ ๋ฐ ๋ฐฐ์†ก ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

๋„๋ฉ”์ธ ์š”๊ตฌ์‚ฌํ•ญ

๊ณตํ†ต

  • ๊ฐ ๋„๋ฉ”์ธ์˜ CRUD, search ์ž‘์—… ํ•„์š” ๋ช‡๋ช‡ ๋„๋ฉ”์ธ ์ œ์™ธ
  • ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„(DDD)

ํ—ˆ๋ธŒ ๊ด€๋ฆฌ

  • ํ—ˆ๋ธŒ ์ •๋ณด ์บ์‹ฑ
  • 17 ๊ณณ์˜ ํ—ˆ๋ธŒ ๊ณ ์ •์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ

ํ—ˆ๋ธŒ๊ฐ„ ์ด๋™์ •๋ณด ๊ด€๋ฆฌ

  • ํ—ˆ๋ธŒ ๊ฒฝ๋กœ ์œ„,๊ฒฝ๋„ ๊ณ„์‚ฐ
  • ์ด๋™๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค์ • ๋ฐ ๊ตฌํ˜„ (๋‚œ์ด๋„: ์ค‘ ์„ ํƒ) (P2P + Hub to Hub Relay)
  • ํ—ˆ๋ธŒ ๊ฐ„ ์ด๋™ ๊ฒฝ๋กœ ์บ์‹ฑ

๋ฐฐ์†ก ๋‹ด๋‹น์ž ๊ด€๋ฆฌ

  • ๋ฐฐ์†ก ๋‹ด๋‹น์ž ๋ฐฐ์†ก ์ˆœ๋ฒˆ ์ˆœ์ฐจ์  ๋ฐฐ์ •
  • ๋ฐฐ์†ก ๋‹ด๋‹น์ž ํƒ€์ž…์— ๋”ฐ๋ผ ์—…์ฒด ๋ฐฐ์†ก, ํ—ˆ๋ธŒ ๋ฐฐ์†ก ๋ถ„๋ฆฌ

์—…์ฒด ๊ด€๋ฆฌ

  • ์—…์ฒด ์ถ”๊ฐ€์‹œ ๊ด€๋ฆฌ ํ—ˆ๋ธŒ ID๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ

์ƒํ’ˆ ๊ด€๋ฆฌ

  • ์ƒํ’ˆ ์ƒ์„ฑ์‹œ ์—…์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ, ์ƒํ’ˆ๊ด€๋ฆฌ ํ—ˆ๋ธŒ ID๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ

์ฃผ๋ฌธ ๊ด€๋ฆฌ

  • ์ฃผ๋ฌธ ์ƒ์„ฑ์‹œ ๋ฐฐ์†ก๋„ ๊ฐ™์ด ์ƒ์„ฑ

๋ฐฐ์†ก ๊ด€๋ฆฌ

  • ๋ฐฐ์†ก๊ณผ ๋ฐฐ์†ก ๊ฒฝ๋กœ ๊ธฐ๋ก ์—”ํ‹ฐํ‹ฐ ๋ถ„๋ฆฌ ์ƒ์„ฑ
  • ๋ฐฐ์†ก๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•œ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ 
  • ์ฃผ๋ฌธ ์ƒ์„ฑ์‹œ ๋ฐฐ์†ก๊ณผ ๋ฐฐ์†ก ๊ฒฝ๋กœ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ ๊ฐ™์ด ์ƒ์„ฑ

์Šฌ๋ž™ ๋ฉ”์‹œ์ง€ ๊ด€๋ฆฌ

  • AI๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€ ๋ฐœ์†ก ๊ธฐ๋Šฅ ๊ตฌํ˜„

์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

  • ๊ถŒํ•œ ๋ถ„๋ฆฌ
  • ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ

AI ์—ฐ๋™ ๊ธฐ๋Šฅ

  • ๋ฐœ์†ก ํ—ˆ๋ธŒ ๋‹ด๋‹น์ž์—๊ฒŒ ๋ฐฐ์†ก ์˜ˆ์ƒ ์‹œ๊ฐ„ ์•Œ๋ฆผ ์ฒ˜๋ฆฌ

๊ธ€๋กœ๋ฒŒ ์š”๊ตฌ์‚ฌํ•ญ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

  • Layered Architecture
  • Entity ๋ฐ DTO: ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ Entity์™€ DTO(Data Transfer Object)๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ด€๋ฆฌ
  • API ์„ค๊ณ„: RESTful API ์›์น™์— ๋”ฐ๋ผ ์„ค๊ณ„
  • Exception Handling: ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (ExceptionHandler ์‚ฌ์šฉ)

๋ฐ์ดํ„ฐ ๋ณด์กด ๋ฐ ์‚ญ์ œ ์ฒ˜๋ฆฌ

  • ๋ฐ์ดํ„ฐ ๋ณด์กด: ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์™„์ „ ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ  ์ˆจ๊น€ ์ฒ˜๋ฆฌ๋กœ ๊ด€๋ฆฌ
  • ๋ฐ์ดํ„ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ: ๋ชจ๋“  ์ •๋ณด์— ์ƒ์„ฑ์ผ, ์ƒ์„ฑ ์•„์ด๋””, ์ˆ˜์ •์ผ, ์ˆ˜์ • ์•„์ด๋””, ์‚ญ์ œ์ผ, ์‚ญ์ œ ์•„์ด๋””๋ฅผ ํฌํ•จ

MSA ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์„ฑ

  • ์œ ๋ ˆ์นด ์„œ๋ฒ„ ์ƒ์„ฑ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ
  • ๊ฒŒ์ดํŠธ์›จ์ด ์ƒ์„ฑ ๋ฐ ๋ผ์šฐํŒ…
  • ๊ฒŒ์ดํŠธ์›จ์ด์—์„œ ์ธ๊ฐ€
  • ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ์ ์šฉ
  • ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„

  • ํ…Œ์ด๋ธ” ๋ช…๋ช… ๊ทœ์น™: ๋ชจ๋“  ํ…Œ์ด๋ธ”์— p_ ์ ‘๋‘์‚ฌ ์‚ฌ์šฉ
  • UUID ์‚ฌ์šฉ: ๋ชจ๋“  ์ฃผ์š” ์—”ํ‹ฐํ‹ฐ์˜ ์‹๋ณ„์ž๋Š” UUID๋ฅผ ์‚ฌ์šฉ (์œ ์ €๋Š” ์˜ˆ์™ธ)
  • Audit ํ•„๋“œ: ๋ชจ๋“  ํ…Œ์ด๋ธ”์— created_at, created_by, updated_at, updated_by, deleted_at, deleted_by ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ ๊ธฐ๋ก

์ ‘๊ทผ ๊ถŒํ•œ ๊ด€๋ฆฌ

  • ๊ฐ ๋ฐ”์šด๋”๋ฆฌ ์ปจํ…์ŠคํŠธ๋ณ„ ๊ถŒํ•œ ๊ฒ€์‚ฌ

๋ณด์•ˆ

  • JWT ์ธ์ฆ: Spring Security์™€ JWT(Json Web Token)๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ
  • ๊ถŒํ•œ ํ™•์ธ : CUSTOMER ์ด์ƒ์˜ ๊ถŒํ•œ์€ ์š”์ฒญ๋งˆ๋‹ค ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ถŒํ•œ ๊ฐ’๊ณผ ๋™์ผํ•œ์ง€ ์ฒดํฌํ•„์š”
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”: BCrypt ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
  • ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ: ์„œ๋ฒ„ ์ธก ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•ด Spring Validator ์‚ฌ์šฉ

ํ…Œ์ŠคํŠธ

  • ํ…Œ์ŠคํŠธ: ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ํ˜น์€ ํˆด์„ ์ด์šฉํ•˜์—ฌ endpoint์—์„œ ์ „์ฒด API๋ฅผ ์ปค๋ฒ„ํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™”