Skip to content

f-lab-clone/ticketing-backend

Repository files navigation

목차

  1. Instruction
  2. Architecture
  3. Performance Test Report
  4. Contributors

1. Instruction


성능 테스트를 위한 티켓팅 서비스 구현

  • Backend Kotlin, Spring-boot, Testcontainers, MySQL
  • Infra AWS, EKS, Terraform, Helm, Argocd, Prometheus, Grafana
  • Queue System Node.js, Redis
  • K6를 활용한 Spike Test 수행
  • Prometheus 및 Grafana를 통한 모니터링 및 개선사항 보고서 작성

2. Architecture

Infra

image

Terraform을 통해 전체 배포 환경 구현

NAT Gateway 비용 이슈로 Public Subnet Node Group 구성 사용

ALB 비용 이슈로 인해 ALB 삭제 후 Nginx Ingress(Baremetal) 구축

Performance Test

result

성능 테스트 환경 구축에 대한 고민 (테스트 도구, 성능테스트 자동화, 성능테스트 부하발생 환경, 테스트 결과 출력 및 분석)

대기열 시스템

image

대기열 시스템 설계 이슈

  • 갱신 누락 고려, Non-blocking API, 대기열 데이터 구조 등

백엔드 설계

CD Pipeline

image

3. Performance Test Report

SignIn Spike Test 보고서

  • 100만건 데이터 단일 컬럼에 대한 인덱스 추가 후 Slow Query 개선
  • 암호화 CPU 성능 이슈: CPU 코어수 증가 및 암호화 난이도 조절에 따른 변화 관찰

JVM Warm Up Test 보고서

  • 프로세스 생성 후 동일 테스트를 반복함으로 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 개선

4. Contributors

진행 기간 : 2023.07.01 ~ 2023.11.19 (회의록)

2023.07.01 ~ 2023.09.30 (집중기간)


이름 역할 Github
안준하 Project Leader / Infra junha-ahn
임하영 Infra hihahayoung
박정섭 Backend ParkJeongseop
김민준 Backend minjun3021

하차자 제외

프로젝트 시작 일기를 보면 알 수 있듯, 모두 현역 군인 신분으로 프로젝트를 진행했나갔습니다.