๐Ÿงฑ ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ์‹œ์Šคํ…œ ๊ตฌ์กฐ - away0419/Placely GitHub Wiki

๐Ÿ“Š ์ „์ฒด ์‹œ์Šคํ…œ ๊ตฌ์กฐ (Mermaid ๋‹ค์ด์–ด๊ทธ๋žจ)

flowchart TD
 subgraph Infra["Infra"]
        K8s["Kubernetes Cluster"]
        ArgoCD["Argo CD (GitOps CI/CD)"]
        Monitoring["Prometheus / Grafana / Loki (์˜ˆ์ •)"]
  end
 subgraph UI["UI"]
        A1["B2B Web UI (Next.js)"]
        A2["B2C Web UI (Next.js)"]
  end
 subgraph  Gateway["API Gateway"]
        G["API Gateway (Spring Cloud Gateway / Kong)"]
  end
 subgraph Auth["Auth"]
        AuthService["Authentication Service (Spring Security + JWT)"]
  end
 subgraph Messaging["Messaging"]
        Kafka["Kafka"]
  end
 subgraph Services["Services"]
        B2BOrder["B2B (๋งค์žฅ) ์„œ๋น„์Šค"]
        B2CShop["B2C (์†๋‹˜) ์„œ๋น„์Šค"]
        AIRec["AI ์„œ๋น„์Šค"]
  end
 subgraph Databases["Databases"]
        DB_B2B[("B2B DB")]
        DB_B2C[("B2C DB")]
        DB_AI[("AI DB")]
  end
    UI -- API ์š”์ฒญ --> Gateway
    Gateway -- ์ธ์ฆ ์œ„์ž„ --> Auth
    Gateway -- ๋ผ์šฐํŒ… --> Services
    Services <-- ์ด๋ฒคํŠธ --> Messaging
    B2BOrder --> DB_B2B
    B2CShop --> DB_B2C
    AIRec --> DB_AI
    ArgoCD --> K8s
    Monitoring --> K8s

Loading

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ ๋ฐ ์„ ์ • ์ด์œ 

๋ถ„์•ผ ์Šคํƒ ์„ ์ • ์ด์œ 
๋ฐฑ์—”๋“œ Kotlin, Spring Boot 3 ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•๊ณผ ๋†’์€ ์ƒ์‚ฐ์„ฑ์œผ๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌํ˜„์— ์ตœ์ 
ํ”„๋ก ํŠธ์—”๋“œ Next.js, TypeScript, Tailwind CSS SSR ๋ฐ CSR ํ˜ผํ•ฉ ์ง€์›, ์‚ฌ์šฉ์ž ์นœํ™”์  UI ๊ฐœ๋ฐœ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค PostgreSQL, JPA ์•ˆ์ •์ ์ด๊ณ  ์ง๊ด€์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ
์ธ์ฆ/๋ณด์•ˆ Spring Security + JWT ์‹ค๋ฌด์— ์ ํ•ฉํ•œ ์ธ์ฆ/์ธ๊ฐ€ ์ฒ˜๋ฆฌ ๋ฐฉ์‹
๋ฉ”์‹œ์ง• Apache Kafka (์˜ˆ์ •) ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„์— ์ ํ•ฉ
์ธํ”„๋ผ Docker, Kubernetes (OKE), Argo CD ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ ๋ฐ ์šด์˜ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ
CI/CD GitHub Actions โ†’ Argo CD ์—ฐ๋™ GitOps ๊ธฐ๋ฐ˜์˜ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ
AI ์—ฐ๋™ OpenAI GPT-4 API ๋งค์ถœ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ์ธ์‚ฌ์ดํŠธ ์ƒ์„ฑ
์™ธ๋ถ€ ์—ฐ๋™ ๊ณต๊ณต API, ๋‚ ์”จ/์œ„์น˜ API, MCP ๋“ฑ ์„œ๋น„์Šค ๊ณ ๋„ํ™”๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์™ธ๋ถ€ ์ •๋ณด ์ˆ˜์ง‘
ํ…Œ์ŠคํŠธ JUnit 5, Mockito ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์•ˆ์ •์„ฑ ํ™•๋ณด
์šด์˜/๋ชจ๋‹ˆํ„ฐ๋ง Prometheus, Grafana, Loki (์˜ˆ์ •) MSA ๋ฐ K8s ํ™˜๊ฒฝ์˜ ๋กœ๊ทธ ๋ฐ ๋ฉ”ํŠธ๋ฆญ ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์„ฑ ์˜ˆ์ •

๐Ÿงฉ ๋ ˆ์ด์–ด ๊ตฌ์„ฑ (Layered Architecture)

