[제니퍼 쿠버네티스 자동 설치 및 사용 방법] 제니퍼 APM 자동설치
1. 쿠버네티스, 고민의 시작

쿠버네티스 환경에서 애플리케이션 성능 모니터링은 서비스의 안정성, 사용자 경험, 그리고 비용 효율성을 보장하는 데 매우 중요합니다. 이는 문제가 사용자에게 영향을 미치기 전에 잠재적인 이슈를 조기에 발견하고 신속하게 해결하는 데 도움을 줍니다. 또한, 실제 자원 사용량을 파악하여 불필요한 비용 낭비를 막고 자원을 효율적으로 운영할 수 있게 합니다. 나아가, 과거 데이터를 기반으로 미래의 트래픽 변화를 예측하여 서비스 용량을 계획하고, 새로운 기능 배포 후에도 성능 저하가 없는지 빠르게 검증하여 개발 및 운영 효율성을 높일 수 있습니다. 결국, 성능 모니터링은 쿠버네티스 기반 서비스가 지속적으로 최고 성능을 유지하며 비즈니스 목표를 달성하도록 돕는 핵심적인 활동입니다.
이와같이 쿠버네티스 운용환경하에서 애플리케이션 성능 모니터링의 중요성이 더욱 높아진 것은 사실입니다. 그러나 애플리케이션 성능모니터링을 제공하는 벤더로서 쿠버네티스 운영환경에 대한 새로운 고민거리가 생겨나기 시작했습니다.
2. 제니퍼의 고민
쿠버네티스에서 애플리케이션 배포는 애플리케이션 컨테이너 이미지를 만드는 과정을 필요로 합니다. 먼저 배포할 애플리케이션 코드를 준비하는 것에서 시작합니다. 그 다음, 이 코드를 포함하여 애플리케이션 실행에 필요한 모든 구성 요소(런타임, 라이브러리 등)를 정의하는 Dockerfile(컨테이너 이미지를 정의하는 파일)을 작성합니다. 이 Dockerfile을 기반으로 컨테이너 이미지를 빌드하고, 최종적으로 빌드된 이미지를 Docker Hub와 같은 컨테이너 레지스트리에 업로드(푸시)하여 쿠버네티스가 사용할 수 있도록 준비합니다.
이렇게 생성된 애플리케이션을 모니터링하기 위해서 만들어진 애플리케이션 이미지에 성능 모니터링 라이브러리와 관련 파일을 추가하는 작업을 해주어야 합니다.
# Dockerfile 예시 # Java 애플리케이션에 Jennifer agent 에이전트 추가 FROM openjdk:21 # 스프링부트 프로젝트 복사하기 COPY /usr/local/spring/sample /home/jennifer/spring # Jennifer 설정 ENV JENNIFER_HOME=/jennifer/agent.java RUN mkdir -p ${JENNIFER_HOME} COPY ./agent.java ${JENNIFER_HOME} ENV JENNIFER_JAVA_OPT="-javaagent:${JENNIFER_HOME}/jennifer.jar -Djennifer.config=${JENNIFER_HOME}/conf/jennifer.conf" # java 실행시 옵션 추가 ENTRYPOINT[ “java”, ${JENNIFER_JAVA_OPT}, “-jar”, “/home/jennifer/spring/sample.jar”]
성능 모니터링까지 준비가 되면 쿠버네티스에 아래의 이미지 배포 흐름에 따라 애플리케이션 배포를 새로 해야 합니다.
이러한 흐름이 기본적으로 따라야 할 절차이지만 문제는 APM 에이전트로서 운영상 불편한 상황이 발생됩니다.
APM 에이전트 업그레이드
에이전트도 버그가 있을 수 있고, 최신 라이브러리 지원 등을 위한 에이전트 업그레이드 작업이 필요합니다. 이런 경우 애플리케이션 내에 변경이 없더라도 이미지를 새로 생성, 업로드, 배포하는 과정을 거쳐야 합니다. 기존에 제니퍼에서는 에이전트 업그레이드 기능을 설정화면에서 제공하고 있었지만, 컨테이너 환경에서는 애플리케이션이 재실행 될 때마다 기존에 설치해둔 버전으로 다시 생성되기 때문에 새로운 방법이 필요했습니다.
모니터링 설정 변경에 따른 업데이트
애플리케이션 특성과 상세 모니터링 설정을 위해 모니터링 옵션을 변경할 경우가 있습니다. 이때 구성파일을 변경하고 다시 이미지를 새로 생성, 빌드, 업로드, 배포하는 과정이 필요합니다.즉, 이미지의 메인 애플리케이션 변경은 없는데 모니터링 업무를 위해서 추가적인 이미지 관리 업무가 빈번하게 발생할 수 있다는 것이 모니터링 벤더로서 큰 고민이 아닐 수 없었습니다.
물론 이런 고민들을 해결하기 위해서 쿠버네티스에서 제공하는 방식을 이용할 수 있습니다.
대표적인 예로 PV/PVC 를 사용하는 방법이 있습니다.
그러나 이것도 NAS나 PV/PVC 설정이 잘못되거나 오류발생시 정상적으로 작동이 되지 않을 수 있으며, 모니터링 대상이 되는 애플리케이션에 따라서 에이전트 버전과 옵션이 달라 설정 파일을 여러개의 파일로 나누고 각 파일이 어느 디플로이먼트(Deployment)와 매칭되는지에 대한 관리도 해야 하기 때문에 관리자 입장에서 부담이 늘 수 있습니다.
또 다른 방법으로 에이전트만 포함한 이미지에 에이전트 옵션 설정을 모니터링 대상 디플로이먼트(Deployment)에 변수나 컨피그맵(ConfigMap)으로 지정해서 사용할 수도 있지만, 이 역시 변경이 필요할 때마다 디플로이먼트를 편집 해야 하고, 수백개 이상의 디플로이먼트 기반으로 운영되는 쿠버네티스 환경에서는 안정적인 운용을 위한 에이전트 설정관리가 어려운 점이 있습니다.
3. 고민 해결의 시작점, 제니퍼 APM 자동설치
(특허출원 중 출원번호 : 10-2025-0084024)
제니퍼 APM 자동설치는 앞서 설명된 제한적인 사항을 극복하고 쿠버네티스 플랫폼안에서 애플리케이션 성능관리 솔루션의 관리 문제를 획기적으로 개선했습니다. 제니퍼 쿠버네티스의 ‘APM 자동설치’는 쿠버네티스에서 제니퍼 APM을 설치하는 개선된 방법으로, Init Container(초기화 컨테이너)를 활용하는 매우 효과적이고 깔끔한 접근 방식을 제공합니다.
특히 애플리케이션 이미지 자체를 변경하지 않고 APM 패키지 및 관련 설정을 애플리케이션에 적용하기 때문에 관리자는 애플리케이션과 분리하여 APM 에이전트 관리를 쉽게 할 수 있습니다.
Java 애플리케이션과 같이 APM 에이전트가 JVM 옵션(-javaagent)으로 주입되어야 하는 경우, 애플리케이션 이미지 안에 에이전트 JAR 파일을 직접 포함시키지 않고 initContainer를 통해 주입하는 방식이 사용됩니다.
InitContainer가 제니퍼 APM 에이전트 패키지와 설정파일을 다운로드하여 공유 볼륨에 저장하고, 메인 애플리케이션 컨테이너는 공유 볼륨을 마운트하여 해당 JAR 파일을 사용하도록 JVM 옵션을 설정합니다.
이를통해 매번 작은 변경에도 이미지파일을 생성하고, APM 에이전트 패키지를 넣고 JVM 옵션 설정을 수동으로 직접 넣어주던 작업을 벗어나 제니퍼 APM 에이전트 설치 및 관리를 손쉽게 할 수 있는 방법을 확보 할수 있었습니다.
이 방식의 장점을 정리하면 다음과 같습니다.
1.애플리케이션 이미지 재빌드 없이 성능 모니터링이 가능
애플리케이션 이미지 자체는 APM 에이전트에 대한 종속성 없이 순수하게 유지됩니다. 이는 이미지 빌드 파이프라인을 단순화하고, 이미지 크기를 줄이며, APM 에이전트 버전 업그레이드 시 애플리케이션 이미지를 다시 빌드할 필요가 없게 합니다.
2.APM 에이전트 버전 관리 용이:
Init Container는 지정된 설정 아이디 값에 매칭된 APM 에이전트 버전을 쉽게 업그레이드할 수 있습니다. 에이전트 패키지 업그레이드를 위한 에이전트를 따로 관리하지 않아도 제니퍼 화면에서 관리하기 때문에 버전 관리가 용이해집니다.
3.중앙 집중식 에이전트 관리:
모든 애플리케이션 파드가 동일한 방식으로 에이전트 및 설정파일을 사용하므로, 에이전트의 일관된 배포및 운영을 보장합니다.
4.제니퍼 APM 자동설치 손쉬운 실제 사용 방법
제니퍼 APM 자동설치 및 관리는 3단계로 간단히 이루어 집니다.
첫번째는 패키지 관리 입니다. 자동설치 메뉴의 ‘에이전트 패키지 관리’를 통해 제니퍼 에이전트를 언어별(JAVA, .NET Core, PHP, Python) 버전별로 등록합니다. 에이전트 패키지가 버전별로 등록이 되기 때문에 패키지 히스토리 관리도 할 수 있습니다.
두번째는 설정 아이디 관리입니다. 여기서 설정 아이디가 실제 애플리케이션 파드(Pod)에 어노테이션(Annotation)으로 지정이 되어 설치될 패키지 버전과 APM에이전트의 설정을 관리하는 단위가 됩니다.
설정아이디는 자동으로 할당되며 관리자는 사용될 에이전트 패키지와 적용할 옵션만 지정하면 됩니다.
세번째는 대상 애플리케이션 설정입니다. 생성된 설정아이디를 모니터링이 필요한 애플리케이션 디플로이먼트(Deployment) 속 파드(Pod)에 설정합니다. 제니퍼 APM 에이전트 자동설치에 필요한 어노테이션(Annotation) 을 추가하는 과정은 아래와 같습니다.
예) k8s.jennifersoft.com/apm-agent-config-id: “a1b2c3d4” 을 디플로이먼트(Deployment) 속 파드(Pod) 의 메타데이터 영역에 추가하여 설정 아이디를 넣어주고 재배포를 하면 바로 애플리케이션 모니터링을 시작하게 됩니다.
재배포를 하게되면 제니퍼 쿠버네티스 애플리케이션 통합대시보를 통해 디플이먼트(Deployment), 혹은 개별 파드(Pod) 상태와 처리되는 트랜잭션 현황을 곧 바로 실시간 모니터링 할 수 있습니다.
5. 제니퍼 고민 해결과 의미

