리소스가 한정된 상황에서 대량의 트래픽을 견딜 수 있는 안정적인 티켓팅 서비스입니다.
- 좌석 선점이 동시에 이루어져도 안전한 티켓팅 시스템을 설계
- 새로고침해도 순서가 유지되는 친절한 대기열을 시스템을 설계
- 사용자 경험을 향상시키기 위해 실시간 좌석 선점 상황을 클라이언트에 반영
Backend | Backend | Backend | Backend |
박혜성 | 최세민 | 김현우 | 이영민 |
![]() |
![]() |
![]() |
![]() |
- 좌석 선점을 위한 최적의 락 방식을 찾기 위해 낙관, 비관, 분산락을 구현
- 다음 테스트 조건에 따라 부하 테스트를 진행
- 결과에 따라 평균 응답 시간이 가장 낮은 비관락을 선정
![스크린샷 2024-08-31 오후 10 53 58](https://private-user-images.githubusercontent.com/48748265/363417993-26b12da6-1431-4a93-8b72-aceaba721752.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjM0NzUsIm5iZiI6MTczOTAyMzE3NSwicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTc5OTMtMjZiMTJkYTYtMTQzMS00YTkzLThiNzItYWNlYWJhNzIxNzUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDEzNTkzNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTU1NTMyOWY0NjEyYWMyNDE5MmVlYmE3MWIzNGQyNzBlNzA2Y2U4ZTQ0N2ZhNTAyZGRhNDdjMTRlZGE3MGQ1MWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.s8Uogkc_8_3fSGMCPPRDL1EM0AIiZ7xKd2FIeCyzdxU)
- 다음 테스트 구성에 따라 부하 테스트를 진행
- 가상 사용자 2,500명일 때, 대부분의 요청을 1초 안에 처리함을 파악
- 최종적으로 가상 사용자 10,000명,
남은 순번 조회
폴링 주기 5초일 때, 대기열 시스템이 안정적으로 동작할 수 있음을 검증
![스크린샷 2024-08-31 오후 10 09 15](https://private-user-images.githubusercontent.com/48748265/363415462-45cd32c0-4f4c-4730-83be-11ddbaa1a4e9.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjM0NzUsIm5iZiI6MTczOTAyMzE3NSwicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTU0NjItNDVjZDMyYzAtNGY0Yy00NzMwLTgzYmUtMTFkZGJhYTFhNGU5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDEzNTkzNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg5ZTBkOTE4YzllOWRjMjY3MTBiNzJiNTRiZDRiYWUyM2M4YmRmYmRjM2ZiMDkyMGJhNTg2NDhlOTUyNGRlY2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.-DwbyK2TmzZ1pxT6--IS_WrlDcRE1liGLriMdX5_Ty4)
![스크린샷 2024-08-31 오후 10 18 01](https://private-user-images.githubusercontent.com/48748265/363415894-815c077e-ab7b-4dde-bc64-0645e02b0b56.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjM0NzUsIm5iZiI6MTczOTAyMzE3NSwicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTU4OTQtODE1YzA3N2UtYWI3Yi00ZGRlLWJjNjQtMDY0NWUwMmIwYjU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDEzNTkzNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE4YTc3MTIxNGUwNDAyN2YxMWNlYzM0YmY0YTI4YjZiNmE5ZTc3OGFkZWFjMzJhZGZhYWM5MmNjOTk4ZTVhNjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0._V2lk7K8NudXL7iD8RJQVy7YayQxgC1bgTaj3dhpn-k)
- Locust RPS, 응답시간 지표에서 그래프 이상을 인지
- Grafana 모니터링에서 Heap 메모리의 사용과 이상 지점이 유사함을 파악
- GC 빈도를 낮추기 위해 로직을 개선
- 가상 사용자 2,500명, 테스트 시간 15분, 시나리오
남은 순서 조회 API
를 1초 주기로 폴링하여 검증
![응답 시간 개선2](https://private-user-images.githubusercontent.com/48748265/363415247-50314777-bc30-4410-91d3-83f2e314dfd0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjM0NzUsIm5iZiI6MTczOTAyMzE3NSwicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTUyNDctNTAzMTQ3NzctYmMzMC00NDEwLTkxZDMtODNmMmUzMTRkZmQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDEzNTkzNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNhN2Q0NDc5YTMyYTJjOWU4Nzc0MzQ5Yjg0MWQyNzgwZWMxZjU5MTNiYzA4M2UwNGFjZWZiN2UzNTMzM2Y5OGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.S81JdCL7mFYVoGI-vIEP7eTX5IR7UOwO7gquAgDFGiE)
![](https://private-user-images.githubusercontent.com/57583282/362572614-7420a4f7-e5f3-40f6-ad5d-02c14739b4e7.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjM0NzUsIm5iZiI6MTczOTAyMzE3NSwicGF0aCI6Ii81NzU4MzI4Mi8zNjI1NzI2MTQtNzQyMGE0ZjctZTVmMy00MGY2LWFkNWQtMDJjMTQ3MzliNGU3LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDEzNTkzNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBmNjc0ZTRkZmRiODE0Yjk3M2U2OGFkNDNhOTFhNjg4ZjY3Y2Y5NmQ3NDRjNTk3MDViOTU5NDNjZmZmM2YyZDEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.U7iMxt0HucN3opp0ISF5-p400n3wBNbddQS1FDCZoPM)
![](https://private-user-images.githubusercontent.com/57583282/362566131-87a1ed80-2a65-4836-a0be-f75dc9fccdcf.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwMjM0NzUsIm5iZiI6MTczOTAyMzE3NSwicGF0aCI6Ii81NzU4MzI4Mi8zNjI1NjYxMzEtODdhMWVkODAtMmE2NS00ODM2LWEwYmUtZjc1ZGM5ZmNjZGNmLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDEzNTkzNVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA2NThlYjM0M2I4OTVkYzZiZjY0MGM5NjY4Y2NiOWZjM2ZlYjE4ZDM2NDhmN2NmZDFkNjYyY2FjNDA1OTBjZDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.al2Yh8r5nfn1lSI1RNLUle8VuZZlY_dfz2joYfZUXSc)
3rd_Party_.mp4
- 스크럼과 회고는 10분 이내로 한다.
- 화요일에는 야근데이! 9시까지 코딩합니다.
- 일정이 있으면 미리 공유한다.
- 평일 10시 ~ 22시 이전까지 온콜타임(코어타임)으로 정한다.
- 온콜타임 프로젝트 관련 소통은 Discord 에서 진행한다.
- 용건을 한 번에 육하원칙에 맞게 전송한다.
- DM 을 사용하지 않고 모든 이슈를 public 하게 공유한다.
- 질문을 많이, 자유롭게 한다.
- 해당 주에 완료하지 못한 개발은 주말에 마무리한다. 그 외 주말 시간은 자유롭게 사용한다.
- 비판은 하되, 감정이 상할 수 있는 비난은 하지 않는다.
https://github.com/woowa-techcamp-2024/Team3-rdParty/wiki/%EC%BB%A8%EB%B2%A4%EC%85%98