Skip to content

Commit 09fe6cd

Browse files
committed
Init: initial Commit
0 parents  commit 09fe6cd

File tree

11 files changed

+566
-0
lines changed

11 files changed

+566
-0
lines changed

.gitignore

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
HELP.md
2+
.gradle
3+
build/
4+
!gradle/wrapper/gradle-wrapper.jar
5+
!**/src/main/**/build/
6+
!**/src/test/**/build/
7+
8+
### STS ###
9+
.apt_generated
10+
.classpath
11+
.factorypath
12+
.project
13+
.settings
14+
.springBeans
15+
.sts4-cache
16+
bin/
17+
!**/src/main/**/bin/
18+
!**/src/test/**/bin/
19+
20+
### IntelliJ IDEA ###
21+
.idea
22+
*.iws
23+
*.iml
24+
*.ipr
25+
out/
26+
!**/src/main/**/out/
27+
!**/src/test/**/out/
28+
29+
### NetBeans ###
30+
/nbproject/private/
31+
/nbbuild/
32+
/dist/
33+
/nbdist/
34+
/.nb-gradle/
35+
36+
### VS Code ###
37+
.vscode/
38+
39+
### Kotlin ###
40+
.kotlin

MileStone.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
### **시나리오 선정 및 프로젝트 Milestone (3주간 진행)**
2+
3+
#### **프로젝트 목표: 콘서트 예약 서비스 구현**
4+
**주요 기능:**
5+
1. 유저 토큰 발급 API
6+
2. 예약 가능 날짜/좌석 조회 API
7+
3. 좌석 예약 요청 API
8+
4. 잔액 충전/조회 API
9+
5. 결제 API
10+
6. 동시성 제어 및 대기열 관리
11+
12+
---
13+
14+
### **1주차: 요구사항 분석 및 기본 기능 구현**
15+
16+
**목표:**
17+
- 시스템 요구사항 분석 및 클린 아키텍처 설계 완료
18+
- ERD 설계 및 기본 패키지 구조 설계
19+
- 유저 토큰 발급 및 잔액 충전/조회 API 구현
20+
- 유닛 테스트 작성 및 검증
21+
22+
**세부 계획:**
23+
- **Day 1-2:**
24+
- 요구사항 분석 및 프로젝트 구조 설계 (클린 + 레이어드 아키텍처)
25+
- ERD 설계 및 API 명세 정리
26+
- Milestone 제출
27+
- **Day 3-5:**
28+
- 유저 토큰 발급 API 구현 및 유닛 테스트
29+
- 잔액 충전 및 조회 API 구현
30+
- **Day 6-7:**
31+
- 테스트 코드 작성 (유닛 테스트)
32+
- 1주차 회고 및 코드 리뷰
33+
34+
**결과물:**
35+
- 프로젝트 구조 설계 완료
36+
- 유저 토큰 발급, 잔액 충전 및 조회 API 구현
37+
- 유닛 테스트 통과
38+
39+
---
40+
41+
### **2주차: 좌석 예약 및 대기열 시스템 구현**
42+
43+
**목표:**
44+
- 예약 가능 날짜 및 좌석 조회 API 구현
45+
- 좌석 예약 API 구현
46+
- 대기열 시스템 구축 및 동시성 제어 로직 구현
47+
- 통합 테스트 작성
48+
49+
**세부 계획:**
50+
- **Day 1-3:**
51+
- 예약 가능 날짜 조회 API 및 좌석 조회 API 구현
52+
- 좌석 예약 요청 API 구현
53+
- **Day 4-5:**
54+
- 대기열 시스템 구축 (동시성 제어)
55+
- 비관적 락(Pessimistic Lock), 긍정적 락 중 어떤 것을 사용할 지 더 생각해보고, 대기열 시스템을 활용한 예약 처리
56+
- **Day 6-7:**
57+
- 통합 테스트 작성 (좌석 예약 및 동시성 제어 검증)
58+
- 코드 리뷰 및 리팩토링
59+
60+
**결과물:**
61+
- 예약 가능 날짜/좌석 조회 및 좌석 예약 API 구현
62+
- 대기열 시스템을 적용한 동시성 제어 로직 구현
63+
- 통합 테스트 통과
64+
65+
---
66+
67+
### **3주차: 결제 시스템 구현 및 최종 통합 테스트**
68+
69+
**목표:**
70+
- 결제 API 구현
71+
- 좌석 예약 및 결제 통합 테스트
72+
- 코드 리팩토링 및 최종 배포
73+
74+
**세부 계획:**
75+
- **Day 1-2:**
76+
- 결제 API 구현 및 결제 로직 처리
77+
- **Day 3-4:**
78+
- 좌석 예약 및 결제 연동 통합 테스트
79+
- 대기열 및 좌석 상태 업데이트 로직 테스트
80+
- **Day 5-6:**
81+
- 코드 리팩토링 및 최적화
82+
- 최종 프로젝트 배포 준비
83+
- **Day 7:**
84+
- 프로젝트 회고 및 최종 결과물 제출
85+
86+
**결과물:**
87+
- 결제 API 구현 완료
88+
- 좌석 예약 및 결제 통합 테스트 완료
89+
- 프로젝트 최종 배포
90+
91+
---

build.gradle.kts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
plugins {
2+
kotlin("jvm") version "1.9.25"
3+
kotlin("plugin.spring") version "1.9.25"
4+
id("org.springframework.boot") version "3.3.4"
5+
id("io.spring.dependency-management") version "1.1.6"
6+
}
7+
8+
group = "io.hhplus"
9+
version = "0.0.1-SNAPSHOT"
10+
11+
java {
12+
toolchain {
13+
languageVersion = JavaLanguageVersion.of(17)
14+
}
15+
}
16+
17+
repositories {
18+
mavenCentral()
19+
}
20+
21+
dependencies {
22+
implementation("org.springframework.boot:spring-boot-starter")
23+
implementation("org.jetbrains.kotlin:kotlin-reflect")
24+
testImplementation("org.springframework.boot:spring-boot-starter-test")
25+
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
26+
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
27+
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
28+
implementation("org.springframework.boot:spring-boot-starter-web")
29+
implementation("org.springframework.boot:spring-boot-starter-web-services")
30+
developmentOnly("org.springframework.boot:spring-boot-devtools")
31+
testImplementation("org.springframework.boot:spring-boot-starter-test")
32+
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
33+
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
34+
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
35+
implementation("org.springframework.boot:spring-boot-starter-web")
36+
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
37+
implementation("org.jetbrains.kotlin:kotlin-reflect")
38+
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0")
39+
runtimeOnly("com.h2database:h2")
40+
testImplementation("org.springframework.boot:spring-boot-starter-test")
41+
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
42+
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
43+
44+
//postgresql
45+
implementation("org.postgresql:postgresql")
46+
}
47+
48+
kotlin {
49+
compilerOptions {
50+
freeCompilerArgs.addAll("-Xjsr305=strict")
51+
}
52+
}
53+
54+
tasks.withType<Test> {
55+
useJUnitPlatform()
56+
}

gradle/wrapper/gradle-wrapper.jar

42.6 KB
Binary file not shown.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
4+
networkTimeout=10000
5+
validateDistributionUrl=true
6+
zipStoreBase=GRADLE_USER_HOME
7+
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)