Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
156c443
Init module
LIFIC-JAMES Jan 11, 2025
ebc22ed
Implementing movie search code
LIFIC-JAMES Jan 11, 2025
80eb082
Add readme
LIFIC-JAMES Jan 11, 2025
63da73e
refactor: update project structure and docker configuration
sina-log Jan 18, 2025
584d570
feat: add seat entity and related configurations
sina-log Jan 18, 2025
eeaa018
feat: add DDL for all entities
sina-log Jan 18, 2025
193d7e2
refactor: remove duplicate fields from entities that extend BaseEntity
sina-log Jan 18, 2025
d94db02
feat: add BaseEntity create, update fields to all tables in ddl.sql
LIFIC-JAMES Jan 19, 2025
c50d12e
fix: remove duplicate fields and add foreign key constraints in ddl.sql
sina-log Jan 19, 2025
55847fe
refactor: remove foreign key constraints from ddl.sql
sina-log Jan 19, 2025
d9fb562
refactor: simplify package scanning with wildcard in ApiApplication
sina-log Jan 19, 2025
059a02d
feat: add sample data to ddl.sql
sina-log Jan 19, 2025
d73ce43
fix: replace asterisk with explicit common columns in ddl.sql
sina-log Jan 19, 2025
64f8161
fix: add character encoding configuration
sina-log Jan 19, 2025
2b3ca82
refactor: remove unnecessary HelloController
sina-log Jan 19, 2025
4f074bd
fix: handle null startAt in Schedule
sina-log Jan 19, 2025
1fa8767
fix: handle null releaseDate in Movie
sina-log Jan 19, 2025
692e195
chore: improve application configuration and build settings
sina-log Jan 19, 2025
120a9e3
refactor: remove movie prefix from module names
sina-log Jan 19, 2025
8035a3c
refactor: remove EntityGraph and use JOIN FETCH for Schedule queries
sina-log Jan 19, 2025
a31de4f
chore: add k6 performance test script
sina-log Jan 19, 2025
db41dc3
feat: apply projection pattern for movie query api
sina-log Jan 19, 2025
258959a
chore: add k6 performance test script
sina-log Jan 19, 2025
4a73a75
feat: add search functionality with validation
sina-log Jan 19, 2025
6384942
feat: Implement movie search API with schedule information
sina-log Jan 19, 2025
18489cf
fix: Redis 직렬화 문제 해결 - MovieResponseDto Serializable 구현, 생성자 및 기본값 설정
sina-log Jan 19, 2025
1f0308f
docs: k6 성능 테스트 결과 추가
sina-log Jan 19, 2025
8c9e34b
chore: gitignore에 QClass 파일 제외 설정 추가
sina-log Jan 27, 2025
ed5d777
refactor: 엔티티 연관관계 및 FK 제약조건 제거
sina-log Jan 27, 2025
c22b5f9
fix: Redis 직렬화 문제 해결 - MovieResponseDto Serializable 구현, 생성자 및 기본값 설정
sina-log Jan 27, 2025
3d04f2f
refactor: QueryDSL을 사용하여 스케줄 조회 구현 - JOIN FETCH 제거
sina-log Jan 27, 2025
9ba4f4e
feat: Add Schedule entity and repository with Movie and Theater relat…
sina-log Jan 27, 2025
6185376
feat: Add basic entities and relationships for reservation system
sina-log Jan 27, 2025
64b4eae
refactor: Remove entity relationships and use IDs instead
sina-log Jan 27, 2025
b1503f7
feat: Add distributed lock using Redisson
sina-log Jan 27, 2025
e03c857
fix: 데이터베이스 초기화 스크립트 수정 및 외래키 제약조건 문제 해결
sina-log Jan 27, 2025
4e5bdd6
feat: QueryDSL 적용 및 @Query 제거
sina-log Jan 27, 2025
0c5671f
feat: 분산 락(Distributed Lock) 구현
sina-log Jan 27, 2025
48b8ef0
test: 예매 시스템 테스트 구현
sina-log Jan 27, 2025
177aa5e
feat: 예외 처리 개선
sina-log Jan 27, 2025
abe1a48
feat: API 응답 형식 표준화 및 Swagger 문서화
sina-log Jan 27, 2025
d671748
feat: 성능 최적화 (N+1 문제 해결 및 캐시 적용)
sina-log Jan 27, 2025
1621a84
feat: 로깅 및 모니터링 구현
sina-log Jan 27, 2025
740799f
docs: README 업데이트 - 3주차 요구사항 추가
sina-log Jan 27, 2025
4d48bb8
feat: Implement IP-based RateLimit for Movie API
sina-log Feb 3, 2025
8b307a9
feat: Add time-based RateLimit for Reservation API
sina-log Feb 3, 2025
bba63d4
feat: Add unified API response format with error codes
sina-log Feb 3, 2025
cf8e431
test: Add unit tests for RateLimitService
sina-log Feb 3, 2025
5823b43
test: Add unit tests for ReservationRateLimitService
sina-log Feb 3, 2025
5d1dcc3
test: Add integration tests for Movie and Reservation API RateLimit
sina-log Feb 3, 2025
b443b2c
test: Add test coverage for RateLimit and ApiResponse
sina-log Feb 3, 2025
148fec2
fix: Movie 엔티티 컬럼 매핑 수정 및 테스트 설정 개선
sina-log Feb 4, 2025
97bfd0f
feat: Configure Docker environment with MySQL, Redis and fix schema.sql
sina-log Feb 4, 2025
efe440c
fix: Change Seat entity rowNumber field type to String
sina-log Feb 4, 2025
34ee5ce
feat: Add standardized API response format and exception handling
sina-log Feb 4, 2025
a9dd27d
feat: Implement single-server rate limiting using Google Guava
sina-log Feb 4, 2025
9915138
feat: Implement distributed rate limiting using Redis and Redisson
sina-log Feb 4, 2025
a43c1ba
chore: Configure test environment with JaCoCo and test fixtures
sina-log Feb 4, 2025
5dec7cc
test: Add comprehensive test coverage for controllers, services and r…
sina-log Feb 4, 2025
62916d2
refactor: Improve rate limiting implementation with interface abstrac…
sina-log Feb 4, 2025
a809cf3
refactor: Improve test code structure with base integration test class
sina-log Feb 4, 2025
f2953fd
refactor: Improve exception handling with business exception hierarchy
sina-log Feb 4, 2025
d03b26f
test: Add unit tests for rate limiting components
sina-log Feb 4, 2025
c8a58d7
refactor: Improve module structure with common module
sina-log Feb 4, 2025
db929af
refactor: Move rate limiting tests to common module
sina-log Feb 4, 2025
5762cec
test: Temporarily disable ReservationRepositoryTest
sina-log Feb 4, 2025
6da3799
feat: Add RateLimit implementation and consistent response format
sina-log Feb 4, 2025
397e132
refactor: RateLimit 관련 모듈 구조 개선 - RateLimitService 인터페이스를 common 모듈로 …
sina-log Feb 4, 2025
233eaa1
docs: Rate Limit 구현 내용과 JaCoCo 테스트 커버리지 리포트 추가
sina-log Feb 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 0 additions & 39 deletions .github/labeler-config.yml

