ch0213 / challenge-course-side-1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

๐ŸŽฏ ์ฑŒ๋ฆฐ์ง€ ์ฝ”์Šค ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ

  • ์•„๋ž˜ ์š”๊ตฌ์‚ฌํ•ญ์€ ๋‚ด์šฉ์„ ์ง์ ‘ ๊ธฐ์ž…ํ•˜์…”๋„ ์ข‹๊ณ , ๋งํฌ๋กœ ๊ณต์œ ํ•ด์ฃผ์…”๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ - ์ปจ๋ฒค์…˜

  • ์ฝ”๋“œ์ปจ๋ฒค์…˜ ๋ฌธ์„œ๋ฅผ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”

  • ๊นƒ ๋ธŒ๋žœ์น˜ ์ „๋žต ๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”

์ž‘์—… ๋ฐฉ์‹

  1. ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ issue(Todo)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  2. ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  In Progress๋กœ ์ด๋™ํ•œ๋‹ค.
  3. ์ž‘์—…์„ ๋งˆ์นœ ํ›„ PR์„ ํ•œ๋‹ค.
    • assignee(reviewer)๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ˜์˜ํ•ด์„œ ๊ฐœ์„ ํ•œ๋‹ค.
    • assignee(reviewer) ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ผ ์ƒ๊ฐํ•˜๊ณ  ์…€ํ”„ ๋ฆฌ๋ทฐ๋ฅผ ํ•œ๋‹ค.
  4. Approve๊ฐ€ ๋˜์—ˆ์œผ๋ฉด ์Šค์ฟผ์‹œ ๋จธ์ง€์™€ ํ•จ๊ป˜ issue๋ฅผ ๋‹ซ๋Š”๋‹ค.
  5. ์ดํ›„ ํ•ด๊ฒฐํ•œ ์ด์Šˆ๋ฅผ Done์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

์ฝ”๋“œ ์ปจ๋ฒค์…˜

์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

๊นƒ ๋ธŒ๋žœ์น˜ ์ „๋žต

  • Git-flow ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

API URL

  • Restfulํ•˜๊ฒŒ ์„ค๊ณ„ํ•œ๋‹ค.
    • ์ž์›(Resource)๋Š” URI๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
    • ํ–‰์œ„(Verb)๋Š” HTTP Method๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
  • ์ž์›(Resource)์€ ๋ณต์ˆ˜ํ˜•์œผ๋กœ ํ‘œ์‹œํ•œ๋‹ค.
    • ์˜ˆ์‹œ) /orders
  • ์—ฌ๋Ÿฌ ๋‹จ์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. (Kebab Case)
    • ์˜ˆ์‹œ) /delivery-orders
  • ์ปฌ๋ ‰์…˜์„ ํ•„ํ„ฐ๋ง ํ•  ๊ฒฝ์šฐ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ฝ”๋“œ ์„ค๊ณ„

  • DTO ๊ตฌ์„ฑ

    • XXXRequest, XXXResponse ํ˜•ํƒœ๋กœ ํด๋ž˜์Šค๋ช…์„ ์ž‘์„ฑํ•œ๋‹ค.
  • ํŒจํ‚ค์ง€ ์„ค๊ณ„ ๊ธฐ์ค€

    • ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ ๊ธฐ์ค€์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค. ์ปจํ…์ŠคํŠธ๋ณ„๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.
      • ui
      • application
      • domain
      • infra
      • exception
      • dto
    • Entity, Repository๋Š” domain layer์— ์œ„์น˜ํ•œ๋‹ค.
    • RepositoryImpl, ์™ธ๋ถ€์™€์˜ ํ†ต์‹ ์„ ์œ„ํ•œ Client ๋“ฑ์€ infra layer์— ์œ„์น˜ํ•œ๋‹ค.
    • exception์—๋Š” ๊ฐ ์ปจํ…์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋  ์ปค์Šคํ…€ ์˜ˆ์™ธ๊ฐ€ ์œ„์น˜ํ•œ๋‹ค.
  • ๊ฐ์ฒด ์ฐธ์กฐ

    • ๊ฐ™์€ aggregate๋‚ด์—์„œ๋Š” ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•œ๋‹ค.
    • ๋‹ค๋ฅธ aggregate์˜ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ID๋กœ ๊ฐ„์ ‘ ์ฐธ์กฐํ•œ๋‹ค.
    • ์—ฌ๋Ÿฌ aggregate๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๋กœ์ง์€ ๋„๋ฉ”์ธ ์„œ๋น„์Šค์—์„œ ๊ตฌํ˜„ํ•œ๋‹ค.
    • 1:N ๊ด€๊ณ„์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ƒ 1์—์„œ N์— ์ ‘๊ทผํ•ด์•ผํ•  ๊ฒฝ์šฐ
      • @OneToMany
      • cascade = CascadeType.PERSIST
      • ophanRemoval = true
    • ๊ทธ ์™ธ์—๋Š” @ManyToOne์„ ํ†ตํ•ด ์—ฐ๊ด€๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ๋‹ค.

2๋‹จ๊ณ„ - ์ด๋ฒคํŠธ ์Šคํ† ๋ฐ

  • ์ด๋ฒคํŠธ์Šคํ† ๋ฐ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”

challenage-course-1๊ธฐ ์Šฌ๋ž™ PR ์•Œ๋ฆผ ๋ฉ”์‹œ์ง€์— ๋Œ“๊ธ€๋กœ ๋งํฌ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค.

3๋‹จ๊ณ„ - ์ด๋ ฅ์„œ

  • challenage-course-1๊ธฐ ์Šฌ๋ž™ PR ์•Œ๋ฆผ ๋ฉ”์‹œ์ง€์— ๋Œ“๊ธ€๋กœ ๋งํฌ ๊ณต์œ ํ–ˆ์Šต๋‹ˆ๋‹ค.

About