자바는 바이트코드 형태로 패키징돼 JVM을 통해서 실행 환경에 맞는 기계어로 변환되는 과정을 거쳐 실행됩니다. 그렇기에 JVM이 설치된 곳이라면 어디든 동일한 결과가 나오도록 실행할 수 있습니다. 이런 장점은 동시에 단점이 되기도 합니다. 실행 환경에 맞춰 변환하기 위해 많은 시간…
QA실
실행 시간 효율을 위한 클래스 데이터 공유(CDS)와 Layered Jar
리스와 헤이즐캐스트로 구성한 쿠버네티스 파드 클러스터링
쿠버네티스에서는 개별 파드에서 발생한 데이터가 주변 파드에 영향을 주지 않는 것이 기본 구성입니다. 하지만 사용자가 필요하다면 공유할 수 있는 방법을 제공하고 있습니다. Apache Camel과 헤이즐캐스트와 같은 오픈 소스들은 이미 쿠버네티스에서 제공하는 클러스터링 절차에…
쿠버네티스가 스프링부트 3.0 네이티브 이미지를 만났네
네이티브 이미지 배포 방식 적용 전후를 되돌아보면, 50초였던 기존 프로그램 실행시간은 2초로 줄었습니다. 신규 파드를 추가할 때 사용하는 도커 이미지 크기는 기존 JAR 기반에서는 300MB였지만, 이제는 70MB 정도로 줄었습니다. 방식 자체를 바꾼 결과가 수치로도 큰 차이가…
300ms를 바꾸는 함수 호출 순서
로그와 Try-Catch 구문으로 구간별 상황을 확인하던 중, 두 함수가 눈에 들어왔습니다. ‘BeginAccept()’ 함수와 ‘ConnectionHandler()’ 함수였습니다. ‘BeginAccept()’ 함수는 클라이언트에서 들어오는 연결(Connect) 요청을 대기하는…
RPS 설정으로 네트워크 부하를 분산하라
부하는 꾸준히 유지하고 있는 중이므로, 최초에는 이 부하를 소화하기 위해 오토스케일링에 맞춰 파드 개수가 늘어납니다. 불현듯 어느 순간 파드가 중단되면서, 전체 파드 개수가 줄어듭니다. 파드 개수는 줄어들지만 부하는 계속 유지되고 있으므로, 남아있는 파드의 평균 CPU 사용률이…