제니퍼 APM 에이전트 자동설치 방식은 제니퍼 쿠버네티스 서버에서 언어별 패키지 관리를 하고 애플리케이션 디플로이먼트(Deployment) 마다 서로 다른 옵션 설정을 구분해서 관리 및 배포를 할 수 있는 효율적인 방법을 제공합니다.
즉, 애플리케이션 컨테이너 이미지 자체를 수정하지 않고, 디플로이먼트나 별도의 쿠버네티스 내의 변수 및 리소스를 설정하지 않고도 제니퍼 에이전트 관련 패키지, 설정 파일을 동적으로 주입해서 사용할 수 있는 제니퍼 만의 APM 자동설치 방식입니다.
특히, 이 접근 방식은 이미 다양한 서비스와 환경에 걸쳐 적용되고 최적화되는 과정을 거치면서 그 안정성과 효용성이 검증되었습니다. 즉, APM 자동설치 방식은 여러 사이트 및 프로젝트에 적용하면서 발생했던 다양한 예외 상황과 요구 사항을 처리하였고, 초기화 컨테이너 기반의 에이전트 배포와 설정을 더욱 견고하고 신뢰할 수 있는 방식으로 제공하여 현재 대형 고객사이트에 적용 및 운용되고 있으며 계속해서 긍정적인 피드백을 받고 있습니다.
제니퍼 쿠버네티스와 애프리케이션 성능관리에 관심이 있으시다면 언제든 연락 주세요.
k8sqna@jennifersoft.com
제니퍼의 앞선 기술력과 검증을 통해 개발된 에이전트 자동설치 기술은 현재 특허가 출원(출원번호 : 10-2025-00840240)되어 있습니다.