Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
1aff1e5
feat: 회원가입 Rate Limiting 추가 (#357)
weilim0513-tech Dec 29, 2025
d8fcc48
feat: 회원 가입 감사 로그 구현 (#369)
weilim0513-tech Dec 30, 2025
29c6e8b
feat: 좌석 추첨 구현 (#358)
77r77r Dec 30, 2025
ec527ad
feat: 신청 예매 도메인 추가 (#340)
minibr Dec 30, 2025
2281e83
refactor: 피드백 반영 및 예매용좌석 도입 (#367)
whyin Dec 30, 2025
32aebc5
feat: Redis Cluster 도입 및 대기열 시스템 API 구현 (#377)
Chehyeon-Kim23 Dec 31, 2025
23e1ca3
refactor: 예매 로직 정리 (#380)
whyin Dec 31, 2025
b8dda41
Fix: redis 테스트 환경 관련 수정 (#384)
Chehyeon-Kim23 Dec 31, 2025
9440760
Fix/#385 queue (#386)
Chehyeon-Kim23 Dec 31, 2025
842a4a7
수정 (#387)
Chehyeon-Kim23 Dec 31, 2025
a17d7e6
feat: 신청예매/결제 구현 (#375)
minibr Jan 1, 2026
f2e445c
refactor: prereservation 도메인 분리 (#388)
minibr Jan 1, 2026
9c2f68b
feat: 당첨자 결제 안내 메일 발송 로직 구현 (#348)
77r77r Jan 1, 2026
b2c70ad
feat: 추첨 예매 구현 (#389)
whyin Jan 2, 2026
7e89396
feat: 신청예매 초기 데이터 추가 (#394)
minibr Jan 2, 2026
3955d8b
Feat:공연 등록 API 구 (#396)
Chehyeon-Kim23 Jan 2, 2026
eda5a56
fix:permitAll actuator health to resolve 401 healthcheck (#397)
Chehyeon-Kim23 Jan 2, 2026
9ea8562
Fix/actuator health permit (#398)
Chehyeon-Kim23 Jan 2, 2026
46d34f1
Feat/fix test (#399)
Chehyeon-Kim23 Jan 2, 2026
fafff39
Fix:서버 오류 수정 (#401)
Chehyeon-Kim23 Jan 2, 2026
357492b
fix:스웨거 CORS 오류 수정 (#405)
Chehyeon-Kim23 Jan 2, 2026
839131d
refactor: 결재 로직 변경 (#403)
minibr Jan 2, 2026
42a80bd
feat: lottery 도메인 결재 연동 (#299)
minibr Jan 2, 2026
8dc6326
chore: redeploy for kakao redirect uri update (#410)
weilim0513-tech Jan 3, 2026
dfc6fd7
Feat:S3 이미지 업로드 기능 구현 (#412)
Chehyeon-Kim23 Jan 3, 2026
6baca1d
fix:healthcheck 오류 슈수정 (#414)
Chehyeon-Kim23 Jan 3, 2026
dd5404b
feat: 좌석 추첨 및 예매연결 (#268)
77r77r Jan 3, 2026
99442cb
fix:워크플로우 수정 (#421)
Chehyeon-Kim23 Jan 3, 2026
3a99c82
chore: trigger redeploy (#424)
weilim0513-tech Jan 4, 2026
a41b343
chore: trigger redeploy (#425)
weilim0513-tech Jan 4, 2026
4a6ab89
feat: 좌석 배정 티켓 생성 완료 (#331)
77r77r Jan 4, 2026
df5c3f9
feat: 양도 가격 검증 추가 (#422)
minibr Jan 4, 2026
59901f3
refactor: 테스트 코드 추가 및 코드 정리 (#419)
whyin Jan 4, 2026
a941db4
feat: 신청예매 initdate 추가 (#428)
minibr Jan 4, 2026
a0b174c
test: 사전신청 전체 조회 테스트 추가 (#431)
minibr Jan 4, 2026
2b721f1
feat: 관리자 기능 API MVP 단계 구현 (#427)
weilim0513-tech Jan 4, 2026
0ca6ba2
feat: Credential Stuffing / Brute Force 탐지 구현 (#437)
weilim0513-tech Jan 4, 2026
7cfe659
feat: 관리자 예매 조회 (#429)
whyin Jan 4, 2026
2b59884
feat: Slack 알림 기능 구현 (#439)
weilim0513-tech Jan 5, 2026
371854b
Refactor:대기열 로직 변경 (#444)
Chehyeon-Kim23 Jan 5, 2026
be18cd2
refactor: 양도 가격 초과 검증 전용 에러코드 추가 (#447)
minibr Jan 5, 2026
704f6cc
refactor: api HTTP 메서드 타입 변경 (#450)
weilim0513-tech Jan 5, 2026
f4d51c1
feat:대기열 자동 생성 (#454)
Chehyeon-Kim23 Jan 5, 2026
d3f8e3e
refactor: 예매 상태 관련 로직 수정 (#452)
whyin Jan 5, 2026
2c64599
refactor:Circuit Breaker 적용 (#460)
Chehyeon-Kim23 Jan 5, 2026
e235642
Refactor/#458 queue reopen (#462)
Chehyeon-Kim23 Jan 5, 2026
fa51d8b
Redeploy to apply Doppler changes (#463)
Chehyeon-Kim23 Jan 5, 2026
43f8177
fix:S3 환경변수 추가 (#466)
Chehyeon-Kim23 Jan 5, 2026
0d40b2a
feat: 사전예매 initdata 추가 (#461)
minibr Jan 5, 2026
f958e5a
feat: 신청예매 공연 자동 재생성 (#461)
minibr Jan 5, 2026
01c45ae
feat: testdata 추가
minibr Jan 5, 2026
bb7f6d0
fix: 신청예매 initdata 재시드 (#473)
minibr Jan 5, 2026
8d445f1
fix: 신청예매 타임테이블 중복 조회 안정화 (#475)
minibr Jan 5, 2026
fc26ebe
test: 추첨 예매 데이터 추가 (#470)
77r77r Jan 5, 2026
1d92a48
feat: 예매 시 대기열 검증 로직 추가 (#476)
whyin Jan 6, 2026
6493547
fix: 신청예매 시간제약 완화 (#482)
minibr Jan 6, 2026
272932c
feat: 신청예매 슬롯 확장 (#483)
minibr Jan 6, 2026
5817b76
refactor: 응모 정보 - 가격 정보 추가 (#480)
77r77r Jan 6, 2026
0f0b208
feat: 신청예매 연동 테스트 지원 (#485)
minibr Jan 6, 2026
6b51714
refactor: 구역-등급 가격 정보 추가 (#484)
77r77r Jan 6, 2026
d8f6070
fix: 신청예매 hold 오류 수정 (#489)
minibr Jan 6, 2026
78649bb
refactor:공연 예매 방식 조회 (#491)
Chehyeon-Kim23 Jan 6, 2026
7bf3eb2
fix: 신청예매 좌석ID 처리 보완 (#494)
minibr Jan 6, 2026
5452a02
feat: PAID 결제 상태 추가 (#488)
77r77r Jan 6, 2026
99035c6
feat: Prometheus & Grafana 모니터링 최초 환경 구축 (#456)
weilim0513-tech Jan 6, 2026
6aa445a
Fix/#496 performnace (#498)
Chehyeon-Kim23 Jan 6, 2026
744067d
fix: 신청예매 booking 만료 정리 (#499)
minibr Jan 6, 2026
e196436
fix: 신청예매 예매내역 상세보기 문제 수정 (#500)
minibr Jan 6, 2026
ccb10cb
tset: 추첨 좌석 배치 데이터 추가 (#497)
77r77r Jan 6, 2026
524d3d4
fix: 신청예매 티켓/좌석 조회 보완 (#501)
minibr Jan 6, 2026
f697244
bug: 추첨 응모 중복 조회 수정 (#493)
77r77r Jan 6, 2026
80ffc41
feat: 티켓 획득 경로 구분 추가 (#503)
minibr Jan 6, 2026
f5769f5
feat: 당첨 취소 구현 (#441)
77r77r Jan 6, 2026
5f622a5
feat: 공연 추가 로직 구현 (#508)
whyin Jan 6, 2026
9b6c27e
Add technology stack section to README
Chehyeon-Kim23 Jan 7, 2026
e3340bc
임시
Chehyeon-Kim23 Jan 7, 2026
e91d20f
refactor: SecureRandom 사용 (#511)
77r77r Jan 7, 2026
a86dc53
feat: transfer testdata 추가 (#513)
minibr Jan 7, 2026
4f93480
feat: 교환 필드 수정 (#516)
minibr Jan 7, 2026
394905a
test: 테스트용 임시 코드 설정 (#506)
77r77r Jan 7, 2026
c0f7945
Fix:인스턴스 타입 수정 (#519)
Chehyeon-Kim23 Jan 7, 2026
1ce14e4
fix: 누락파일 (#520)
77r77r Jan 7, 2026
e2312ea
fix: ... (#522)
Chehyeon-Kim23 Jan 7, 2026
323abd9
chore: remove .env from tracking
weilim0513-tech Jan 7, 2026
f0e9fc0
chore: trigger deploy
weilim0513-tech Jan 7, 2026
128bd9d
chore: remove git-rewrite backup files
weilim0513-tech Jan 7, 2026
a96a35c
Update docker-compose.yml (#524)
Chehyeon-Kim23 Jan 8, 2026
9da9ea7
refactor: 모니터링 대시보드 json 폴더 구분
weilim0513-tech Jan 10, 2026
a3caea7
refactor: 대시보드 쿼리 파일 정리 (#527)
weilim0513-tech Jan 10, 2026
05ce3a8
refactor: monitoring 설정 파일 구조 개선 (#527)
weilim0513-tech Jan 10, 2026
2c188f8
배포배포문제수정 (#531)
Chehyeon-Kim23 Jan 10, 2026
4408394
fix: 배포 관련 수정
Chehyeon-Kim23 Jan 10, 2026
77b5df0
fix: 배포 관련 수정 (#532)
Chehyeon-Kim23 Jan 10, 2026
0a5a695
feat: 신청예매(사전신청) 운영 반영 (#529)
minibr Jan 10, 2026
d67a09e
feat: 공연 목록 종료 공연 필터링 (#453)
minibr Jan 10, 2026
fc55fdc
도플러 주입 방식 변경 (#535)
Chehyeon-Kim23 Jan 10, 2026
a06c171
Fix/dockerfile parse (#536)
Chehyeon-Kim23 Jan 10, 2026
5e2a132
chore:배포 md 작성 및 최적화 (#538)
Chehyeon-Kim23 Jan 10, 2026
e2488cf
fix: 프로메테우스 v3 오탈자 수정 (#539)
weilim0513-tech Jan 10, 2026
9a8797b
Hotfix (#541)
Chehyeon-Kim23 Jan 10, 2026
8300e78
chore: redeploy with correct deploy.yml
Chehyeon-Kim23 Jan 10, 2026
4d1aa22
핫픽스 (#542)
Chehyeon-Kim23 Jan 10, 2026
e097175
chore: redeploy with new doppler token
Chehyeon-Kim23 Jan 10, 2026
f157570
chore: redeploy with new doppler token (#543)
Chehyeon-Kim23 Jan 10, 2026
d397e2c
환경변수 노출 위험 수정 (#544)
Chehyeon-Kim23 Jan 10, 2026
507c339
chore: 슬랙 웹 훅 URL 값을 도플러로 분리, alertmanager 리포지토리 등록 (#539)
weilim0513-tech Jan 10, 2026
b2c48d2
환경변수 노출 위험 수정 (#546)
Chehyeon-Kim23 Jan 10, 2026
1a9adb4
수정 (#547)
Chehyeon-Kim23 Jan 10, 2026
8aa6b5a
환경변수 추가 (#548)
Chehyeon-Kim23 Jan 10, 2026
1d36710
ãpordrod강제설정 (#549)
Chehyeon-Kim23 Jan 10, 2026
4e5a646
chore: docker-compose.yml에 슬랙 웹훅 environment 설정 (#539)
weilim0513-tech Jan 10, 2026
5411322
fix: deploy 스크립트 오탈자 수정 (#539)
weilim0513-tech Jan 10, 2026
a8bcfe2
환경변수 매칭 (#552)
Chehyeon-Kim23 Jan 10, 2026
aef0080
application.yml 수정 (#553)
Chehyeon-Kim23 Jan 10, 2026
95aea51
chore: redis-exporter 헬스체크 수정 (#539)
weilim0513-tech Jan 10, 2026
275e75d
fix: redis_exporter 헬스체크 제거 (#539)
weilim0513-tech Jan 10, 2026
906134a
ãssm ìŠ스크립트 수정 (#556)
Chehyeon-Kim23 Jan 10, 2026
050ad91
refactor: migrate GitHub token to Doppler (#557)
Chehyeon-Kim23 Jan 10, 2026
c4ed286
feat: 공연 삭제 연관 데이터 메서드 추가 (#559)
minibr Jan 11, 2026
1d4cab0
fix: 공연 삭제 api 수정 (#558)
minibr Jan 11, 2026
33a6ae3
docs: README.md 업데이트
minibr Jan 12, 2026
63a1968
docs: README.md 업데이트
minibr Jan 12, 2026
aed6d1f
docs: README 섹션 추가 및 구현 기능 상세화, 구조도 삽입
weilim0513-tech Jan 12, 2026
e8db2ec
update README
weilim0513-tech Jan 12, 2026
d1b7f8d
Update README to reflect changes in project structure
weilim0513-tech Jan 12, 2026
c4bad31
Update README with project overview section
weilim0513-tech Jan 12, 2026
ee9b575
fix: 신청예매 타임테이블 자동 생성 (#562)
minibr Jan 12, 2026
70eb5b6
docs: README.md 업데이트
minibr Jan 12, 2026
8e05451
fix: 추첨예매 결제 후 예매 생성 수정 (#565)
minibr Jan 12, 2026
121c957
fix: 내 티켓 조회/발급 보정 (#566)
minibr Jan 12, 2026
7b891a3
Update README.md (#568)
Chehyeon-Kim23 Feb 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
57 changes: 57 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Git 관련
.git
.gitignore
.gitattributes

# IDE 설정
.idea
.vscode
*.iml
*.ipr
*.iws

# Gradle 빌드 캐시 (builder 단계에서 새로 생성)
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar

# 테스트 관련
**/test/resources/test-data/

# 문서
*.md
README*
docs/
LICENSE

# CI/CD
.github/
.gitlab-ci.yml
Jenkinsfile

# 환경 변수 (절대 포함되면 안됨)
.env
.env.*
doppler.env
*.env

# Docker 관련
docker/
docker-compose*.yml
Dockerfile*
.dockerignore

# 로그
logs/
*.log

# OS 파일
.DS_Store
Thumbs.db

# 기타
node_modules/
bin/
out/
tmp/
temp/
9 changes: 0 additions & 9 deletions .github/workflows/backend-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,6 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-

- name: 🗂️ Make application-test.yml
run: |
mkdir -p ./src/main/resources

echo "${{ secrets.APPLICATION_TEST_YML }}" > src/main/resources/application-test.yml
# Queue 시스템 비활성화 (CI 테스트용)
echo "" >> src/main/resources/application-test.yml
echo "queue:" >> src/main/resources/application-test.yml
echo " enabled: false" >> src/main/resources/application-test.yml
- name: ✨ Gradlew 권한 설정
run: chmod +x ./gradlew

Expand Down
97 changes: 57 additions & 40 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,18 @@ on:
paths:
- ".github/workflows/**"
- "src/**"
- "build.gradle"
- "settings.gradle"
- "build.gradle.kts"
- "settings.gradle.kts"
- "gradle/**"
- "gradlew"
- "gradlew.bat"
- "Dockerfile"
- "docker/**"
branches:
- develop

# 권한 최소화/명시화
permissions:
contents: write
packages: write
Expand Down Expand Up @@ -65,8 +70,7 @@ jobs:
- name: set lower case owner name
id: export_owner
run: |
# OWNER_LC="${GITHUB_REPOSITORY_OWNER,,}"
OWNER_LC="chehyeon-kim23" # 본인 아이디를 소문자로 직접 입력
OWNER_LC="chehyeon-kim23"
echo "owner_lc=$OWNER_LC" >> $GITHUB_OUTPUT

- name: export image name
Expand All @@ -78,14 +82,11 @@ jobs:
with:
context: .
push: true
build-args: |
DOPPLER_TOKEN=${{ secrets.DOPPLER_TOKEN }}
cache-from: type=registry,ref=ghcr.io/${{ steps.export_owner.outputs.owner_lc }}/${{ steps.export_image.outputs.image_name }}:cache
cache-to: type=registry,ref=ghcr.io/${{ steps.export_owner.outputs.owner_lc }}/${{ steps.export_image.outputs.image_name }}:cache,mode=max
tags: |
ghcr.io/${{ steps.export_owner.outputs.owner_lc }}/${{ steps.export_image.outputs.image_name }}:${{ needs.makeTagAndRelease.outputs.tag_name }},
ghcr.io/${{ steps.export_owner.outputs.owner_lc }}/${{ steps.export_image.outputs.image_name }}:latest

ghcr.io/${{ steps.export_owner.outputs.owner_lc }}/${{ steps.export_image.outputs.image_name }}:latest

deploy:
runs-on: ubuntu-latest
Expand All @@ -103,37 +104,53 @@ jobs:
INSTANCE_ID=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=TT-ec2-1" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text)
echo "INSTANCE_ID=$INSTANCE_ID" >> $GITHUB_ENV

- name: AWS SSM Send-Command (Official CLI)
- name: AWS SSM Send-Command (Doppler 완전 통합)
run: |
aws ssm send-command \
--instance-ids "${{ env.INSTANCE_ID }}" \
--document-name "AWS-RunShellScript" \
--comment "Deploy Spring Boot with Prod Profile" \
--parameters '{
"commands": [
"#!/bin/bash",

"export HOME=/root",
"export PATH=$PATH:/usr/local/bin",


"git config --global --add safe.directory /dockerProjects/tt-src/WEB7_9_B2ST_BE",

"cd /dockerProjects/tt-src/WEB7_9_B2ST_BE/ || exit 1",
"git fetch --all",
"git reset --hard origin/develop",


"cd docker/",
"export DOPPLER_TOKEN=\"${{ secrets.DOPPLER_TOKEN }}\"",
"echo \"${{ secrets.PERSONAL_ACCESS_TOKEN }}\" | docker login ghcr.io -u ${{ github.actor }} --password-stdin 2>/dev/null",

"doppler run -- docker compose pull",
"doppler run -- docker compose up -d --force-recreate",

"docker image prune -f",

"docker logout ghcr.io 2>/dev/null"
]
}' \
--region ${{ secrets.AWS_REGION }}
aws ssm send-command \
--instance-ids "${{ env.INSTANCE_ID }}" \
--document-name "AWS-RunShellScript" \
--comment "Deploy with Doppler (all secrets managed centrally)" \
--parameters '{
"commands": [
"#!/bin/bash",
"set -euo pipefail",

"export HOME=/root",
"export PATH=$PATH:/usr/local/bin",

"git config --global --add safe.directory /dockerProjects/tt-src/WEB7_9_B2ST_BE",

"cd /dockerProjects/tt-src/WEB7_9_B2ST_BE/ || exit 1",
"git fetch --all",
"git reset --hard origin/develop",

"cd docker/",

"# Doppler 설정 (파일에서 토큰만 읽기)",
"export DOPPLER_TOKEN=\"$(sudo tr -d \"\\r\\n\" < /etc/tt-secrets/doppler-token)\"",
"export DOPPLER_PROJECT=tt",
"export DOPPLER_CONFIG=prd",

"# GitHub 레지스트리 로그인 (Doppler에서 GITHUB_TOKEN 주입)",
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- bash -c \"echo \\$GITHUB_TOKEN | docker login ghcr.io -u ${{ github.actor }} --password-stdin 2>/dev/null\"",

"# Alertmanager 설정 파일 환경변수 치환",
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- bash -lc \"envsubst < monitoring/alertmanager/alertmanager.yml > /tmp/alertmanager-resolved.yml\"",
"cp /tmp/alertmanager-resolved.yml monitoring/alertmanager/alertmanager.yml",
"rm -f /tmp/alertmanager-resolved.yml",

"# Docker Compose 실행 (모든 환경변수 Doppler에서 주입)",
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- docker compose pull",
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- docker compose up -d --force-recreate",

"# 정리",
"docker image prune -f",
"docker logout ghcr.io 2>/dev/null",

"echo \"✅ Deployment completed at $(date)\"",

"# 최종 상태 확인",
"doppler run --project \"$DOPPLER_PROJECT\" --config \"$DOPPLER_CONFIG\" -- docker compose ps"
]
}' \
--region ${{ secrets.AWS_REGION }}
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,17 @@ src/main/generated/
!src/main/resources/application.yml
!src/main/resources/application-prod.yml
!src/main/resources/application-test.yml
!docker/init-redis-cluster.sh
!docker/docker-compose.redis-cluster.yml
!docker/monitoring/prometheus/prometheus.yml
!docker/monitoring/prometheus/rules/*.yml
!docker/monitoring/grafana/provisioning/**/*.yml
!docker/monitoring/alertmanager/alertmanager.yml

### custom ###
src/main/resources/application-secret.yml

# local / sensitive files
*.pem
error.log
docker/.env
Loading