Skip to content

Architecture

Sechang Jang edited this page Feb 20, 2026 · 2 revisions

Backend

스크린샷 2025-06-06 130524

시스템 구성도

graph TD
    subgraph Client["클라이언트"]
        FE["Next.js 프론트엔드"]
        DEV["개발자 / k6 부하 테스트"]
    end

    subgraph Infra["인프라 레이어 (Docker Compose)"]
        NGINX["Nginx\nReverse Proxy\nRate Limiting (100 req/s)"]

        subgraph Spring["Spring Boot (web 모듈)"]
            SEC["Security Filter Chain (JWT 검증)"]
            CTRL["Controller"]
            FACADE["FacadeService"]
            QS["QueryService"]
            CS["CommandService"]
        end

        PG["PostgreSQL"]

        subgraph Monitor["모니터링"]
            PROM["Prometheus"]
            GRAF["Grafana"]
        end
    end

    FE -->|HTTPS| NGINX
    DEV -->|HTTP| NGINX
    NGINX --> SEC --> CTRL --> FACADE
    FACADE --> QS & CS
    QS & CS --> PG
    Spring -->|Actuator /metrics| PROM --> GRAF
Loading

기술 스택

백엔드

분류 기술
Language / Framework Java 21, Spring Boot 3.3.5
아키텍처 멀티모듈 Gradle (web / domain / user / jpa-common)
ORM / Query Spring Data JPA, QueryDSL
Database PostgreSQL
Security Spring Security, JWT (RSA RS256 / RS512)
Build Gradle
Infra Docker Compose, Nginx
Monitoring Prometheus, Grafana, Spring Actuator + Micrometer
Performance Test k6
CI/CD GitHub Actions
Documentation SpringDoc OpenAPI (Swagger)

프론트엔드

분류 기술
Framework Next.js 15, React 19, TypeScript
UI shadcn/ui (Tailwind CSS)
상태 관리 Zustand, iron-session

멀티모듈 구조

timefit-back/
├── jpa-common/   ← 공통 JPA 기반 (BaseEntity, QueryDSL 설정)
├── user/         ← User 엔티티 + RefreshToken 엔티티
├── domain/       ← 핵심 비즈니스 도메인 엔티티
└── web/          ← HTTP 레이어 (Controller, Service, Security)

의존성은 단방향으로만 흐릅니다: jpa-common → user → domain → web

자세한 내용: 멀티모듈 Gradle 설계

Clone this wiki locally