Git Product home page Git Product logo

le2sky / mealkitary-server Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 0.0 607 KB

๐Ÿฃ ์˜จ๋ผ์ธ ๋ฐ€ํ‚คํŠธ ์˜ˆ์•ฝ ์„œ๋น„์Šค, ๋ฐ€ํ‚คํ„ฐ๋ฆฌ ๐Ÿฃ

License: Apache License 2.0

Kotlin 100.00%
gradle-multi-modules hexagonal-architecture kotlin-spring-boot gradle-kotlin-dsl kotest ktlint jacoco jacoco-kotlin jib jib-gradle spring-rest-docs testfixtures qodana fcm-notifications

mealkitary-server's Introduction


์˜จ๋ผ์ธ ๋ฐ€ํ‚คํŠธ ์˜ˆ์•ฝ ์„œ๋น„์Šค, ๋ฐ€ํ‚คํ„ฐ๋ฆฌ ๐Ÿฃ

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ €์žฅ์†Œ

GitHub commit activity Build Status

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

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

๋ชฉ์ฐจ

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ

๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ

๊ตฌํ˜„ ์„ค๋ช…

๋ชจ๋“ˆ ๊ตฌ์กฐ์™€ ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

๋ชจ๋“ˆ ๊ตฌ์กฐ

๊ฐ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋Š” ํฌํŠธ์™€ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

  • mealkitary-api
  • mealkitary-application
  • mealkitary-domain
  • mealkitary-infrastructure

ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

  • ๊ฐœ๋ฐœ : jvm 11, kotlin 1.6.x, springboot 2.7.x
  • ํ…Œ์ŠคํŠธ : kotest 4.4.x, mockk 1.12.x, jacoco 0.8.x, springmockk 3.0.x

โฌ† ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๊ธฐ

mealkitary-server's People

Contributors

1o18z avatar le2sky avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

mealkitary-server's Issues

[์„ค์ •] Spring REST Docs ์„ค์ •

์„ค๋ช…

API ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•ด์„œ, REST Docs๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • REST Docs ์„ค์ •

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
์ด์ „์— swagger ์‚ฌ์šฉํ•ด๋ดค์„ ๋•Œ, ํ™˜๊ณตํฌ์ฆ ์˜ฌ๋ป”ํ–ˆ์Œ.. ! ๊ทธ๋ฆฌ๊ณ  ๋ฌด์—‡๋ณด๋‹ค ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ๋ฉ”๋ฆฌํŠธ๋ผ๊ณ  ์ƒ๊ฐ์ด ๋“ฆ

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ์‹ ๊ทœ ๊ฐ€๊ฒŒ ๋“ฑ๋ก ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

์ ์ฃผ ํŽ˜์ด์ง€์—์„œ ์ ์ฃผ๊ฐ€ ์‹ ๊ทœ ๊ฐ€๊ฒŒ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹ ๊ทœ ๊ฐ€๊ฒŒ ๋“ฑ๋ก ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ์‹ ๊ทœ ๊ฐ€๊ฒŒ ๋“ฑ๋ก ๊ธฐ๋Šฅ ๊ตฌํ˜„

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ์˜ˆ์•ฝ ์Šน์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

๊ฒฐ์ œ๊ฐ€ ์™„๋ฃŒ๋œ ์˜ˆ์•ฝ์— ๋Œ€ํ•ด์„œ, ์ ์ฃผ์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๊ณ  ์Šน์ธ์„ ๋ฐ›๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ์•Œ๋žŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์˜ˆ์•ฝ ์Šน์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ์˜ˆ์•ฝ ๊ฐœ์š” ์ƒ์„ฑ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ex) ๋ถ€๋Œ€์ฐŒ๊ฐœ ์™ธ 2๊ฑด

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

๊ฒฐ์ œ ์™„๋ฃŒ ์ดํ›„์—, ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ํ‘ธ์‹œ ์•Œ๋ฆผ ์ƒ๊ฐ ์ค‘

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ๊ฐ€๊ฒŒ ์ƒํƒœ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

