🐟swkoo.kr
🐟

Pipeline Observatory

GitOps 파이프라인과 런타임 상태를 한 화면에서 판단하는 운영 콘솔

문제 정의

운영 판단 속도를 떨어뜨리는 실무 문제를 기준으로 설계했다.

  • 서비스 수가 늘면서 CI/CD 파이프라인이 분산되어 전체 상태 파악이 느려진다.
  • 장애 발생 시 배포 상태와 런타임 지표가 분리되어 원인 추적 시간이 길어진다.
  • 단일 운영자 환경에서 수동 확인이 늘어나면 운영 리스크가 커진다.

설계 원칙

단일 운영자 환경에서 실제로 유지 가능한 기준을 선택했다.

Git 기반 운영

배포 상태와 변경 이력을 Git으로 고정해 추적과 롤백을 단순화한다.

수동 작업 최소화

빌드, 배포, 동기화를 자동화해 한 명이 여러 서비스를 운영할 수 있게 한다.

빠른 원인 분석

파이프라인 상태와 런타임 지표를 한 화면에서 연결해 MTTR을 줄인다.

자원 제약 고려

단일 노드 환경을 전제로 알람 기준과 리소스 정책을 보수적으로 설계한다.

표준화된 배포 경로

서비스별 편차를 허용하지 않고 동일한 배포 경로로 운영 안정성을 확보한다.

아키텍처 및 데이터 흐름

코드 변경부터 운영 알람까지 이어지는 흐름을 기준으로 설명한다.

OCI IaaS 기반 전체 인프라 구성

Success/ActiveCI ProcessCD ProcessFuture/Planned

데이터/이벤트 흐름

  1. 1코드 변경이 GitHub Actions를 트리거해 테스트와 빌드를 수행한다.
  2. 2이미지는 OCI Container Registry로 푸시되고 태그가 갱신된다.
  3. 3Argo CD가 Git 상태를 감시해 동기화한다.
  4. 4k3s 클러스터의 Deployment가 업데이트되고 런타임이 변경된다.
  5. 5Prometheus가 지표를 수집하고 Grafana에서 운영 지표를 시각화한다.

실패/알림 흐름

  • CI 실패 시 이미지가 생성되지 않아 배포가 진행되지 않는다.
  • 동기화 실패 또는 헬스 저하 시 Alertmanager가 Discord로 알림을 전달한다.
  • 알림 수신 후 최근 배포를 롤백하거나 로그/지표를 기반으로 원인을 판단한다.

CI/CD 운영 시나리오

운영 시나리오 중심으로 자동화 범위를 정의했다.

PR 머지 시 자동 실행

테스트 → 빌드 → 이미지 푸시 → 매니페스트 반영 후 Argo CD 동기화가 수행된다.

실패 시 중단 지점

CI 실패 시 이미지 생성이 중단되고, CD 실패 시 동기화 상태가 OutOfSync로 유지된다.

롤백 방식

Git revert 또는 Argo CD의 이전 리비전 동기화로 즉시 복구한다.

배포 후 모니터링

Prometheus 지표와 Alertmanager 알람이 배포 직후 상태를 검증한다.

관측

Prometheus/Grafana 기반으로 알람 기준을 직접 정의하고, Alertmanager → Discord로 전달한다.

주요 지표

  • API 5xx 오류율과 P95 응답 지연
  • Pod 재시작 횟수, CPU/메모리 사용률
  • Argo CD Sync/Health 상태와 이미지 태그

알람 기준

  • 5xx 오류율 2% 이상 2분 지속
  • Pod 재시작 10분 내 3회 이상
  • Argo CD OutOfSync 5분 이상 지속

운영 판단

  • 배포 직후 오류율 상승 시 직전 이미지로 롤백
  • 재시작이 반복되면 의존성/리소스 설정을 우선 점검
  • Sync 불일치가 길어지면 매니페스트 변경 사항을 재검증

Alertmanager 규칙 예시 (swkoo-application-alerts)

- alert: SwkooBackendHighErrorRate
  expr: sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) > 0.02
  for: 2m
  labels:
    severity: critical
  annotations:
    summary: "백엔드 5xx 오류율 상승"
    runbook: "최근 배포 롤백 또는 인그레스 로그 확인"

트레이드오프

선택하지 않은 옵션과 감수한 리스크를 명확히 기록한다.

고가용성(HA) 미구현

단일 노드 환경에서 운영 복잡도 대비 효과가 낮아 제외했다.

리스크: 노드 장애 시 서비스 중단을 감수한다.

Managed Kubernetes 미사용

직접 운영 범위를 명확히 하고 비용을 통제하기 위해서다.

리스크: 업그레이드/보안 패치 책임이 운영자에게 집중된다.

단일 클러스터 전략

리소스 제약과 운영 복잡도 최소화를 우선했다.

리스크: 테넌트 간 자원 격리 한계가 존재한다.

Cloud Monitoring 미사용

관측 스택을 직접 운영해 알람 기준을 주도하기 위해서다.

리스크: 알람 튜닝과 노이즈 감소 책임을 감수한다.

1

총 파이프라인

1

정상

1

동기화 완료

마지막 업데이트: 2026. 3. 1. 오전 8:40

swkoo-portfolio

default · swkoo

SyncedHealthy

📍 Pipeline Timeline

Commit

c5c2693

Build

03. 01. 오전 08:31

Push

Sync

Synced

03. 01. 오전 08:39

Run

Healthy

03. 01. 오전 08:39

Revision
c5c2693aa665f17db2233fa74aea9e8b5496a093
Target
main
Last Synced
2026. 3. 1. 오전 8:39
Last Deployed
2026. 3. 1. 오전 8:39

Repo: https://github.com/sungwookoo/swkoo-portfolio.git