앞선 Phase 3 테스트를 통해 현재 사용중인 서버 인스턴스의 물리적 한계를 확인하고, 스레드와 커넥션의 1:1 매핑이라는 타협점을 찾아냈다. 하지만 이 테스트에서 고민이 들었던 지점은, 이 모든 수치는 시스템이 Warm-up 상태를 가정한 결과라는 점이었다.
Phase 3 테스트 결과에서 보았듯이, 동일한 코드임에도 불구하고 Cold 상태(TPS 146)와 Warm-up 상태(TPS 4666)의 처리량 차이는 약 4배에 달한다. 이 결과는 JIT 컴파일 최적화와 Redis Cache 100% hit 에 따른 것으로 분석했다.
여기서 자연스럽게 고민이 되는 지점이 있다. 바로, 실제 운영 환경에서도 위와 같은 Warm-Up 과정을 동일하게 거칠 수 있는가? 라는 부분이다.
모든 예열에는 비용이 따르기 마련인데, 만약 수천만 명의 유저 데이터를 다루는 서비스라면, 테스트에서 진행했던 캐시 Warm-Up을 할 수 있을지에 대해서는 고민이 필요할 것으로 보인다.
지금까지 테스트했던 메서드에서 Redis Global Cache 를 사용해서 캐싱하고 있던 데이터는, 유저의 배송지 주소 정보였다.
이론적으로 모든 유저 배송지 정보를 Redis에 올려두면 DB 조회가 사라져 최상의 성능을 낼 수 있다. 하지만 이를 실현하기 위해 고려해야 할 현실적인 제약은 다음과 같다.
파레토의 법칙 또는 80 대 20 법칙은
전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상을 가리킨다. 예를 들어, 20%의 고객이 백화점 전체 매출의 80%에 해당하는 만큼 쇼핑하는 현상을 설명할 때 이 용어를 사용한다. 2 대 8 법칙라고도 한다.