Java/Spring 개발자를 위한 운영 환경 구조 정리
Spring Boot 애플리케이션을 Kubernetes 환경에서 운영할 때 가장 중요한 요소 중 하나는 로그와 모니터링 체계입니다.
로컬 환경에서는 로그 파일을 직접 확인할 수 있지만 Kubernetes에서는 애플리케이션이 컨테이너 기반으로 실행되기 때문에 로그 관리 방식이 달라집니다.
이번 글에서는 Spring Boot 애플리케이션을 Kubernetes에서 운영할 때 사용하는 로그와 모니터링 구조를 정리해 보겠습니다.
1. 기존 서버 환경의 로그 구조
전통적인 Java 서버 환경에서는 보통 다음과 같은 방식으로 로그를 관리합니다.
└ Spring Application
└ /logs/app.log
개발자는 서버에 접속하여 로그를 확인합니다.
이 방식은 서버 기반 환경에서는 문제가 없지만 Kubernetes 환경에서는 적합하지 않습니다.
2. Kubernetes에서의 로그 구조
Kubernetes에서는 컨테이너 로그를 stdout/stderr로 출력하는 방식을 사용합니다.
Spring Boot 애플리케이션 로그 구조
↓
stdout / stderr
↓
Docker Container
↓
Kubernetes Pod
즉 로그를 파일이 아니라 **표준 출력(Standard Output)**으로 출력하는 것이 기본 방식입니다.
로그 확인 방법
예
이 명령어로 컨테이너 로그를 확인할 수 있습니다.
3. Spring Boot 로그 설정
Spring Boot에서는 기본적으로 Logback을 사용합니다.
Kubernetes 환경에서는 로그를 파일이 아니라 콘솔로 출력하는 것이 좋습니다.
예시 설정
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
이렇게 하면 로그가 stdout으로 출력됩니다.
4. 로그 수집 구조
Kubernetes 환경에서는 보통 다음과 같은 로그 수집 구조를 사용합니다.
Spring Boot
↓
Container stdout
↓
Kubernetes
↓
Log Collector
↓
Log Storage
↓
Dashboard
대표적인 로그 스택은 다음과 같습니다.
ELK Stack
Elasticsearch
Logstash
Kibana
Loki Stack
Promtail
Loki
Grafana
최근 Kubernetes 환경에서는 Loki + Grafana 조합이 많이 사용됩니다.
5. Spring Boot 모니터링 (Actuator)
Spring Boot에는 Actuator라는 모니터링 기능이 있습니다.
Actuator를 사용하면 다음과 같은 정보를 확인할 수 있습니다.
- 애플리케이션 상태
- 메트릭
- JVM 정보
- HTTP 요청 통계
의존성 추가
Actuator endpoint 예
/actuator/metrics
/actuator/prometheus
6. Prometheus 기반 모니터링
Kubernetes 환경에서는 보통 Prometheus를 사용하여 메트릭을 수집합니다.
구조
Spring Boot
↓
Actuator Metrics
↓
Prometheus
↓
Grafana
Prometheus endpoint 설정
이렇게 하면 Prometheus가 메트릭을 수집할 수 있습니다.
7. Grafana 대시보드
Grafana를 사용하면 Spring Boot 애플리케이션의 상태를 시각화할 수 있습니다.
대표적으로 다음 정보를 모니터링합니다.
- CPU 사용량
- 메모리 사용량
- HTTP 요청 수
- 응답 시간
- JVM 메모리
구조
Grafana에서는 Spring Boot용 대시보드도 제공됩니다.
Spring Boot
↓
Prometheus
↓
Grafana Dashboard
8. Kubernetes 운영 환경 전체 구조
Spring Boot 로그와 모니터링 구조는 다음과 같습니다.
Spring Boot Application
↓
stdout logs
↓
Kubernetes Pod
↓
Log Collector (Promtail / Fluentd)
↓
Loki / Elasticsearch
↓
Grafana Dashboard
모니터링 구조
Spring Boot Actuator
↓
Prometheus
↓
Grafana
이 구조를 사용하면 애플리케이션 상태를 실시간으로 확인할 수 있습니다.
결론
Kubernetes 환경에서는 기존 서버 기반 로그 방식과 달리 컨테이너 중심 로그 구조를 사용합니다.
Spring Boot 애플리케이션을 Kubernetes에서 운영할 때는 다음 구성이 일반적입니다.
- stdout 로그 출력
- Prometheus 메트릭 수집
- Grafana 대시보드 시각화
- Loki 또는 Elasticsearch 로그 저장
이러한 구조를 통해 Java/Spring 애플리케이션의 운영 가시성과 안정성을 높일 수 있습니다
'Platform > Infra(DevOps)' 카테고리의 다른 글
| Spring Boot + Kubernetes CI/CD 배포 파이프라인 (0) | 2026.03.05 |
|---|---|
| Kubernetes에서 Spring Boot 무중단 배포 (Rolling Update) (0) | 2026.03.05 |
| 레거시 자바 생태계에서 Kubernetes의 의미 (0) | 2026.03.05 |
| Elasticsearch 실무 도입 가이드 – 용도, 사용법, 그리고 RDB·Redis·DB Full-Text와의 차이점 정리 (0) | 2026.03.03 |
| 그라파나와 프로메테우스의 사용법 및 타 도구와 성능 분석 (0) | 2026.03.03 |
