콘텐츠로 바로가기

GitOps & Progressive Delivery

Git 저장소를 인프라의 단일 진실 공급원(SSOT)으로 삼아 자동으로 동기화하고, 트래픽을 점진적으로 노출하며 리스크를 수치적으로 통제하는 현대적 배포 공학을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts7 min read

1. Overview

GitOps 및 점진적 전달 역학(GitOps & Progressive Delivery, GPD)은 "사용자가 보는 것은 Git에 있는 것과 1비트도 다르지 않아야 한다"는 엄격한 동기화 철학과, 배포의 리스크를 수치적으로 쪼개어 아주 조금씩만 노출하는 '정밀 리스크 제어 공학'입니다.

학습자는 Git의 선언적 상태와 실제 하드웨어 상태를 강제로 일치시키는 화해(Reconciliation) 루프의 물리적 기제와, 특정 사용자 그룹에게만 기능을 여는 **피처 플래그(Feature Flags)**의 수리 모델을 배웁니다. 특히, 에러율과 지연 시간 지표에 따라 배포를 중단하거나 진행하는 자동화된 카나리(Canary) 배포의 물리학을 익힙니다. 이를 통해 수천 번의 배포를 수행하면서도 시스템 전체의 안정성을 수리적으로 보장하는 하이엔드 클라우드 네이티브 거버넌스 역량을 확보합니다.

2. Scope & Boundaries

In-Scope

  • GitOps Principles: Git을 SSOT(단일 진실 공급원)로 하는 인프라 자가 복구 물리 수순
  • Reconciliation Loop: 선언된 상태(Desired)와 현재 상태(Actual)의 수리적 수렴 메커니즘
  • Deployment Control: Argo CD, Flux 등을 활용한 클러스터 상태의 물리적 동기화
  • Progressive Delivery: Canary, Blue-Green 배포의 지표 기반 자동 승인/거부 모델
  • Feature Management: 코드 배포와 기능 노출을 물리적으로 분리하는 피처 플래그 수순

Out-of-Scope

  • 하드웨어 가상 서버의 자체 프로비저닝 상세 (09-03-03 IDP 영역에서 분담)
  • 어플리케이션 소스 코드의 단위 테스트 작성 상세 (09-02-02 TAS 영역에서 분담)

Boundaries

  • GPD vs. IDP: IDP(09-03-03)가 '인프라를 코드로 정의하는 행위'에 집중한다면, GPD는 그 정의된 코드가 '운영 환경과 영구적으로 일치하도록 만드는 유지 보수 루프'에 집중하여 구분합니다.

3. Counterexample

  • 단순히 "깃으로 배포하기"라 설명하는 것은 GPD 학습이 아닙니다. 왜 GitOps 환경에서 클러스터의 설정을 수동으로(GUI나 CLI로) 바꿨을 때 'Reconciliation' 로직이 이를 수초 내에 물리적으로 덮어써 일관성을 강제하는지 수리적으로 증명할 수 있어야 하며, 피처 플래그 관리가 안 되어 코드 속에 쌓이는 '데드 플래그'가 시스템의 물리적 인지 부하(ComplexityComplexity)를 어떻게 수치적으로 가중시키는지 논증하지 못한다면 GPD의 본질을 이해하지 못한 것입니다.

4. Prerequisites

  • IaC & Deployment Physics (Basic): 09-03-03의 인프라 정의 및 배포 전략 이해가 필수입니다.
  • Container Orchestration & Kubernetes (Recommended): 07-06-03의 k8s 리소스 모델 및 컨트롤러 이해가 권장됩니다.

5. Learning Map

  1. Source of Truth: "Git에 없는 것은 인프라에도 없다"는 물리적 단일 진실을 정립합니다.
  2. Infinite Sync Loop: 실제 환경이 Git의 명세에서 멀어지는 순간 즉시 원복하는 자가 치유(Self-healing)를 배웁니다.
  3. The Metered Release: 수치 데이터(Error Rate 등)를 보고 배포의 진행 속도를 물리적으로 조절합니다.
  4. Decoupled Future: 코드의 배포는 상시 수행하되, 기능의 공개는 비즈니스 시점에 수리적으로 제어하는 완벽한 통제권을 완성합니다.

6. Learning Topics

Basic

Core: GitOps의 4대 원칙과 동기화 (GitOps Foundations)

  • Why to Learn: 운영 환경의 상태가 어떻게 변했는지 궁금해하지 않고, 오직 Git만 보면 되는 물리적 투명성을 얻기 위해서입니다.
  • What to Learn:
    • Declarative Description: 시스템 전체 상태의 수리적 명세화
    • Versioned & Immutable: Git 이력을 통한 인프라의 시간 여행 물리 기제
    • Automated Pull: 클러스터가 Git을 감시하여 스스로를 갱신하는 수순
  • How to Learn:
    • Argo CD를 설치하고 Git의 YAML 파일을 수정했을 때, 1분 내에 실제 서버의 설정이 물리적으로 변하는 '화해 루프' 확인 실습
    • Git 기록에서 특정 시점의 해시(HashHash)로 '롤백' 명령을 내렸을 때 시스템이 과거 물리 상태로 회항하는 과정 관찰
  • Implement: 버전 태그를 입력받아 k8s 매니페스트 파일의 주소를 생성하는 기초 GitOpsManifest

