도커 빌드에 숨겨진 스타트업 시간 트릭 노트

도커 빌드에 숨겨진 스타트업 시간 트릭

쿠버네티스에서 서비스를 실행하는 모든 자바 개발자라면 이 장면을 본 적이 있을 것입니다. 트래픽이 급증하면 오토스케일러가 파드를 추가하고, 그러면 모두가 기다립니다. 컨테이너는 2초 안에 실행됩니다. 애플리케이션은 12초 후에야 준비됩니다. 이 10초 동안 기존 파드가 추가 부하를 흡수하고 지연 시간이 증가하며, 상황이 충분히 나쁘면 오토스케일러가 패닉 상태에 빠져 준비되지 않은 파드를 더 많이 추가합니다.저는 수년간 Spring Boot 시작 시간을 날씨처럼 당연하게 받아들였습니다. 그러다가 JVM이 Java 12부터 상당 부분을 해결할 수 있는 방법을 가지고 있다는 것을 알게 되었습니다. 이 방법은 Docker 안에서 아름답게 작동하며, 거의 아무도 이를 이미지에 포함시키지 않습니다. 이 기능은 Class Data Sharing, 줄여서 CDS라고 하며, 이 글에서는 Docker 빌드가 이 작업을 수행하도록 만드는 방법을 보여줍니다.