Skip to content

Latest commit

ย 

History

History
102 lines (80 loc) ยท 4.76 KB

File metadata and controls

102 lines (80 loc) ยท 4.76 KB

28Delivery BackEnd

ํŒ€์› ์†Œ๊ฐœ

์ตœ๋™์ธ
  • ํŒ€์žฅ
  • API ์„ค๊ณ„
  • Restaurant/Menu/Category API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
  • ๋ฆฌํŒฉํ† ๋ง
  • ํ”„๋กœ์ ํŠธ ์ด๊ด„ ๊ด€๋ฆฌ
์กฐ๊ทœ์„ฑ
  • DB ์„ค๊ณ„
  • Menu API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
  • AI API ์ ์šฉ
  • CI/CD ๋ฐฐํฌ
  • Swagger API ๋ฌธ์„œํ™”
๊ฐ• ๋ฏผ
  • DB ์„ค๊ณ„
  • User API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
  • ๋ณด์•ˆ ๋ฐ ์ธ์ฆ
  • CI/CD ๋ฐฐํฌ
์—„์€์ง„
  • DB ์„ค๊ณ„
  • Address API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
  • Admin User API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
  • CI/CD ๋ฐฐํฌ
์ด์†Œํ˜„
  • API ์„ค๊ณ„
  • Order/Review/Payment API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
  • Admin Order/Review API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ
  • ๋ฆฌํŒฉํ† ๋ง

ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ ๋ชฉํ‘œ

28Delivery BackEnd ํ”„๋กœ์ ํŠธ๋Š” โ€˜00์˜ ๋ฏผ์กฑโ€™๊ณผ ๊ฐ™์€ ์ฃผ๋ฌธ ๊ด€๋ฆฌ ํ”Œ๋žซํผ์˜ ๋ฐฑ์•ค๋“œ ๋ถ€๋ถ„์„ ์Šคํ”„๋ง ๋ถ€ํŠธ ๊ธฐ๋ฐ˜์˜ ๋ชจ๋†€๋ฆฌ์‹ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœํ•œ ํŒ€ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด ํŒ€ ํ”„๋กœ์ ํŠธ์˜ ๋ชฉ์ ์€ ๊ด‘ํ™”๋ฌธ ๊ทผ์ฒ˜์—์„œ ์šด์˜๋  ์Œ์‹์ ๋“ค์˜ ๋ฐฐ๋‹ฌ ๋ฐ ํฌ์žฅ ์ฃผ๋ฌธ ๊ด€๋ฆฌ, ๊ฒฐ์ œ, ๊ทธ๋ฆฌ๊ณ  ์ฃผ๋ฌธ ๋‚ด์—ญ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํ”Œ๋žซํผ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•˜์—ฌ 28Delivery BackEnd ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋Šฅ๋ณ„ API๋ฅผ ๊ฐœ๋ฐœํ•˜์—ฌ ํ”„๋ก ํŠธ์•ค๋“œ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋ฉฐ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ž๋™ํ™”ํ•˜์—ฌ ์„œ๋น„์Šค๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ๋งํฌ: http://3.39.9.229:8080/swagger-ui/index.html

ํ”„๋กœ์ ํŠธ ์ƒ์„ธ ๋‚ด์šฉ

์ฃผ์š” ๊ธฐ๋Šฅ

  • ํšŒ์› ๊ด€๋ฆฌ
    • ํšŒ์› ๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ, ์‚ฌ์šฉ์ž ์ •๋ณด ์กฐํšŒ ๋ฐ ์‚ญ์ œ
    • ๊ณ ๊ฐ, ๊ฐ€๊ฒŒ ์ฃผ์ธ, ๊ด€๋ฆฌ์ž ๋ณ„ ์ ‘๊ทผ ๊ถŒํ•œ ๊ด€๋ฆฌ
  • ์Œ์‹์  ๋ฐ ๋ฉ”๋‰ด ๊ด€๋ฆฌ
    • ๊ฐ€๊ฒŒ ๋ฐ ๋ฉ”๋‰ด ๋“ฑ๋ก, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ
    • ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ํ†ตํ•œ ์Œ์‹์  ๋ถ„๋ฅ˜
    • ๊ฐ€๊ฒŒ ์ฃผ์†Œ ์ถ”๊ฐ€, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ
    • AI๋ฅผ ํ†ตํ•œ ๋ฉ”๋‰ด ์„ค๋ช… ์ž๋™ ์ƒ์„ฑ
  • ์ฃผ๋ฌธ ๋ฐ ๋ฐฐ์†ก์ง€ ๊ด€๋ฆฌ
    • ์ฃผ๋ฌธ ์ƒ์„ฑ, ์ƒํƒœ ๋ณ€๊ฒฝ, ์ƒ์„ธ ์กฐํšŒ, ์ฃผ๋ฌธ ์ทจ์†Œ
    • ์‹ค์‹œ๊ฐ„ ์ฃผ๋ฌธ ํ™•์ธ, ๋‚ด์—ญ ๋ชฉ๋ก ์กฐํšŒ
    • ๋ฐฐ์†ก์ง€ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ
  • ๋ฆฌ๋ทฐ ๊ด€๋ฆฌ
    • ๋ฆฌ๋ทฐ ์ƒ์„ฑ, ๊ฒ€์ƒ‰, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œ
    • ํŠน์ • ์Œ์‹์  ํ‰์  ๋ณด์—ฌ์ฃผ๊ธฐ
  • ๊ด€๋ฆฌ์ž ๊ธฐ๋Šฅ
    • ์‚ฌ์šฉ์ž ๊ณ„์ •, ์Œ์‹์ , ์ฃผ๋ฌธ, ๋ฐฐ์†ก์ง€, ๋ฆฌ๋ทฐ ๊ด€๋ฆฌ(CRUD)
    • AI API์˜ ๋กœ๊ทธ ๊ด€๋ฆฌ