๊ฐ€๊ฒŒ์˜ ์˜ˆ์•ฝ ๊ฐ€๋Šฅ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ๋ณ€๊ฒฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๊ฐ€๊ฒŒ ์ƒํƒœ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
ํ˜„์žฌ ๊ฐ€๊ฒŒ๊ฐ€ ์˜ˆ์•ฝ์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๊ฐ€๊ฒŒ์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

[๋ฌธ์ œ] codecov PR comment ๊ธฐ๋Šฅ ๊ทธ๋ž˜ํ”„ ๋ฏธ์ถœ๋ ฅ

๋ฌธ์ œ ์„ค๋ช…

codecov PR comment ๊ธฐ๋Šฅ ์ค‘์—์„œ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ถœ๋ ฅ์ด ์•ˆ๋˜๋Š” ํ˜„์ƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ ๋ฐฉ๋ฒ•(optional)
๋‹ค์Œ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์žฌํ˜„ ๊ฐ€๋Šฅ :

  1. PR ์ƒ์„ฑ
  2. run: gradle test ๋ผ๋ฒจ ๋“ฑ๋ก
  3. codecov comment ์กฐํšŒ

์˜ˆ์ƒ๋˜๋Š” ๋ฌธ์ œ์ 
graph ๊ธฐ๋Šฅ์„ ์ œ๋Œ€๋กœ ์ด์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์ง„(optional)
image

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ์•„๋ž˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ๋Œ€์‘ํ•˜๊ณ , github readme๋ฅผ ์‹ ๊ทœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • ๋ผ๋ฒจ์˜ ์ด๋ฆ„์„ ํ…Œ์ŠคํŠธ ์—์„œ run: gradle test๋กœ ๋ณ€๊ฒฝ
  • ๋ผ๋ฒจ์˜ ์ด๋ฆ„์„ ๋ฆฌ๋ทฐ์—์„œ run: gpt code review๋กœ ๋ณ€๊ฒฝ

[์„ค์ •] Jacoco ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ์ธก์ • ๋ฐ ์ž๋™ํ™”

์„ค๋ช…

Jacoco๋กœ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ธก์ •ํ•˜๊ณ , ์ด๋ฅผ ์›Œํฌ ํ”Œ๋กœ์šฐ๋กœ ๋ธŒ๋žœ์น˜์— PR์ด ์ƒ๊ธธ๋•Œ๋งˆ๋‹ค ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • Jacoco ์—ฐ๋™
  • github action - Codecov

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

build.gradle.kts ์ •๋ฆฌ

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ๊ฐ€๊ฒŒ ์‹๋ณ„์ž ๊ธฐ๋ฐ˜ ์˜ˆ์•ฝ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

์ ์ฃผ์šฉ ํ™”๋ฉด์—์„œ ์˜ˆ์•ฝ ๋ชฉ๋ก์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ€๊ฒŒ ์‹๋ณ„์ž ๊ธฐ๋ฐ˜ ์˜ˆ์•ฝ ์กฐํšŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๊ฐ€๊ฒŒ ์‹๋ณ„์ž ๊ธฐ๋ฐ˜ ์˜ˆ์•ฝ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

[๊ฐœ์„ ] Location ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ ๊ฐœ์„ 

์„ค๋ช…

  • ์˜ˆ์ƒ๋˜๋Š” ๊ฒฝ๋กœ๋Š” localhost/reservation/id ํ˜•์‹์ด์ง€๋งŒ ์‹ค์ œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฝ๋กœ๋Š” localhost/reservation//id ํ˜•์‹์œผ๋กœ ์Šฌ๋ž˜์‹œ๊ฐ€ ๋‘๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์Šฌ๋ž˜์‹œ๋ฅผ ํ•˜๋‚˜๋งŒ ๋‘ฌ ์œ ํšจํ•œ ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • Localtion ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ ๊ฐœ์„ 

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

์ •๋ง ์‹ฌ๊ฐํ•˜๊ฒŒ ๋ฌด์–ธ๊ฐ€ ์•ˆ๋˜๋Š” ์ƒํ™ฉ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์„ ์œผ๋กœ ๋ถ„๋ฅ˜ํ•จ