This file was deleted.

42 changes: 0 additions & 42 deletions .github/pull_request_template.md

This file was deleted.

28 changes: 0 additions & 28 deletions .github/workflows/Auto_PR_Labeler.yml

This file was deleted.

37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
HELP.md
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/
39 changes: 36 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,36 @@
## [본 과정] 이커머스 핵심 프로세스 구현
[단기 스킬업 Redis 교육 과정](https://hh-skillup.oopy.io/) 을 통해 상품 조회 및 주문 과정을 구현하며 현업에서 발생하는 문제를 Redis의 핵심 기술을 통해 해결합니다.
> Indexing, Caching을 통한 성능 개선 / 단계별 락 구현을 통한 동시성 이슈 해결 (낙관적/비관적 락, 분산락 등)
## [1주차] 멀티 모듈 구성 및 요구사항 구현
## 내용
### Doamin
- Movie
- Long id PK
- String title
- String grade
- String genre
- Integer runningTime
- Date releaseDate
- String thumbnailUrl
- Theater
- Long id PK
- String name
- Schedule
- Long id PK
- DateTime startTime
- DateTime endTime
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

좌석 테이블이 미반영된 것 같습니다.



### 멀티모듈 구성
- api : 외부 통신 레이어
- application : 서비스 레이어
- domain : 도메인 레이어
- infra : 인프라 레이어
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Layered 형식으로 모듈을 잘 구성 해주셨네요 ! 다만, application 과 api 모듈이 별도로 구분되어야 하는지는 추가적인 고민이 필요해 보입니다.

api 모듈에는 Controller 가 존재하고, application 모듈에는 dto 가 존재하는데, 사실 이 둘은 같은 Layer 에 포함되어야 하는 성격이라고 생각됩니다. 즉, 계층을 많이 추가하는 경우 응집성 이 떨어질 수 있다는 단점이 있습니다.


### 발생했던 문제와 해결 과정을 남겨 주세요.
- 멀티모듈 구성에 의존성 오류에서 좀 애를 먹었습니다.
- 개인적인 시간이 없는 이슈가 가능 문제 였습니다. 다음주 부턴 시간확보를 더 많이 해보겠습니다.

### 리뷰 포인트
- 도메인 분리가 잘 되었는지 궁금 합니다.
- 도메인들이 JPA 연관관계를 잘 맺었는지랑 꼭 맺어야 하는지 궁금합니다 (그냥 필요할 때마다 조회를 따로하는건 안되는지 궁금합니다.)



24 changes: 24 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.0' apply false
id 'io.spring.dependency-management' version '1.1.0' apply false
}

subprojects {
apply plugin: 'java'
sourceCompatibility = '17'

repositories {
mavenCentral()
}

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.2'
}

tasks.withType(Test).tap {
configureEach {
useJUnitPlatform()
}
}
}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
7 changes: 7 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Loading
Loading