Humix νλ‘μ νΈμ λ©μΈ λΉμ¦λμ€ λ‘μ§κ³Ό λ°μ΄ν° νλ¦μ μ΄κ΄νλ 컨νΈλ‘€ νμ(Main API Server)μ λλ€. ν΄λΌμ΄μΈνΈμ μμ²μ μ²λ¦¬νκ³ , λ¬΄κ±°μ΄ AI μμ μμ± μμ μ λ 립λ μ컀 λ Έλλ‘ μμ νκ² μμνλ©° μνλ₯Ό λκΈ°νν©λλ€.
- Framework: Java 21, Spring Boot 3.x
- Database: MariaDB (Self-hosted on Docker)
- Infrastructure: AWS EC2 (t4g.small, ARM64), Nginx, Docker
- Storage: AWS S3 (Object Storage)
Controller - Service - Repositoryκ³μΈ΅μΌλ‘ μ€κ³λμ΄ λͺ νν κ΄μ¬μ¬ λΆλ¦¬λ₯Ό λ¬μ±νμ΅λλ€.- Nginx 리λ²μ€ νλ‘μλ₯Ό ν΅ν΄ μμ νκ² API μμ²μ λΌμ°ν ν©λλ€.
- κ³ λΆν μμ±ν AI λͺ¨λΈ ꡬλ νκ²½μ λ©μΈ μλ²μμ λΆλ¦¬νμ¬, λΉλκΈ° Job Queue κΈ°λ°μ λ§μ΄ν¬λ‘ μλΉμ€(MSA) ννλ‘ κ΅¬μΆνμ΅λλ€.
- λ°μ΄ν° μ λ ₯: ν΄λΌμ΄μΈνΈλ‘λΆν° νλ° μ€λμ€(.wav) λ° κ³‘ λΆμκΈ° λ©νλ°μ΄ν° μμ . μλ³Έ νμΌμ AWS S3μ μ¦μ μ μ₯.
- λΉλκΈ° μμ
λ±λ‘ (Job Queue): DBμ μνλ₯Ό
PendingμΌλ‘ κΈ°λ‘νκ³ AI μ컀μ μμ μμ. - μ€μκ° μν μλ¦Ό (SSE): AI μ°μ° μ€ λ°μνλ μ§μ° μκ° λμ ν΄λΌμ΄μΈνΈμκ²
Server-Sent Events(SSE)λ‘ μ€μκ° μ§νλ₯ λ° νΌλλ°± μ μ‘. - κ²°κ³Ό λκΈ°ν (Callback): AI μ컀 μ°μ° μλ£ ν Webhook μ½λ°±μ μμ νμ¬ DB μνλ₯Ό
Completedλ‘ μ λ°μ΄νΈνκ³ μ΅μ’ S3 μμ URLμ ν΄λΌμ΄μΈνΈμ μ 곡.
μμ€ν κ΄λ¦¬λ₯Ό μν ν΅μ¬ λλ©μΈ ν μ΄λΈ ꡬ쑰μ λλ€.
| Table | Description | Key Columns |
|---|---|---|
| Member | λΈλΌμ°μ μΈμ μ λ 립λ μ¬μ©μλ‘ μλ³ | uuid(PK), created_at |
| Humming | μ¬μ©μκ° λ Ήμν μλ³Έ μμ± μ€λμ€ κ΄λ¦¬ | humming_id(PK), uuid(FK), s3_file_url, duration_seconds |
| MelodyScore | νλ°μμ νμ±λ μ΄κΈ° λ°μ΄ν° λ° μμ λ μ 보 λ°μ΄ν° | melody_id(PK), humming_id(FK), notes_data(LONGTEXT) |
| MusicGeneration | λΉλκΈ° AI νΈκ³‘ μμ μν λ° μ΅μ’ μμ±κ³‘ λ©νλ°μ΄ν° | generation_id(PK), parent_generation_id(Self FK), status(PROCESSING/COMPLETED/FAILED), result_s3_url |