Skip to content

Latest commit

ย 

History

100 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Smakers-BE

Smakers ์„œ๋น„์Šค์˜ ๋ฐฑ์—”๋“œ API ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.


๐Ÿ›  Tech Stack

Category Technology Badge
Language Java 17 Java
Framework Spring Boot 4.x Spring Boot
Persistence JPA / Hibernate JPA Hibernate
Build / Test Gradle / JUnit5 Gradle JUnit5
API Docs Swagger Swagger

๐ŸŒ Infrastructure & Third Party

Category Technology Badge
Cloud Storage AWS S3 AWS S3
PDF Generation iText7 / Thymeleaf iText7 Thymeleaf
Communication WebClient Spring WebFlux SSE
JSON Parsing Jackson / org.json Jackson org.json

๐Ÿ“‘ API Documentation & Testing

Category Technology Badge
API Docs Swagger UI Swagger
Testing JUnit 5 JUnit5
Test Starter Spring Test Spring

๐Ÿ“‹ Requirements

๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰์„ ์œ„ํ•ด ์•„๋ž˜ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Java: 17 ์ด์ƒ
  • IDE: IntelliJ IDEA (Lombok Plugin ์„ค์น˜ ํ•„์ˆ˜)
  • Database: MySQL 8.0 ์ด์ƒ
  • Cloud: AWS S3 Bucket Access (Access Key / Secret Key ํ•„์š”)

โš™๏ธ ๊นƒ ๋ธŒ๋žœ์น˜ ์ „๋žต

๊นƒ ํ”Œ๋กœ์šฐ(Git-flow)

  • Main: ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์•ˆ์ •๋œ ์ฝ”๋“œ ์ €์žฅ.
  • Develop: ๊ฐœ๋ฐœ ์ค‘์ธ ์ฝ”๋“œ ํ†ตํ•ฉ ๋ฐ ํ…Œ์ŠคํŠธ.
  • Feature Branches: ๊ฐœ๋ณ„ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ํ›„ Develop์— ๋ณ‘ํ•ฉ.

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

  • ๋ช…ํ™•ํ•œ ๊ตฌ์กฐ: ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋‹จ๊ณ„ ๊ตฌ๋ถ„.
  • ์•ˆ์ •์„ฑ: Main์€ ํ•ญ์ƒ ๊ฒ€์ฆ๋œ ์ฝ”๋“œ๋งŒ ์œ ์ง€.
  • ๋™์‹œ ๊ฐœ๋ฐœ: ๊ฐ ๊ธฐ๋Šฅ์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…ํ•ด ์ถฉ๋Œ ์ตœ์†Œํ™”.

๐Ÿ“ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ (Introduction)

3D ๋ถ„ํ•ด๋กœ ์›๋ฆฌ๋ฅผ ๋ณด๊ณ , AI ํŠœํ„ฐ๋กœ ๊ณตํ•™์„ ๋งˆ์Šคํ„ฐํ•˜๋‹ค

ํ…์ŠคํŠธ ์œ„์ฃผ์˜ ํ‰๋ฉด์ ์ธ ํ•™์Šต์„ ๋„˜์–ด, 7์ข…์˜ ์ •๋ฐ€ ๊ธฐ๊ณ„ ์—์…‹(Drone, V4 Engine, Robot Arm ๋“ฑ)์„ 3D๋กœ ์ง์ ‘ ์กฐ๋ฆฝยท๋ถ„ํ•ดํ•˜๋ฉฐ ์‹œ๊ฐ์  ์ดํ•ด๋„๋ฅผ ๊ทน๋Œ€ํ™”ํ•˜๊ณ , AI๋ฅผ ํ†ตํ•ด ๊ฐœ์ธํ™”๋œ ํ•™์Šต ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ์—๋“€ํ…Œํฌ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

๐ŸŒŸService Concept

๋ณต์žกํ•œ ๊ธฐ๊ณ„ ์žฅ์น˜์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์™€ ๋ถ€ํ’ˆ ๊ฐ„์˜ ์œ ๊ธฐ์ ์ธ ์—ญํ•™ ๊ด€๊ณ„๋ฅผ 3D ์ธํ„ฐ๋ž™์…˜์œผ๋กœ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ํ•™์Šต ์ค‘ ๋‚จ๊ธด ๋ฉ”๋ชจ์™€ ์ทจ์•ฝ์ ์„ AI๊ฐ€ ๋ถ„์„ํ•˜์—ฌ, ๊ธฐ๋Šฅยท๊ตฌ์กฐยท์˜ค๊ฐœ๋… ์ค‘์‹ฌ์˜ ๋งž์ถคํ˜• ํ€ด์ฆˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•™์Šต ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํ„ฐํ™”ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ”‘ ์ฃผ์š” ๊ธฐ๋Šฅ

