리소스가 한정된 상황에서 대량의 트래픽을 견딜 수 있는 안정적인 티켓팅 서비스입니다.
- 좌석 선점이 동시에 이루어져도 안전한 티켓팅 시스템을 설계
- 새로고침해도 순서가 유지되는 친절한 대기열을 시스템을 설계
- 사용자 경험을 향상시키기 위해 실시간 좌석 선점 상황을 클라이언트에 반영
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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTUxMTcsIm5iZiI6MTczOTU5NDgxNywicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTc5OTMtMjZiMTJkYTYtMTQzMS00YTkzLThiNzItYWNlYWJhNzIxNzUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0NDY1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlhODAyNjk3NzI0NjUwYmYxMmVkNjlmYmU1NTQxNmIwYWQ2OTMyZTE2YWI2YjNkZDJlNTBlN2I3YzAyNzNjNGMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.FLXZwZl4F6HT1-7m6f0ccvKkQmmCyiyLPOSIEUPc0q8)
- 다음 테스트 구성에 따라 부하 테스트를 진행
- 가상 사용자 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTUxMTcsIm5iZiI6MTczOTU5NDgxNywicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTU0NjItNDVjZDMyYzAtNGY0Yy00NzMwLTgzYmUtMTFkZGJhYTFhNGU5LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0NDY1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRlMWE3NTllN2YyNWU0NzZiYmIyZGE1MGQyNjQzNzEwZWM1MjExNzgwMWQ0NWFiNzA1OWNhZTcwMjFiMjczYTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.r-7aiOUBy9JeSl0xvjyYXgXh4SFKaiZa2YwS1DuAo8w)
![스크린샷 2024-08-31 오후 10 18 01](https://private-user-images.githubusercontent.com/48748265/363415894-815c077e-ab7b-4dde-bc64-0645e02b0b56.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTUxMTcsIm5iZiI6MTczOTU5NDgxNywicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTU4OTQtODE1YzA3N2UtYWI3Yi00ZGRlLWJjNjQtMDY0NWUwMmIwYjU2LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0NDY1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY5MDliZmM4YzczYzZlNjlhMWZhNTAxOTkzMGIzOGQ2MTMwZWFkYTEzMDM0NThjY2I5M2FkZWIxYTc5M2Q3ZGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nfPygwSdJllMExUKs6cu9mLI4IMNh12r0te80JDL0G4)
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTUxMTcsIm5iZiI6MTczOTU5NDgxNywicGF0aCI6Ii80ODc0ODI2NS8zNjM0MTUyNDctNTAzMTQ3NzctYmMzMC00NDEwLTkxZDMtODNmMmUzMTRkZmQwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0NDY1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI1ZWQ0NTRhYTUxNjk4ZWVmYjE0ZTM2N2JjZDg5NDA2N2ViYTlhMjYxN2RlODI5NmZkNmM2MzJhMDFmOTg5N2EmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.cEw68JDyOt4Z8HC4lmZ0q5dpgTlHrky5nXilL6QcBPs)
![](https://private-user-images.githubusercontent.com/57583282/362572614-7420a4f7-e5f3-40f6-ad5d-02c14739b4e7.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTUxMTcsIm5iZiI6MTczOTU5NDgxNywicGF0aCI6Ii81NzU4MzI4Mi8zNjI1NzI2MTQtNzQyMGE0ZjctZTVmMy00MGY2LWFkNWQtMDJjMTQ3MzliNGU3LmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0NDY1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJiZGU4OWE3Y2UyMzkxYTIyZTAwNDNiMmMxMTk0NzgxYmM4ZTU0YTM2ZTc2MzY5MTQxZjA1M2I4ZDcyZTYyMDgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.cQSjLiahYCS01duSnmlHccJcIBqUNaFdno5AR4bG3iw)
![](https://private-user-images.githubusercontent.com/57583282/362566131-87a1ed80-2a65-4836-a0be-f75dc9fccdcf.gif?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk1OTUxMTcsIm5iZiI6MTczOTU5NDgxNywicGF0aCI6Ii81NzU4MzI4Mi8zNjI1NjYxMzEtODdhMWVkODAtMmE2NS00ODM2LWEwYmUtZjc1ZGM5ZmNjZGNmLmdpZj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTUlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjE1VDA0NDY1N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThjOTcwMWMzODUyZTUzYmIwMjUzZTZiZTg5MmEwMmM0NDhmZjYzYjYyMGE5NzM1ODViNWY1MjFlZWE3MWEyZTMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JySNGgOhoTGVYxcpYFxQxzvx5fE66ohNImrcwCds0Fg)
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