🚀 애자일 기반 이슈 추적 웹 서비스 🚀
애자일은 변화에 빠르게 적응하고 반복적으로 개선하는 프로젝트 관리 방법이에요.
복잡한 설명 없이도, 우리 서비스로 당신의 프로젝트를 더욱 유연하고 효과적으로 관리해 보세요!
[이슈 #1] 커넥션 풀 고갈 문제를 Redis Atomic 연산으로 개선하기
- 프로젝트 목표 및 환경
- 1000명 규모 조직을 가정하여, 100명의 동시 요청 상황에서 TPS 30~40, 응답시간 2초 이내
- 에러율 0.1% 이하를 목표로 성능테스트 진행
- 문제 분석 및 원인 파악
- 테스트 진행 중 20명 동시 요청 시 JPA EntityManager 관련 트랜잭션 오류 발생
- visualVM 스레드 덤프 분석 결과, handleExisitingTransaction 메소드 호출 시 time Wait 상태 확인
- 이슈번호 생성 시 REQUIRES_NEW 트랜잭션 분리로 인해, 한 요청당 두 개의 커넥션이 필요해 커넥션 풀이 고갈되는 구조적 문제 발견
- 개선 전략 및 실행 과정
- 트랜잭션 구조 변경
- 기존 비관적 락 기반의 REQUIRES_NEW 분리 방식 대신 단일 커넥션 사용 구조로 통합
- 단, 비관적 락으로 인해 전체 이슈 생성에 락이 걸려 성능이 저하
- 락 메커니즘 개선
- 낙관적 락 + 재시도 전략 적용
- 하지만 동시 요청 많을 때 충돌과 재시도 증가로 성능 악화
- Redis 도입
- Redis INCR 명령어의 단일 스레드/원자성 특징으로 락 없이 동시성 해결
- Write-behind 전략을 도입하여 업데이트된 이슈번호를 30초마다 스케줄러로 DB에 비동기 반영
- Redis 장애에 대비해 리플리케이션 센티널 구성으로 고가용성 확보
- 커넥션 풀 최적화
- HikaricP connection-timeout 5초 설정 (요청 폭주 시 대기 시간 확보)
- 부하 테스트 결과 기반으로 Connection Pool 200개로 설정
- MySQL max_connections 500으로 설정 (여유값 확보)
- 최종적으로 목표했던 100 VUser 환경에서 TPS 33-365, 응답시간 2.9초->0.26초 개선
- 트랜잭션 구조 변경
- 초대 토큰 구현 방식 개선
- 문제: JWT 사용 시 Base64 디코딩으로 payload 노출 위험
- 해결: UUID v4 기반 랜덤 토큰 방식 채택
- 성능 검증: SecureRandom 대비 생성 속도 2배 향상, 100만 건 테스트 시 충돌 없음
- 이메일 전송 시스템 개선
- 초기 문제: Gmail SMTP의 낮은 전송 속도, 높은 스팸 필터링율
- 해결: AWS SES 도입으로 안정적 전송과 도달률 향상
- 효과: SPF/DKIM 인증으로 스팸 분류 최소화, 네이버메일 지연 문제 해결
- 초대 코드 저장소 설계
- Redis 선택 이유
- TTL 기능으로 10분 유효기간 자동 관리
- 다중 서버 환경에서 원격 캐시로 활용
- 메모리 최적화: UUID Base64url 인코딩으로 키-값 크기 256->120바이트 감소
- Redis 선택 이유
- 이메일 비동기 발송 및 장애 대응 설계
- CompletableFuture 기반 비동기 처리로 응답시간 578ms > 130ms로 개선
- 장애 대응
- Redis 기반 상태 관리로 중복 전송 방지 (PENDING->SENDING->SENT/FAILED)
- @Retryable로 일시적 장애 시 500ms 간격, 지수 백오프로 재시도
- ThreadPool 설정 최적화 및 CallerRunsPolicy로 시스템 안정성 확보
- 멀티스테이지 빌드 사용으로 이미지 크기 감소
- Docker 캐싱을 활용하여 빌드 시간 단축
- Gradle 빌드 옵션 최적화 (병렬 빌드 사용 및 테스트 제외)
- 성과
- 처음에 이미지 빌드 시 총 700MB였던 것이 적용 후 320MB로 줄어들어, 50% 이상의 용량 최적화달성
- 배포 시간 13분에서 5분으로 단축 (약 62% 감소)
[이슈 #3] DB 설계 개선으로 끌어올린 코드 품질과 유지보수성
- 문제사항: 조인 전략을 사용한 이슈 관리 시스템의 복잡성과 성능 저하 문제 해결
- 해결 방안: 단일 테이블 전략으로 테이블 구조 개선 및 코드 최적화
- 마이그레이션 과정
- 데이터 손실 방지를 위한 점진적 트리클 마이그레이션 전략 구현
- 새 테이블 설계 및 200만 건 이상의 데이터 안전한 이전
- 읽기 전용 상태 설정으로 데이터 무결성 보장 및 안전한 마이그레이션
- 성과
- 마이그레이션 전후 데이터 무결성 검증을 위한 테스트 케이스 구축
- 코드 복잡성 감소 및 유지보수 용이성 증가
- 테스트 코드 커버리지 24%에서 42%로 향상
👉 팀위키
| BE: 김민상 | BE: 최재영 | FE: 신승혜 | FE: 주원희 |