์„œ๋น„์Šค ๋„๋ฉ”์ธ ๊ธฐ๋Šฅ ์„ค๋ช…
์—์…‹ ๋ฐ ๋ถ€ํ’ˆ ๊ด€๋ฆฌ 58์ข…์˜ ์ •๋ฐ€ ๊ธฐ๊ณ„ ๋ถ€ํ’ˆ ๋ฐ ์—์…‹์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ๋ถ€ํ’ˆ ๊ฐ„์˜ ๊ณ„์ธต ๊ตฌ์กฐ์™€ ์žฌ์งˆ ์ •๋ณด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์›Œํฌํ”Œ๋กœ์šฐ ์‹œ์Šคํ…œ ๋…ธ๋“œ์™€ ์—ฃ์ง€ ๊ธฐ๋ฐ˜์˜ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์บ”๋ฒ„์Šค๋ฅผ ํ†ตํ•ด ํ•™์Šต ํ๋ฆ„์„ ์„ค๊ณ„ํ•˜๋ฉฐ, Autosave ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ํŽธ์ง‘ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
AI ํŠœํ„ฐ ์ฑ„ํŒ… SSE(Server-Sent Events) ์ŠคํŠธ๋ฆฌ๋ฐ ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜์—ฌ AI ๋‹ต๋ณ€์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ณ , ํ•™์Šต ๋งฅ๋ฝ์„ ์œ ์ง€ํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ์งˆ์˜์‘๋‹ต ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋งž์ถคํ˜• ํ€ด์ฆˆ ์ƒ์„ฑ ์‚ฌ์šฉ์ž์˜ ํ•™์Šต ์—์…‹์„ AI๊ฐ€ ์‹ค์‹œ๊ฐ„ ๋ถ„์„ํ•˜์—ฌ ์ตœ์ ํ™”๋œ ํ€ด์ฆˆ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜๋ฉฐ, ๋น„๋™๊ธฐ ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
ํ•™์Šต ๋ฆฌํฌํŠธ ์ƒ์„ฑ ์ž‘์„ฑ๋œ ๋ฉ”๋ชจ, ์ฑ„ํŒ… ๋‚ด์—ญ, ํ€ด์ฆˆ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ iText7 ๊ธฐ๋ฐ˜์˜ ๊ณ ํ•ด์ƒ๋„ PDF ๋ฆฌํฌํŠธ๋ฅผ ์ž๋™ ๋ Œ๋”๋งํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
๋ฆฌ์†Œ์Šค ์„œ๋น™ ์ตœ์ ํ™” **AWS S3์™€ CloudFront(OAC)**๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋Œ€์šฉ๋Ÿ‰ 3D ์—์…‹ ๋ฐ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ณด์•ˆ์„ฑ ์žˆ๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ , CDN ์บ์‹ฑ์„ ํ†ตํ•ด ์ „์†ก ์†๋„๋ฅผ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.
์ธํ”„๋ผ ๋ฐ ๋ฐฐํฌ GitHub Actions์™€ Docker๋ฅผ ํ™œ์šฉํ•œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์šด์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ  ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

๐Ÿ“Œ ERD

ERD ๋ชจ๋ธ๋ง


๐Ÿ“‘ ํ”„๋กœ์ ํŠธ ๊ธฐํš

๐Ÿ“Œ ๊ธฐ๋Šฅ ๋ช…์„ธ์„œ

Google Sheets

๐Ÿ“Œ API ์ƒ์„ธ ๋ช…์„ธ์„œ

Google Sheets


๐Ÿ‘ฅ Roles and Responsibilities

ํ˜„๊ฒฝ

๋„๋ฉ”์ธ ์„ค๊ณ„ ๋ฐ ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•

  • Domain Design: ์—์…‹/๋ถ€ํ’ˆ, ๋ฉ”๋ชจ, ์›Œํฌํ”Œ๋กœ์šฐ ๋„๋ฉ”์ธ ๋ชจ๋ธ๋ง ๋ฐ CRUD ๊ตฌํ˜„
  • Workflow: ์‹ค์‹œ๊ฐ„ ๋…ธ๋“œ/์—ฃ์ง€ ์ €์žฅ ์‹œ์Šคํ…œ(Autosave) ๋ฐ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๊ด€๋ฆฌ
  • Infra & DevOps: AWS(S3, CloudFront) ์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ GitHub Actions CI/CD ๊ตฌ์ถ•

์ฑ„์—ฐ

AI ๊ธฐ๋ฐ˜ ํ•™์Šต ์ฝ˜ํ…์ธ  ๋ฐ ๋ฆฌํฌํŠธ ์‹œ์Šคํ…œ ๊ตฌ์ถ•

  • AI Interaction: WebClient ๊ธฐ๋ฐ˜ AI API ์—ฐ๋™ ๋ฐ SSE ์ŠคํŠธ๋ฆฌ๋ฐ ๋‹ต๋ณ€ ๊ตฌํ˜„
  • Quiz Service: ํ•™์Šต ์ปจํ…์ŠคํŠธ(๋ฉ”๋ชจ/์ฑ„ํŒ…) ๋ถ„์„์„ ํ†ตํ•œ ๋งž์ถคํ˜• ํ€ด์ฆˆ ์ƒ์„ฑ ๋กœ์ง ๊ตฌํ˜„
  • Reporting: Thymeleaf & iText7์„ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ํ•™์Šต ๋ฆฌํฌํŠธ PDF ์ž๋™ ์ƒ์„ฑ

