Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
af3cc22
chore: PR 템플릿 설정
yoonyoungyang Aug 10, 2026
3e6d44f
chore: PR 템플릿 2개(test, 성능 개선) 합치기
yoonyoungyang Aug 10, 2026
f1fea5c
chore: PR 템플릿 개선
yoonyoungyang Aug 10, 2026
ca8ccbc
Merge pull request #1 from sodam2z/chore--PR템플릿-수정
yoonyoungyang Aug 10, 2026
5c22272
perf: 채팅방 목록 N+1 조회 개선
jihyungkim0011 Aug 10, 2026
a474eda
perf: 로그인 인증 및 세션 교체 경로 최적화
jihyungkim0011 Aug 10, 2026
3e7e70f
chore: 배포 및 모니터링 설정 추가
sodam2z Aug 10, 2026
42e2fa0
perf: MongoDB 조회 인덱스 추가
sodam2z Aug 10, 2026
a359a13
Merge pull request #4 from sodam2z/perf/login-session-upsert
sodam2z Aug 11, 2026
0d8e94c
Merge pull request #3 from sodam2z/perf/mongodb-index
sodam2z Aug 11, 2026
d99c0b4
tomcat 동시 요청 개선 + MongoDB findAndModify 적용 + S3 적용 + 프론트 리사이징
yoonyoungyang Aug 11, 2026
2543cac
Merge branch 'main' of https://github.com/sodam2z/ktb-BootcampChat in…
yoonyoungyang Aug 11, 2026
7efd25f
perf: reduce chat message database operations
gourmet0828 Aug 11, 2026
7003ff6
Perf/chatroom list 개선
jihyungkim0011 Aug 11, 2026
e3e5717
Merge pull request #6 from sodam2z/perf/chat-performance
gourmet0828 Aug 11, 2026
bb219c0
test: 프로필 API 부하 테스트 분리
yoonyoungyang Aug 11, 2026
2e5a2ac
Merge branch 'main' into perf/chat-room-list-pagination
jihyungkim0011 Aug 11, 2026
3b421fb
Merge pull request #5 from sodam2z/perf/chat-room-list-pagination
yoonyoungyang Aug 11, 2026
21a83ff
Merge pull request #7 from sodam2z/perf--profile
yoonyoungyang Aug 11, 2026
9809483
Perf/chatroom list 개선 - RoomListItemResponse
jihyungkim0011 Aug 11, 2026
8f5a28d
Merge remote-tracking branch 'origin/perf/chat-room-list-pagination' …
jihyungkim0011 Aug 11, 2026
8e0ea2b
Merge pull request #8 from sodam2z/perf/chat-room-list-pagination
sodam2z Aug 11, 2026
6bd1fbd
perf: reduce chat history user queries
gourmet0828 Aug 11, 2026
01bb126
perf(profile): prevent duplicate upload retries
yoonyoungyang Aug 11, 2026
f012d29
Merge pull request #9 from sodam2z/perf/chat-history-query
gourmet0828 Aug 11, 2026
69d7898
perf: 톰캣 및 MongoDB 풀 설정 환경변수화
jihyungkim0011 Aug 11, 2026
8381e80
Merge pull request #10 from sodam2z/perf/tomcat-mongodb-pool
jihyungkim0011 Aug 11, 2026
1eb4f5c
test(profile): support resized image fixtures
yoonyoungyang Aug 11, 2026
baad582
fix: E2E 회원가입 내비게이션 경합 수정
sodam2z Aug 11, 2026
697c690
Merge pull request #11 from sodam2z/perf--profile
sodam2z Aug 11, 2026
747ffb8
Merge pull request #12 from sodam2z/fix/e2e-register-navigation-race
sodam2z Aug 11, 2026
663154e
perf: batch room activity message counts
gourmet0828 Aug 11, 2026
b74000f
Merge pull request #13 from sodam2z/perf/chat-room-activity
gourmet0828 Aug 11, 2026
fbbcb29
fix(socket): preserve room membership on reconnect
yoonyoungyang Aug 11, 2026
038a182
Merge pull request #14 from sodam2z/fix/socket-disconnect-race
yoonyoungyang Aug 11, 2026
bbc01df
chore: 톰캣, 몽고디비 풀사이즈 배포환경에서 설정할 수 있도록 변경
jihyungkim0011 Aug 11, 2026
5586f34
feat: enable backend horizontal scaling
yoonyoungyang Aug 11, 2026
b023a5a
test: verify distributed backend state
yoonyoungyang Aug 11, 2026
ef95068
fix: refresh distributed socket presence lease
yoonyoungyang Aug 11, 2026
2088fb9
perf: avoid scanning Redis for connection metrics
yoonyoungyang Aug 11, 2026
1dbd371
Merge pull request #15 from sodam2z/codex/backend-scale-out
sodam2z Aug 11, 2026
7074fd2
perf: move rate limiting to Redis
yoonyoungyang Aug 11, 2026
e5973ed
perf: index room participant lookups
yoonyoungyang Aug 11, 2026
e94e46c
perf: move active sessions to Redis
yoonyoungyang Aug 11, 2026
f705867
perf: remove message-path Mongo lookups
yoonyoungyang Aug 11, 2026
03d3348
Merge pull request #16 from sodam2z/codex/backend-scale-out
yoonyoungyang Aug 11, 2026
1c6eb91
wip: add chat S3 direct upload and CloudFront support
gourmet0828 Aug 11, 2026
e051f52
Merge branch 'main' into perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
255ece2
perf: debounce room activity aggregation
yoonyoungyang Aug 11, 2026
cd78190
perf: tune Socket.IO for connection spikes
yoonyoungyang Aug 11, 2026
839fde2
Merge pull request #17 from sodam2z/codex/backend-scale-out
sodam2z Aug 11, 2026
845a989
perf: 로그인·회원가입·`/chat` 진입 개선
jihyungkim0011 Aug 11, 2026
66de9cf
Merge pull request #18 from sodam2z/perf/auth-entry-pipeline
jihyungkim0011 Aug 11, 2026
8f0894b
perf: add direct S3 upload and CloudFront file delivery
gourmet0828 Aug 11, 2026
19719b4
Merge remote-tracking branch 'origin/pr/19' into perf/chat-s3-direct-…
sodam2z Aug 11, 2026
81a2f4e
perf: chat S3 direct upload and CloudFront delivery
sodam2z Aug 11, 2026
18b76b2
feat: add chat image resizing before upload
gourmet0828 Aug 11, 2026
2819a71
Merge pull request #20 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
8d9b381
fix: stabilize direct file upload presign routes
yoonyoungyang Aug 11, 2026
9d0650e
perf: 로그인 호환 경로 리다이렉트 개선
jihyungkim0011 Aug 11, 2026
88b438a
Merge branch 'main' into codex/backend-scale-out
yoonyoungyang Aug 11, 2026
fadf5de
Merge pull request #21 from sodam2z/codex/backend-scale-out
yoonyoungyang Aug 11, 2026
064d764
perf: health 요청 캐시 및 preflight 제거
jihyungkim0011 Aug 11, 2026
87fa96c
chore: ignore pnpm store
gourmet0828 Aug 11, 2026
50ec461
perf: optimize chat message hot paths
gourmet0828 Aug 11, 2026
ed9adfd
Merge pull request #22 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
f4e2672
Merge pull request #23 from sodam2z/perf/auth-entry-pipeline
yoonyoungyang Aug 11, 2026
550cfd0
Merge pull request #24 from sodam2z/perf/health-request-cache
jihyungkim0011 Aug 11, 2026
13cb0f0
perf: optimize chat room load flow
gourmet0828 Aug 11, 2026
b2b0b52
Merge pull request #25 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
7a29e2e
perf: optimize chat room join and message flow
gourmet0828 Aug 11, 2026
88839f7
Merge pull request #26 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
ef5c685
perf: 인증 및 방 목록 중복 요청 제거
jihyungkim0011 Aug 11, 2026
f607515
Merge pull request #27 from sodam2z/perf/auth-request-reduction
jihyungkim0011 Aug 11, 2026
db0189f
fix: always acknowledge duplicate room join
gourmet0828 Aug 11, 2026
86b1c0f
Merge pull request #28 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
ccd345f
perf: reuse CORS configuration across requests
yoonyoungyang Aug 11, 2026
267ccca
Merge pull request #29 from sodam2z/codex/backend-scale-out
yoonyoungyang Aug 11, 2026
64670bb
perf: reduce chat room initialization latency
yoonyoungyang Aug 11, 2026
c4ca5e8
Merge pull request #30 from sodam2z/codex/backend-scale-out
yoonyoungyang Aug 11, 2026
d46afc5
perf: Socket.IO 방 입장 처리 최적화
jihyungkim0011 Aug 11, 2026
a84e156
Merge pull request #31 from sodam2z/perf/socket-room-join
jihyungkim0011 Aug 11, 2026
333dbba
perf: reuse frontend socket connection
gourmet0828 Aug 11, 2026
de778ec
Merge pull request #32 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
000fd45
perf: optimize frontend chat load handling
gourmet0828 Aug 11, 2026
00b170a
Merge pull request #33 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
3b904af
perf: 파일 접근 권한 검증과 업로드 폴백 개선
jihyungkim0011 Aug 11, 2026
585c7cd
perf: reduce frontend chat message computation
gourmet0828 Aug 11, 2026
51306df
Merge pull request #34 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
f852c32
Merge pull request #35 from sodam2z/perf/file-access-authorization
jihyungkim0011 Aug 11, 2026
edaefb6
perf: reduce socket load during chat activity
gourmet0828 Aug 11, 2026
bd42026
Merge pull request #36 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
41f33ac
perf: shorten chat room entry path
gourmet0828 Aug 11, 2026
4d0ee91
Merge pull request #37 from sodam2z/perf/chat-s3-direct-upload
gourmet0828 Aug 11, 2026
ef22a93
perf: reduce socket reconnect and room list fanout
yoonyoungyang Aug 11, 2026
4599d86
merge: resolve socket performance conflicts
yoonyoungyang Aug 11, 2026
72519a9
perf: improve spike scenario completion throughput
yoonyoungyang Aug 11, 2026
efce2f3
프로필 업로드 개선
yoonyoungyang Aug 11, 2026
6a584aa
codex
yoonyoungyang Aug 11, 2026
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
53 changes: 53 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# 성능 개선

