본문으로 건너뛰기
Advertisement

17.1 요구사항 분석 및 계층형 아키텍처 조립

이 챕터는 이전까지 배운 모든 기술 스택(Spring MVC, JPA, Security, Redis, 테스팅)을 통합한 소규모 실전 프로젝트를 함께 구조화합니다.

1. 미니 프로젝트: 간단한 할일(Todo) API 서버

기능 요구사항

  • 회원 가입 / 로그인 (JWT 인증)
  • 할일 목록 CRUD (자신의 할일만 조회/수정/삭제 가능)
  • 할일 완료 통계 API (오늘 완료된 개수)
  • 레디스 캐싱으로 통계 1분마다 갱신

패키지 구조 (계층형 아키텍처)

com.example.todo
├── domain/
│ ├── user/
│ │ ├── User.java (Entity)
│ │ ├── UserRepository.java
│ │ ├── UserService.java
│ │ └── UserController.java
│ └── todo/
│ ├── Todo.java (Entity)
│ ├── TodoRepository.java
│ ├── TodoService.java
│ └── TodoController.java
├── global/
│ ├── config/
│ │ ├── SecurityConfig.java
│ │ └── RedisConfig.java
│ ├── exception/
│ │ ├── GlobalExceptionHandler.java
│ │ └── ErrorCode.java
│ └── auth/
│ ├── JwtProvider.java
│ └── JwtFilter.java
└── TodoApplication.java

2. 의존성 조립 (build.gradle)

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'io.jsonwebtoken:jjwt-api:0.12.6'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.6'
runtimeOnly 'com.mysql:mysql-connector-j'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.boot:spring-boot-testcontainers'
testImplementation 'org.testcontainers:mysql'
}
Advertisement