Core: 화해 루프와 자가 치유 물리 (Reconciliation Mechanics)

  • Why to Learn: 누군가 몰래 바꾼 설정으로 인해 발생하는 '설정 오염' 장애를 물리적으로 자동 차단하기 위함입니다.
  • What to Learn:
    • Continuous Diffing: 명세와 실제의 수치적 괴리를 실시간 연산하는 루프
    • Dry-run Mechanics: 실제 반영 전 어떤 물리적 변화가 생길지 미리 예측하는 수순
    • Automated Correction: 괴리 발견 시 Git의 상태로 하드웨어를 강제 덮어쓰기 하는 물리학
  • How to Learn:
    • 운영 중인 파드(Pod)의 개수를 CLI로 몰래 늘려보고, GitOps 도구가 이를 수초 내에 수리적으로 삭감하여 복구하는 장면 관찰 실습
    • 동기화 오류(OutofsyncOut-of-sync) 발생 시 지표를 통해 발생 원인을 수치적으로 분석하는 훈련
  • Implement: 명세서 값과 실제 환경 수치를 대조하여 다름을 알리는 가상 DiffEngine

Practical

Core: 점진적 전달과 지표 기반 배포 (Progressive Delivery)

  • Why to Learn: 대규모 사용자에게 동시에 문제를 일으키는 '빅뱅 배포'의 위험을 물리적으로 갈기갈기 쪼개기 위해서입니다.
  • What to Learn:
    • Dynamic Traffic Splitting: 사용자 비중(1%,5%,10%1\%, 5\%, 10\% \dots)에 따른 물리적 트래픽 분배
    • Automated Analysis: 프로메테우스 등 지표와 연동해 배포 품질을 수리 판별
    • Automatic Rollback: 배포 중 에러율 임계치 돌파 시 즉시 물리적 중단 및 회귀
  • How to Learn:
    • Flagger나 Argo Rollouts를 사용하여, 신규 버전 배포 시 5분 동안 에러가 없어야만 다음 단계로 넘어가는 물리 파이프라인 구축 실습
    • 배포 중 인위적으로 에러를 발생시켜, 시스템이 스스로 배포를 '중단'하고 원복하는 수리적 가용성 증명
  • Implement: 에러율(EE)과 지연시간(LL)을 입력받아 배포 진행 여부를 결정하는 ReleaseHurdle 알고리즘

Advanced

Core: 피처 플래그와 런타임 거버넌스 (Runtime Governance)

  • Why to Learn: "오늘 밤 12시 오픈"을 위해 밤을 새우지 않고, 클릭 한 번으로 수만 대 서버의 기능을 물리 전이시키기 위함입니다.
  • What to Learn:
    • Feature Toggles: 코드의 물리적 실행 경로를 실시간으로 제어하는 스위치
    • Multi-variate Flags: 유저 등급이나 국가에 따라 다른 물리적 로직 제공
    • Flag Cleanup Ethics: 기능 검증 완료 후 오염된 코드(Flag)를 세척하는 수순
  • How to Learn:
    • LaunchDarkly나 Unleash를 연동하여, 배포 없이도 웹사이트의 특정 버튼이 물리적으로 생겼다 사라지는 현상 제어 실습
    • 수천 개의 플래그가 존재할 때 하드웨어 메모리 점유율과 응답 속도에 미치는 수리적 오버헤드 분석
  • Implement: 특정 조건(사용자 ID 해시 등)에 따라 기능을 활성화할지 판단하는 FlagEvaluator

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
GitOps Git 저장소를 신뢰의 원천으로 삼아 인프라와 애플리케이션의 상태를 자동 동기화하는 물리 운영 모델입니다. 기본 운영 철학 SSOT / Sync CI/CD 단순히 '깃 사용' 아님 Industry core
Reconciliation 시스템의 기대 상태와 실제 상태를 지속적으로 비교하여 동일하게 맞추는 수리적 폐쇄 루프 제어 과정입니다. 추천 자가 치유 Control Loop / Drift Monitoring 정기 점검과 다름 P1:CS2023 core
Progressive Delivery 배포 단계를 세분화하고 관찰 가능한 지표를 통해 노출 범위를 점진적으로 넓히는 제어 공학입니다. 추천 리스크 제어 Canary / Metrics Continuous Delivery 속도보다 '통제' 우선 Industry core
Feature Flag 코드 수정이나 재배포 없이 런타임에 특정 기능을 활성화/비활성화할 수 있는 물리적 조건부 분기입니다. 실무 기능 제어 Toggle / Rollout Config 설정값과 개념적 구분 Industry core

8. References

Primary

Secondary

  • [GitOps: Cloud-native Continuous Deployment] — The GitOps foundational book.
  • [Feature Management: A Guide to Feature Flagging] — Detailed patterns for GPD.

Industry

  • [OpenGitOps: The GitOps Principles] — Official community standard.
  • [Cloud Native Computing Foundation (CNCF): Progressive Delivery Landscape] — Tooling and patterns.

9. Final Checklist

Primary

  • 'GitOps'의 'Pull' 모델이 'Push' 모델보다 클러스터 보안 및 하드웨어 자격 증명 관리 측면에서 왜 물리적으로 유리한지 설명 가능한가? (P2)
  • '화해 루프'가 시스템의 '안정적인 정적 상태(Steady State)'를 수리적으로 어떻게 유지하는지 기술할 수 있는 가? (P2)

Secondary

  • '피처 플래그' 시스템의 장애가 전체 애플리케이션 하드웨어 메모리 폭주로 이어지는 물리적 경로를 소통 가능한가?
  • 점진적 전달 과정에서 '에러율 지표'의 노이즈를 걸러내고 순수 배포 결함만 수리적으로 판별하는 수순을 논증할 수 있는 가?

Industry

  • 대규모 조직에서 'GitOps' 저장소 구조를 '앱별'로 나눌지 '클러스터별'로 나눌지 물리적 확장성 관점에서 제안할 수 있는 가? (SFIA)
  • Argo CD의 'Self-healing' 옵션이 긴급 핫픽스 시 개발자의 수동 물리 개입(CLI)을 어떻게 방해하고 처리하는지 분석할 수 있는 가?