## 🚀 개선 내용

- 개선 대상:
- 변경 내용:

## 🔍 문제 및 원인

- 확인된 문제:
- 원인:

## 📊 개선 결과

| 지표 | 개선 전 | 개선 후 |
| ---------- | ------: | ------: |
| TPS / RPS | | |
| Avg | | |
| P95 | | |
| P99 | | |
| Error Rate | | |

## ✅ 추가 확인

- 추가 테스트 또는 확인이 필요한 부분:

---

# 테스트

## 🧪 테스트 내용

- 테스트 대상:
- 테스트 목적:

## ⚙️ 테스트 조건

- VU:
- 테스트 시간:
- 요청 수 / 요청 빈도:

## 📊 테스트 결과

- TPS / RPS:
- Avg:
- P95:
- P99:
- Error Rate:

## 🔍 확인된 문제

- 특이사항 또는 확인된 병목:
- 추가 확인이 필요한 부분:
18 changes: 18 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
node_modules/
**/node_modules/

**/.next/

# IDE / OS local files
.idea/
.vscode/
.DS_Store

# 환경 변수
.env
.env.*
!.env.example

# Java / Maven build
**/target/
.pnpm-store/
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"java.compile.nullAnalysis.mode": "automatic"
}
33 changes: 33 additions & 0 deletions apps/backend/.env.template
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,44 @@ ENCRYPTION_SALT=change_me_32_hex_chars________________
JWT_SECRET=change_me_secure_jwt_secret

