성능 테스트를 위한 티켓팅 서비스 구현
- Backend Kotlin, Spring-boot, Testcontainers, MySQL
- Infra AWS, EKS, Terraform, Helm, Argocd, Prometheus, Grafana
- Queue System Node.js, Redis
- K6를 활용한 Spike Test 수행
- Prometheus 및 Grafana를 통한 모니터링 및 개선사항 보고서 작성
- 비용 절감을 위해 AWS ALB 삭제 후 Nginx Ingress(Baremetal) 구축
- How to scrape metrics from multiple pods using spring-actuator
- Terraform으로 EKS Pod에 Secret 주입
- [발표자료] Desired State를 중심으로 알아보는 인프라 환경
NAT Gateway 비용 이슈로 Public Subnet Node Group 구성 사용
ALB 비용 이슈로 인해 ALB 삭제 후 Nginx Ingress(Baremetal) 구축
성능 테스트 환경 구축에 대한 고민 (테스트 도구, 성능테스트 자동화, 성능테스트 부하발생 환경, 테스트 결과 출력 및 분석)
- 성능테스트 시나리오 상세 설명
- ALB LCU를 이용한 SpikeTest 요금 계산
- 성능테스트 환경 구축을 위한 고민
- 성능테스트 K6 스크립트 작성
- 테스트용 생성 및 대용량 데이터 DB Insert
- Prometheus, Grafana를 이용한 모니터링 환경 구축
- 갱신 누락 고려, Non-blocking API, 대기열 데이터 구조 등
백엔드 설계
- 프로젝트 패키지 구조 고민
- Convention Docs (Branch, CommitMsg, Naming, HTTP Response, Serialization, Test 등 정의)
- Time 컨벤션, 레이어간 데이터(에러, 응답 등) 전달 형식, 로깅 등의 Best Practice 고민/구현을 담은 API 고도화
- jacoco + codecov를 이용한 테스트 커버리지 80% 이상 유지
- testcontainer를 통해 MySQL Container 도입 통합테스트 환경 구축
- 100만건 데이터 단일 컬럼에 대한 인덱스 추가 후 Slow Query 개선
- 암호화 CPU 성능 이슈: CPU 코어수 증가 및 암호화 난이도 조절에 따른 변화 관찰
- 프로세스 생성 후 동일 테스트를 반복함으로 JVM CodeHeap 및 성능 변화 관찰
인터파크 트래픽 0.001% Spike Test 보고서
- 천만건 데이터
SELECT COUNT(*)
를NoOffset
구현으로 개선 - 하나의 자원(=Event)에 대한 Lock 경쟁 발생에 대한 고민 및 대기열 시스템 도입 후 테스트
인터파크 트래픽 0.002% Spike Test 보고서
- Thread Pool 전략 수정으로 쓰레드 생성에 따른 CPU 리소스 사용 개선
- DB Connection Pool 전략 수정으로 Pending Connection 개선
- Redis 캐싱 적용으로 Latency 개선
진행 기간 : 2023.07.01 ~ 2023.11.19 (회의록)
2023.07.01 ~ 2023.09.30 (집중기간)
이름 | 역할 | Github |
---|---|---|
안준하 | Project Leader / Infra | junha-ahn |
임하영 | Infra | hihahayoung |
박정섭 | Backend | ParkJeongseop |
김민준 | Backend | minjun3021 |
하차자 제외
프로젝트 시작 일기를 보면 알 수 있듯, 모두 현역 군인 신분으로 프로젝트를 진행했나갔습니다.