์‚ฌ์šฉ ๊ธฐ์ˆ 

  • API ์„ค๊ฒŒ ๋ฐ ๋ฌธ์„œํ™”
    • RESTful API ์›์น™์— ๋”ฐ๋ฅธ ์„ค๊ณ„
    • Swagger๋ฅผ ์ด์šฉํ•œ REST API ์—”๋“œํฌ์ธํŠธ ๋ฌธ์„œ ์ œ๊ณต์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์™€์˜ ์›ํ™œํ•œ ์†Œํ†ต ์ง€์›
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ์‚ฌ์šฉ์ž๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ์˜ ์‹๋ณ„์ž๋Š” UUID ์‚ฌ์šฉ
    • Audit ํ•„๋“œ(created_at, created_by, updated_at, updated_by, deleted_at, deleted_by)๋กœ ๋ฐ์ดํ„ฐ ๊ฐ์‚ฌ ๋กœ๊ทธ ๊ธฐ๋ก
    • ๋ฐ์ดํ„ฐ ์‚ญ์ œ์‹œ ์†Œํ”„ํŠธ ์‚ญ์ œ
    • ์œ ์—ฐํ•œ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ QueryDSL ์‚ฌ์šฉ, ํŽ˜์ด์ง€ ๊ตฌํ˜„์— ์‚ฌ
  • ์ธ์ฆ ๋ฐ ๋ณด์•ˆ
    • JWT์™€ Spring Security๋ฅผ ํ™œ์šฉํ•œ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ
    • BCrypt ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
    • ๋นŒ๋“œ ์„ค์ •๊ฐ„ ์‹œํฌ๋ฆฟ ํ‚ค๋Š” .env๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ
    • Spring Validator๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
  • ๋ฐฐํฌ ๋ฐ ๋นŒ๋“œ
    • AWS EC2๋ฅผ ํ†ตํ•œ ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
    • Docker & Docker-Compose๋ฅผ ์ด์šฉํ•œ ์ปจํ…Œ์ด๋„ˆ ๋ณ„ ๋นŒ๋“œ ์„ค์ •
    • Github Action ์„ค์ •์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ์™€ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ์ž๋™ํ™”
  • ํ…Œ์ŠคํŠธ
    • JUnit, Mockito ๋“ฑ์„ ํ™œ์šฉํ•œ ๋‹จ์œ„ ๋ฐ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ

๊ธฐ์ˆ  ์Šคํƒ

  • IDE: InteliJ Ultimate
  • ์–ธ์–ด: Java 17
  • ํ”„๋ ˆ์ž„์›Œํฌ: Spring Boot
  • ๋ณด์•ˆ: Spring Security, JWT
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: Spring JPA, PostgreSQL
  • ๋นŒ๋“œ ๋„๊ตฌ: Gradle
  • ํ…Œ์ŠคํŠธ: JUnit 5, Mockito, Spring Test
  • ๊ธฐํƒ€: Lombok, Hibernate Validator
  • ๋ฐฐํฌ: AWS EC2, Docker, Docker-Compose, Github Action
  • API: Google AI Studio, ์ฃผ์†Œ๊ธฐ๋ฐ˜์‚ฐ์—…์ง€์› ์„œ๋น„์Šค API
  • ๋ฒ„์ „ ๊ด€๋ฆฌ: Git, Github

ERD

ERD

์„œ๋น„์Šค ๊ตฌ์„ฑ ๋ฐ ์‹คํ–‰ ๋ฐฉ๋ฒ•

์„œ๋น„์Šค ์„ค๊ณ„

์‹œ์Šคํ…œ ์„ค๊ณ„๋„

  • ํ”„๋ก ํŠธ์•ค๋“œ ๋ถ€๋ถ„์€ ๋‹ด๋‹น ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐœ๋ฐœ ์˜ˆ์ •
  • kubernates๋Š” ์ถ”ํ›„ MSA๋กœ ํ™•์ž˜ํ•  ๋•Œ ์‚ฌ์šฉ ์˜ˆ์ •

์‹คํ–‰ ๋ฐฉ๋ฒ•

Swagger API ์ฐธ๊ณ 

์‚ฌ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค

  1. ํšŒ์›๊ฐ€์ž… - ๋กœ๊ทธ์ธ
  2. (๊ด€๋ฆฌ์ž) ๊ฐ€๊ฒŒ ์ƒ์„ฑ - ๊ฐ€๊ฒŒ ์ฃผ์†Œ ์„ค์ •
  3. (๊ด€๋ฆฌ์ž) ๋ฉ”๋‰ด ์ƒ์„ฑ/์ˆ˜์ •
  4. (๊ณ ๊ฐ) ๊ฐ€๊ฒŒ ์„ฌ์ƒ‰ ๋ฐ ์กฐํšŒ - ๋ฉ”๋‰ด ์ƒ์„ฑ ๋ฐ ์กฐํšŒ - ์ฃผ๋ฌธ
  5. (๊ณ ๊ฐ) ์ฃผ๋ฌธ์‹œ ๊ฒฐ์žฌ ๊ธˆ์•ก ํ™•์ธ - ๊ฒฐ์žฌ ์ง„ํ–‰ - ๊ฒฐ์žฌ ์™„๋ฃŒ ํ™•
  6. (๊ณ ๊ฐ) ๋ฉ”๋‰ด ๋ฆฌ๋ทฐ ๋‚จ๊ธฐ๊ธฐ๊ธฐ