Placely๋Š” ์ „ํ˜•์ ์ธ 3๊ณ„์ธต ๊ตฌ์กฐ์— AI/์™ธ๋ถ€ API ์—ฐ๋™ ๊ณ„์ธต์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™•์žฅ์„ฑ๊ณผ ๋ถ„๋ฆฌ๋ฅผ ๊ณ ๋ คํ•œ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  • Presentation Layer

    • ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” UI ์„œ๋น„์Šค
    • Next.js, React ๋“ฑ ์ตœ์‹  ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ
    • API Gateway๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€ ํ†ต์‹ 
  • API Gateway Layer

    • ๋ชจ๋“  ์™ธ๋ถ€ ์š”์ฒญ์˜ ๋‹จ์ผ ์ง„์ž…์  ์—ญํ•  ์ˆ˜ํ–‰
    • ์„œ๋น„์Šค ๋ผ์šฐํŒ…, ์ธ์ฆ/์ธ๊ฐ€ ์œ„์ž„, ๋ถ€ํ•˜ ๋ถ„์‚ฐ, ์š”์ฒญ ์ œํ•œ, ์‘๋‹ต ์ง‘๊ณ„ ๋‹ด๋‹น
  • Authentication & Authorization Layer (Identity Provider)

    • ๋…๋ฆฝ์ ์ธ ์ธ์ฆ ์„œ๋ฒ„๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ ๋‹ด๋‹น
    • JWT, OAuth2, OpenID Connect ๋“ฑ ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ ์ง€์›
    • ๊ฐ ์„œ๋น„์Šค์˜ ์ธ์ฆ ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ฐ ํ† ํฐ ๊ฒ€์ฆ ์ˆ˜ํ–‰
  • Service Layer

    • ๋„๋ฉ”์ธ๋ณ„ ์™„์ „ํžˆ ๋…๋ฆฝ๋œ ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ๊ตฌ์„ฑ
    • ๋‚ด๋ถ€๋Š” Controller, Service, Repository ๊ตฌ์กฐ ์œ ์ง€
    • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ˆ˜ํ–‰, ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, ์™ธ๋ถ€ ์—ฐ๋™ ๋‹ด๋‹น
    • ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์€ REST API, gRPC, ๋ฉ”์‹œ์ง• ์‚ฌ์šฉ
  • Integration / Messaging Layer

    • ์„œ๋น„์Šค ๊ฐ„ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐ ๋ฉ”์‹œ์ง• ๋‹ด๋‹น
    • ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋กœ ๋А์Šจํ•œ ๊ฒฐํ•ฉ ๋ฐ ํ™•์žฅ์„ฑ ํ™•๋ณด
    • ์™ธ๋ถ€ API ์—ฐ๋™ ๋ฐ ์žฅ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ์ž‘์—… ๋ถ„๋ฆฌ ์ˆ˜ํ–‰
  • Data Layer

    • ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ž์ฒด DB๋ฅผ ์†Œ์œ ํ•˜๋Š” DB ๋ถ„๋ฆฌ ์›์น™ ์ ์šฉ
    • ์„œ๋น„์Šค ํŠน์„ฑ์— ๋”ฐ๋ผ ์„ ํƒ
  • Infrastructure Layer

    • Kubernetes ๊ธฐ๋ฐ˜ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ๋ฐ ์ž๋™ ๋ฐฐํฌ
    • CI/CD ํŒŒ์ดํ”„๋ผ์ธ์œผ๋กœ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ์ž๋™ํ™”

โœ… ํ™•์žฅ ๊ณ ๋ ค ์‚ฌํ•ญ

  • ์„œ๋น„์Šค ํ™•์žฅ

    • B2C ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (๋งค์žฅ ๊ฒ€์ƒ‰, ์ƒํ’ˆ ์ฃผ๋ฌธ, ๋ฆฌ๋ทฐ ๋“ฑ)
  • ์ธํ”„๋ผ ํ™•์žฅ

    • Oracle Cloud์—์„œ K8s, LB, Auto Scaling
    • AI ์—ฐ์‚ฐ์„ Kafka/Redis Queue๋กœ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • ์ถ”์ฒœ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ Redis ์บ์‹ฑ ๋„์ž…
    • Prometheus, Grafana ๋“ฑ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„์ž…
  • AI ๊ธฐ๋Šฅ ํ™•์žฅ

    • ์‚ฌ์šฉ์ž ํ–‰๋™ ๊ธฐ๋ฐ˜ ์ธ์‚ฌ์ดํŠธ ์ œ๊ณต
    • ๋งค์ถœ ํŒจํ„ด ๊ธฐ๋ฐ˜ ์‹ ์ƒํ’ˆ ์ถ”์ฒœ
  • ํ…Œ๋„Œ์‹œ ๋ชจ๋ธ ํ™•์žฅ

    • ํ–ฅํ›„ ํ”„๋žœ์ฐจ์ด์ฆˆ, ๋ณต์ˆ˜ ๋งค์žฅ ์šด์˜์ž๋ฅผ Hybrid ๋˜๋Š” Single-tenancy ๊ตฌ์กฐ ๊ณ ๋ ค
โš ๏ธ **GitHub.com Fallback** โš ๏ธ