[๊ธฐ๋Šฅ ๊ตฌํ˜„] API ์—๋Ÿฌ ์‘๋‹ต ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

API ์—๋Ÿฌ ์‘๋‹ต ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ , API์— ๋Œ€ํ•œ docs ํ…Œ์ŠคํŠธ์™€ validation ํ…Œ์ŠคํŠธ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๊ธ€๋กœ๋ฒŒ ์˜ˆ์™ธ ํ•ธ๋“ค๋Ÿฌ ๊ฐœ๋ฐœ
  • validation ์ ์šฉ ๋ฐ ํ…Œ์ŠคํŠธ ๋ถ„๋ฆฌ

[์„ค์ •] Location ํ—ค๋” ๋…ธ์ถœ ์„ค์ •

์„ค๋ช…

์›น ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ Cors์— ์˜ํ•ด์„œ Location ํ—ค๋”์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ๊ฑธ๋กœ ํŒ๋‹จ์ด ๋˜์–ด, Locaiton ํ—ค๋”๋ฅผ ๋…ธ์ถœํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • Location ํ—ค๋” ๋…ธ์ถœ ์„ค์ •

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ์นด์นด์˜ค ์ฃผ์†Œ ์กฐํšŒ api ์—ฐ๋™

์„ค๋ช…

api ๋ฌธ์„œ

์นด์นด์˜ค ์ฃผ์†Œ ์กฐํšŒ api๋ฅผ ์—ฐ๋™ํ•ด ShopAddressResolver๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ์นด์นด์˜ค ์ฃผ์†Œ ์กฐํšŒ api ์—ฐ๋™

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
์ €์žฅ๋  ํ˜•์‹์— ๋งž๊ฒŒ ์ฃผ์†Œ ๋ณ€์ˆ˜๋ช… ๋ณ€๊ฒฝ ํ•„์š”

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ์˜ˆ์•ฝ ๋ชจ๋ธ ๋ˆ„๋ฝ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

shop๊ณผ ์˜์กด์„ฑ์„ ๊ฐœ์„ ํ•˜๊ณ , ๋ˆ„๋ฝ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๊ฒฐ์ œ ๊ธˆ์•ก ๊ณ„์‚ฐ ๊ธฐ๋Šฅ
  • ์˜ˆ์•ฝ ์ƒํ’ˆ ๊ฒ€์ฆ ๊ธฐ๋Šฅ
  • shop๊ณผ ์˜์กด์„ฑ ๊ฐœ์„ 

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

๊ธˆ์•ก ๊ณ„์‚ฐ์— ํ•„์š”ํ•œ ๋ชจ๋ธ๋กœ Money๊ฐ€ ํ•„์š”ํ•œ๋””, common์— ๊ณตํ†ต ๋ชจ๋ธ์„ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒŒ ์ข‹์„๋“ฏ!

[์„ค์ •] ์ง€์†์  ํ†ตํ•ฉ(Continuous Integration) ํ”Œ๋กœ์šฐ ์ •๋ฆฌ

์„ค๋ช…

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

์ž‘์—… ๋‚ด์šฉ

  • github action flow ์ •๋ฆฌ
  • qodana ci ๊ณผ์ •์— ์ถ”๊ฐ€
  • ํŠธ๋ฆฌ๊ฑฐ ์„ค์ •

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

  • jib๋กœ ๋ฌถ์–ด์„œ repository์— ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์€ ์ง€์†์  ์ œ๊ณต(Continuous Delivery)์ด๋ผ๊ณ  ์ƒ๊ฐ๋จ
  • ํ•„์š”ํ•  ๊ฒฝ์šฐ, CI/CD ๋ฌธ์„œํ™”๋„ ํ•˜๋ฉด ์ข‹์„๋“ฏ?
  • ํ”„๋กœ์ ํŠธ ๋ฒ„์ „์€ 0.1.1 ์œ ์ง€

