웹 기반 문서 편집기 프로젝트를 진행하며 기능 구현뿐만 아니라 안정적인 운영을 위한 DevOps 환경 구축에도 힘썼다. 특히 CI/CD 파이프라인의 상태를 실시간으로 확인하고, 애플리케이션이 구동되는 쿠버네티스 클러스터의 리소스를 시각화하는 과정은 서비스의 신뢰성을 높이는 핵심 단계였다. 이번 포스팅에서는 파이프라인 알림 설정과 클러스터 모니터링 구축 과정을 정리한다.
1. 파이프라인 모니터링 (Pipeline Monitoring)
개념 및 필요성
CI/CD 파이프라인 모니터링은 빌드, 테스트, 배포의 전 과정이 성공적으로 수행되었는지, 혹은 어느 지점에서 실패했는지를 개발자가 즉각적으로 인지할 수 있도록 돕는 시스템이다.
개발자가 매번 젠킨스(Jenkins) 대시보드에 접속해 빌드 상태를 확인하는 것은 비효율적이다. 배포 실패 시 즉각적인 대응을 하지 못하면 서비스 장애로 이어질 수 있기 때문에, 팀이 주로 사용하는 커뮤니케이션 도구(Slack 등)로 알림을 자동 전송하는 과정이 필수적이다.
구현 방법: Jenkins와 Slack 연동
릴리스 브랜치(release branch)를 통해 배포를 제어하고, 각 단계의 결과에 따라 슬랙으로 메시지를 보낸다. Jenkins Pipeline 스크립트(Jenkinsfile) 내 post 블록을 활용하면 빌드 성공/실패 여부에 따라 맞춤형 메시지를 구성할 수 있다.
💻 Jenkinsfile 예시 코드
pipeline {
agent any
stages {
stage('Build') {
steps {
sh './gradlew build'
}
}
// ... (Test, Deploy stages) ...
}
// 빌드 후 처리 (알림 발송)
post {
success {
script {
def msg = "✅ 빌드 성공: ${env.JOB_NAME} [${env.BUILD_NUMBER}]"
slackSend(channel: '#deploy-alarm', color: 'good', message: msg)
}
}
failure {
script {
def msg = "❌ 빌드 실패: ${env.JOB_NAME} [${env.BUILD_NUMBER}]\n확인 요망: ${env.BUILD_URL}"
slackSend(channel: '#deploy-alarm', color: 'danger', message: msg)
}
}
}
}
위와 같이 설정하면 빌드가 끝나는 즉시 슬랙 채널로 알림이 오며, 실패 시 로그를 바로 확인할 수 있는 URL을 제공해 트러블슈팅 속도를 높인다.
2. 클러스터 모니터링 (Cluster Monitoring)
개념 및 필요성
클러스터 모니터링은 쿠버네티스(Kubernetes) 환경 내의 노드(Node)와 파드(Pod)가 사용하는 CPU, 메모리, 네트워크 등의 시스템 자원 상태를 지속적으로 관찰하는 것이다.
애플리케이션이 정상적으로 떠 있더라도 메모리 누수(Memory Leak)가 발생하거나 CPU 사용량이 치솟으면 서비스가 멈출 수 있다.
따라서 메트릭 데이터(Metric Data, 시간이 지남에 따라 변하는 수치 데이터)를 수집하고 이를 시각화하여, 장애 징후를 사전에 포착해야 한다.
구현 방법: Prometheus와 Grafana
모니터링의 표준 조합인 프로메테우스(Prometheus)와 그라파나(Grafana)를 사용한다.
- Prometheus: 클러스터 내의 메트릭 데이터를 주기적으로 수집(Pull 방식)하고 저장한다.
- Grafana: 수집된 데이터를 차트와 그래프 형태의 대시보드로 시각화한다.
설치 과정이 복잡할 수 있으나, 쿠버네티스 패키지 매니저인 Helm을 사용하면 kube-prometheus-stack을 통해 한 번에 쉽게 설치할 수 있다.
💻 Helm 설치 및 설정 예시
# 1. Prometheus 커뮤니티 Helm 리포지토리 추가
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 2. 모니터링 스택 설치 (Prometheus + Grafana + AlertManager 포함)
helm install my-monitoring prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace
# 3. 설치 확인
kubectl get pods -n monitoring
설치 후 그라파나 서비스의 포트 포워딩을 통해 대시보드에 접속하면, 클러스터의 건강 상태를 한눈에 파악할 수 있는 대시보드가 자동으로 구성되어 있음을 확인할 수 있다.
3. 프로젝트 최종 정리 (Project Wrap-up)
이번 웹 문서 편집기 프로젝트는 단순한 구현을 넘어 소프트웨어 개발 생명주기(SDLC) 전체를 아우르는 경험이었다.
전체 프로세스는 다음과 같이 진행되었다:
- 요구사항 정의 및 설계: 어떤 기능을 제공할 것인지 정의하고, 시스템 아키텍처와 DB 스키마를 설계했다.
- 코드 구현: 핵심 기능인 동시 편집과 문서 관리 기능을 개발했다.
- 테스트: 단위 테스트(Unit Test)를 통해 개별 로직의 정합성을 검증했다.
- CI/CD: Jenkins를 구축하여 코드 변경 사항이 자동으로 빌드되고 배포되도록 자동화했다.
- E2E 테스트: 실제 사용자 시나리오를 바탕으로 종단 간 테스트를 수행해 전체 흐름을 점검했다.
- 모니터링: 앞서 언급한 Slack 알림과 Prometheus/Grafana를 통해 운영 안정성을 확보했다.
회고
개발의 끝은 배포가 아니라 '안정적인 운영'이라는 점을 깨달았다. 코드가 기능적으로 완벽하더라도 인프라 상황을 모니터링하지 못한다면 반쪽짜리 서비스일 뿐이다.
이번 프로젝트를 통해 구축한 모니터링 시스템은 향후 발생할 수 있는 잠재적 이슈를 선제적으로 방어하는 든든한 방패가 될 것이다.
'Programmers' 카테고리의 다른 글
| [86일차]하드웨어부터 데이터까지: 컴퓨터 구조, OS, 그리고 데이터베이스 (1) | 2026.01.22 |
|---|---|
| [85일차]컴퓨터의 언어부터 설계까지: 정보의 표현과 구조적 이해 (0) | 2026.01.21 |
| [83일차]AWS 클라우드 기반 Jenkins CI/CD 파이프라인 구축 및 자동화 (0) | 2026.01.16 |
| [82일차]Selenium 개요 및 구성 요소 및 테스트 예시 (0) | 2026.01.15 |
| [81일차]웹 기반 문서 편집기 제작 프로젝트 - 단위 테스트 (0) | 2026.01.14 |