๐Ÿ› ๏ธ Technical Troubleshooting

ํ˜„๊ฒฝ (Infrastructure & Database)

์ฃผ์ œ ์š”์•ฝ ์ƒ์„ธ ๋‚ด์šฉ (Click to expand)
JPA Autosave ์œ ๋‹ˆํฌ ์ œ์•ฝ ์˜ค๋ฅ˜
์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง ์ตœ์ ํ™”
[๋ฌธ์ œ] ์ˆ˜์ • ๋กœ์ง์—์„œ new Node() ์ƒ์„ฑ์œผ๋กœ ์ธํ•œ Duplicate Entry ๋ฐœ์ƒ
[์›์ธ] ์ค€์˜์† ๊ฐ์ฒด๋ฅผ JPA๊ฐ€ Insert๋กœ ํŒ๋‹จ
[ํ•ด๊ฒฐ] ๊ธฐ์กด ์—”ํ‹ฐํ‹ฐ ์กด์žฌ ์—ฌ๋ถ€ ์„ ์กฐํšŒ ํ›„ ๋ณ€๊ฒฝ ๊ฐ์ง€(Dirty Checking) ์œ ๋„
[๊ตํ›ˆ] ์—”ํ‹ฐํ‹ฐ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ์˜ ์ค‘์š”์„ฑ ์ฒด๊ฐ
Infra S3 vs CloudFront ์„ค๊ณ„
์„œ๋น™ ์•„ํ‚คํ…์ฒ˜ ์˜์‚ฌ๊ฒฐ์ •
[๋ฌธ์ œ] Private S3 ๋ฆฌ์†Œ์Šค์˜ ๋ณด์•ˆ๊ณผ ์„ฑ๋Šฅ ๊ฐ„์˜ ๊ท ํ˜• ๊ณ ๋ฏผ
[์„ ํƒ] CloudFront + OAC ๊ตฌ์กฐ ์ฑ„ํƒ
[์ด์œ ] UUID ๊ธฐ๋ฐ˜ ๋น„๋…ธ์ถœ ์‹๋ณ„์ž๋กœ ๋ณด์•ˆ ์œ ์ง€ + CDN ์บ์‹ฑ์œผ๋กœ Latency ๋‹จ์ถ•
[๊ตํ›ˆ] ์‹œ์Šคํ…œ ํŒจํ„ด์— ๋งž๋Š” ์ ์ ˆํ•œ ๋ณต์žก๋„ ์„ ํƒ

์ฑ„์—ฐ (AI & UX Optimization)

์ฃผ์ œ ์š”์•ฝ ์ƒ์„ธ ๋‚ด์šฉ (Click to expand)
Async ํ€ด์ฆˆ ์ƒ์„ฑ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋‹จ์ถ•
๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ(Async) ๋„์ž…
[๋ฌธ์ œ] AI ๋ถ„์„ ์‹œ๊ฐ„(15์ดˆ+)์œผ๋กœ ์ธํ•œ ๋ธŒ๋ผ์šฐ์ € ํƒ€์ž„์•„์›ƒ
[ํ•ด๊ฒฐ] Spring @Async ๋„์ž…์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌ ๋ฐ ์ฆ‰์‹œ ์‘๋‹ต ๋ฐ˜ํ™˜
[ํšจ๊ณผ] ์‚ฌ์šฉ์ž ๋Œ€๊ธฐ ์ฐจ๋‹จ ๋ฐฉ์ง€ ๋ฐ ์„œ๋ฒ„ ์ž์› ์ ์œ  ํšจ์œจํ™”
SSE AI ์ฑ„ํŒ… ์‘๋‹ต ์ง€์—ฐ ํ•ด์†Œ
์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๋‹ต๋ณ€
[๋ฌธ์ œ] ๋‹ต๋ณ€ ์™„๋ฃŒ ์ „๊นŒ์ง€ ๋นˆ ํ™”๋ฉด ๋…ธ์ถœ๋กœ ์ธํ•œ UX ์ €ํ•˜
[ํ•ด๊ฒฐ] Server-Sent Events(SSE) ๊ธฐ๋ฐ˜ ํ† ํฐ ๋‹จ์œ„ ์‹ค์‹œ๊ฐ„ ์ „์†ก
[ํšจ๊ณผ] TTFB(์ฒซ ์‘๋‹ต ์‹œ๊ฐ„) ๋‹จ์ถ•์œผ๋กœ ์ฒด๊ฐ ์‘๋‹ต ์†๋„ ๋Œ€ํญ ๊ฐœ์„ 

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages