![](https://private-user-images.githubusercontent.com/41976906/282285291-b728aab9-d2ce-41bd-a448-c5c181b61453.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwMTI1NDksIm5iZiI6MTc0MDAxMjI0OSwicGF0aCI6Ii80MTk3NjkwNi8yODIyODUyOTEtYjcyOGFhYjktZDJjZS00MWJkLWE0NDgtYzVjMTgxYjYxNDUzLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDAwNDQwOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI5ZWMxNzQzYjA3MjUzNDAzNGFkMWY3ZGEzMTUyZjU0ZjBmYmI2M2FlOWY4Nzc5Nzc5MTYxNjEzMzEwNzI3MGEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.OeMkgTcHEo2Vvz4DSp_bgArETBVuYdU4TDiKhBTPLls)
성능 테스트를 위한 티켓팅 서비스 구현
- 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를 이용한 모니터링 환경 구축
![image](https://private-user-images.githubusercontent.com/41976906/282283584-37d47dc4-c795-437e-afb8-c13957f2c3b6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwMTI1NDksIm5iZiI6MTc0MDAxMjI0OSwicGF0aCI6Ii80MTk3NjkwNi8yODIyODM1ODQtMzdkNDdkYzQtYzc5NS00MzdlLWFmYjgtYzEzOTU3ZjJjM2I2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDAwNDQwOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJlYjQwZGI1NGNlMmYzMjA3NjBkMjM5OGQ2YmMzMDU5NWI3YjY4NjkzOWE0ZTE2YTU0OGU2ZTRlMzVkNDI2Y2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ONS5qEuh7nY80DiI4beePujDNf5IBxlWrTSXA1gzj5I)
- 갱신 누락 고려, Non-blocking API, 대기열 데이터 구조 등
백엔드 설계
- 프로젝트 패키지 구조 고민
- Convention Docs (Branch, CommitMsg, Naming, HTTP Response, Serialization, Test 등 정의)
- Time 컨벤션, 레이어간 데이터(에러, 응답 등) 전달 형식, 로깅 등의 Best Practice 고민/구현을 담은 API 고도화
- jacoco + codecov를 이용한 테스트 커버리지 80% 이상 유지
- testcontainer를 통해 MySQL Container 도입 통합테스트 환경 구축
![image](https://private-user-images.githubusercontent.com/41976906/282295924-00651cfb-8e03-4857-bc3b-14a400c84cbe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDAwMTI1NDksIm5iZiI6MTc0MDAxMjI0OSwicGF0aCI6Ii80MTk3NjkwNi8yODIyOTU5MjQtMDA2NTFjZmItOGUwMy00ODU3LWJjM2ItMTRhNDAwYzg0Y2JlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjIwVDAwNDQwOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI0N2NjOGZmMmVkNzAzZDU4MDIzYjFlMDhiYjdjZjk2NzQ1ZjFkYWU2YWVjZmNiNTRjYjUyYjM3M2VkNmZiYTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.tm_67TD0tWfyFEpYtccY1PL2H7840yhGd0YxUcdOjp8)
- 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 |
하차자 제외
프로젝트 시작 일기를 보면 알 수 있듯, 모두 현역 군인 신분으로 프로젝트를 진행했나갔습니다.