image

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ๊ตญ์„ธ์ฒญ ์‚ฌ์—…์ž๋“ฑ๋ก์ •๋ณด ์ƒํƒœ์กฐํšŒ ์„œ๋น„์Šค ์—ฐ๋™

์„ค๋ช…

api ๋ฌธ์„œ

๊ตญ์„ธ์ฒญ ์‚ฌ์—…์ž๋“ฑ๋ก์ •๋ณด ์ƒํƒœ์กฐํšŒ ์„œ๋น„์Šค๋ฅผ ์—ฐ๋™ํ•ด ShopBuinessValidator๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๊ตญ์„ธ์ฒญ ์‚ฌ์—…์ž๋“ฑ๋ก์ •๋ณด ์ƒํƒœ์กฐํšŒ ์„œ๋น„์Šค ์—ฐ๋™
  • Brn ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ ์˜์กด์„ฑ ์ฃผ์ž… ์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ(ํ˜„์žฌ Simple์— @primary ๋ถ™์–ด์žˆ์Œ)

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
ํ† ์Šค ํŽ˜์ด๋จผ์ธ  ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์›น ํด๋ผ์ด์–ธํŠธ ๋ถ„๋ฆฌ ํ•„์š”

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ๋ฆฌ์†Œ์Šค ์กฐํšŒ ์‹คํŒจ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

ํŠน์ • ๋ฆฌ์†Œ์Šค๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ, ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ํŠน์ • ๋ฆฌ์†Œ์Šค ์กฐํšŒ ์‹คํŒจ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • No Content ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

์‹ ๊ทœ ํ…Œ์ŠคํŠธ ํ•„์š”!

[๊ฐœ์„ ] Product ์—”ํ‹ฐํ‹ฐ ์‹๋ณ„์ž UUID๋กœ ๊ฐœ์„ 

์„ค๋ช…

Product์˜ ์‹๋ณ„์ž๋ฅผ UUID๋กœ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • UUID๋กœ ๊ฐœ์„ 

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
์ƒํ’ˆ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ, ๋ฐ˜์˜ํ• ์ง€ ๋‹ค์‹œ ๊ณ ๋ฏผํ•ฉ๋‹ˆ๋‹ค.

[์„ค์ •] CORS ์„ค์ •

์„ค๋ช…

์›น ํด๋ผ์ด์–ธํŠธ์™€ ์›ํ™œํ•œ ํ†ต์‹ ์„ ์œ„ํ•ด CORS๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • CORS ์„ค์ •

[์„ค์ •] queryDSL ์„ค์ •

์„ค๋ช…
dsl ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด queryDSL์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • queryDSL ์„ค์ •

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
์–ด๋Š ์‹œ์ ์— spring data jpa๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์–ด๋Š ์‹œ์ ์— queryDSL์„ ์‚ฌ์šฉํ•  ๊ฑด์ง€ ๊ธฐ์ค€์ด ํ•„์š”ํ•˜์ง€ ์•Š์„๊นŒ?

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ์˜ˆ์•ฝ ๊ฑฐ์ ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

์˜ˆ์•ฝ ๊ฑฐ์ ˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ์˜ˆ์•ฝ ๊ฑฐ์ ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๊ฒฐ์ œ ์ทจ์†Œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  • ๊ฒฐ์ œ ์ทจ์†Œ ์•Œ๋žŒ ๊ตฌํ˜„

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
์˜ˆ์•ฝ ๊ฑฐ์ ˆ-๊ฒฐ์ œ ์ทจ์†Œ๊ฐ€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜!

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ๊ฒฐ์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

ํ† ์Šค ํŽ˜์ด๋จผ์ธ  PG์™€ ์—ฐ๋™ํ•˜๊ณ , ๊ฒฐ์ œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ์„ค๊ณ„
  • API ์—ฐ๋™
  • ๊ฒฐ์ œ ์Šน์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
ํŠธ๋žœ์žญ์…˜์˜ ๋ฒ”์œ„, ํ™˜๊ฒฝ ๋ณ€์ˆ˜, ์•Œ๋ฆผ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผํ•  ๊ฒƒ