MONGO_URI=mongodb://localhost:27017/bootcamp-chat

MONGO_MAX_POOL_SIZE=100
MONGO_MIN_POOL_SIZE=0
MONGO_MAX_WAIT_TIME_MS=120000

REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=ktb

PORT=5001
WS_PORT=5002
SOCKETIO_PRESENCE_REFRESH_INTERVAL=5m
ROOM_ACTIVITY_FLUSH_DELAY=1s
ROOM_ACTIVITY_DEBOUNCE_WINDOW=1s

# Storage: local (default) or s3. In production, prefer an instance IAM role
# instead of static AWS credentials.
FILE_STORAGE_TYPE=local
AWS_REGION=ap-northeast-2
S3_BUCKET=
S3_ENDPOINT=
S3_PATH_STYLE=false
S3_KEY_PREFIX=
S3_PRESIGN_TTL=10m

OPENAI_API_KEY=sk-...

TOMCAT_THREADS_MAX=100
TOMCAT_THREADS_MIN_SPARE=10
TOMCAT_ACCEPT_COUNT=500
TOMCAT_MAX_CONNECTIONS=1000

SOCKETIO_LOG_LEVEL=WARN
SOCKETIO_LIBRARY_LOG_LEVEL=WARN

# CloudFront
CLOUDFRONT_ENABLED=false
CLOUDFRONT_BASE_URL=https://chat.goorm-ktb-012.goorm.team
CLOUDFRONT_KEY_PAIR_ID=
CLOUDFRONT_PRIVATE_KEY_PATH=/run/secrets/cloudfront-private-key.pem
CLOUDFRONT_URL_TTL=5m
Binary file added apps/backend/.mvn/wrapper/maven-wrapper.jar
Binary file not shown.
9 changes: 9 additions & 0 deletions apps/backend/Dockerfile.runtime
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM eclipse-temurin:25-jre

WORKDIR /app

COPY ktb-chat-backend-0.0.1-SNAPSHOT.jar app.jar

EXPOSE 5001 5002

ENTRYPOINT ["java", "-jar", "app.jar"]
4 changes: 2 additions & 2 deletions apps/backend/docker-compose.o11y.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@ services:
container_name: grafana-ktb
restart: unless-stopped
ports:
- "3000:3000"
- "9091:3000"
environment:
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin}
- GF_USERS_ALLOW_SIGN_UP=false
# Behind the ALB Grafana must know its public name, or its redirects and
# asset links point at the container. The default is the local port
# mapping in this file, not the 9091 the dev compose uses.
- GF_SERVER_ROOT_URL=${GRAFANA_ROOT_URL:-http://localhost:3000}
- GF_SERVER_ROOT_URL=${GRAFANA_ROOT_URL:-http://localhost:9091}
- GF_ANALYTICS_REPORTING_ENABLED=false
volumes:
- grafana_data:/var/lib/grafana
Expand Down
Loading