프리티어 t2.micro 서버 1대로 배포를 해보니
동시접속자 100명도 버티지 못하고 응답시간이 10000ms를 넘기던 서버 성능 문제 발생하였습니다.
→ 어떻게 해야 대용량 데이터 조회 시간을 줄이고, 많은 유저의 동시 접속을 버티게 할 수 있을까?
응답시간(Response Time)을 줄여 처리량(Throughput) 늘리기
서버 Scale Up - 고성능 EC2로 업그레이드
서버 Scale Out - EC2 여러개 연결, ALB(분산 역할) , Auto Scaling
DB Scale Up - 고성능 DB로 업그레이드
Hikari CP - 커넥션 풀 관리를 위해 사용한다.
→ 한계 : DB에 대한 부하가 임계치를 넘어가면 먹통이 될 수 있음
spring:
hikari:
maximum-pool-size: 200
minimum-idle: 50
주문 과정을 주문과 주문 상품 재고처리를 분리하여 처리
주문서비스 내부에서 상대적으로 시간이 많이 소요되는 재고처리를 한번에 처리하여 응답시간이 늦어지던 문제를 Kafka를 사용하여 주문생성과 재고감소를 비동기로 처리하였습니다.
쿼리 최적화 - n+1 문제 해결 - 장바구니에서 상품 조회하는 부분
대용량 데이터 조회시간 줄이기