[๋ฌธ์ œ] ์นด์นด์˜ค ์ฃผ์†Œ ๊ฒ€์ƒ‰ API ์—ฐ๋™ ๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…
KaKaoApiAddressResolver์—์„œ ์‚ฌ์šฉํ•˜๋Š” KaKaoApiWebClient๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์•„, ์‹ ๊ทœ ๊ฐ€๊ฒŒ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ ๋ฐฉ๋ฒ•(optional)
๋‹ค์Œ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์žฌํ˜„ ๊ฐ€๋Šฅ :

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
  2. POST /shops ์š”์ฒญ
  3. 500 ์—๋Ÿฌ ๋ฐœ์ƒ

์˜ˆ์ƒ๋˜๋Š” ๋ฌธ์ œ์ 
์‹ ๊ทœ ๊ฐ€๊ฒŒ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ง„(optional)
image

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
Connection Refused์˜ ์›์ธ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ URI๋ฅผ ์ฒดํฌํ•ด๋ดค๋Š”๋ฐ, GET /v2/local/search/address ์š”์ฒญ์ด ๋‚˜๊ฐ‘๋‹ˆ๋‹ค. URI ๊ฒฝ๋กœ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์š”์ฒญ์„ ๋ณด๋ƒˆ์œผ๋‚˜ ๋””์ฝ”๋”ฉ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด KakaoApiAddressResponse ์ฝ”๋“œ์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•ด ๋ณด์ธ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ฆ!!!

[๊ฐœ์„ ] ๊ฐ€๊ฒŒ ๊ธฐ๋Šฅ ๊ฐœ์„ 

์„ค๋ช…

๊ฐ€๊ฒŒ์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ
  • ๊ฐ€๊ฒŒ ์ƒ์„ฑ ์‹œ ์ฃผ์†Œ ์ •๋ณด ์ถ”๊ฐ€

๊ธฐํƒ€ ๋‚ด์šฉ(optional)
๋ฝ์„ ์–ด๋–ป๊ฒŒ ํ•˜์ง€! (์ž ๊น๋งŒ ๋ณด๋ฅ˜)

[๊ฐœ์„ ] ๊ฐ€๋…์„ฑ ๊ฐœ์„ 

์„ค๋ช…

์ƒˆ๋กœ์šด ํฌ๋งคํŒ… ์„ค์ •์„ ์ ์šฉํ•˜๊ณ , ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋„ค์ด๋ฐ๊ณผ ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ํฌ๋งคํŒ… ์ ์šฉ
  • ๋„ค์ด๋ฐ, ๊ณต๋ฐฑ ์ถ”๊ฐ€ ์ž‘์—…

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ๊ฐ€๊ฒŒ ๋ชจ๋ธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

๊ฐ€๊ฒŒ, ์ƒํ’ˆ, ์˜ˆ์•ฝ ๊ฐ€๋Šฅ ์‹œ๊ฐ„์„ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๊ฐ€๊ฒŒ ์กฐํšŒ ๊ธฐ๋Šฅ
  • ์ƒํ’ˆ ์กฐํšŒ ๊ธฐ๋Šฅ
  • ์˜ˆ์•ฝ ๊ฐ€๋Šฅ ์‹œ๊ฐ„ ์กฐํšŒ ๊ธฐ๋Šฅ
  • JPA ๋งคํ•‘

๊ธฐํƒ€ ๋‚ด์šฉ(optional)

json ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด์„œ ์Šคํ„ฐ๋น™๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ!

json ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ›์•„ ์˜ฌ๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ง๋ ฌํ™” ๋น„์šฉ๋•Œ๋ฌธ์— entity ๋งคํ•‘ ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •

[๊ธฐ๋Šฅ ๊ตฌํ˜„] ๊ฐ€๊ฒŒ ์ƒ์„ธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

์„ค๋ช…

ํŠน์ • ๊ฐ€๊ฒŒ์˜ ์‹๋ณ„์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋‚ด์šฉ

  • ๊ฐ€๊ฒŒ ์ƒ์„ธ ์กฐํšŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.