GitOps란 무엇인가요? 프레임워크 소개

각 팀은 프로세스를 간소화하고 빠르게 배달하며 환경을 안정적으로 유지하는 은색 탄환을 찾고 있습니다. 최근 몇 년 동안 높은 수용을 보인 접근 방식 중 하나는 GitOps입니다. 이 단어는 다른 한 모드의 DevOps 트렌디한 용어처럼 들릴 수 있지만, 팀이 인프라와 배포를 관리하는 방식에서 혁명적인 변화를 나타냅니다.

이 기사에서는 GitOps에 대해 논의하며, 그것이 무엇을 의미하는지 그리고 전통적인 DevOps 솔루션과 어떻게 다른지 설명할 것입니다.

GitOps는 무엇인가?

GitOps는 Git 기반 워크플로우를 인프라 자동화 및 애플리케이션 배포에 사용하는 프레임워크입니다. 그 핵심은 개발자가 소프트웨어 변경을 통제하기 위해 사용하는 원칙과 관행을 운영에 적용하는 것입니다. 간단히 말하면, GitOps는 Git 저장소가 단일 사실의 원천이며, 변경이나 수정은 풀 리퀘스트를 통해 이루어지고, 자동 시스템이 이러한 변경을 대상 환경에 적용하는 실천입니다.

GitOps의 주요 원칙

GitOps의 주요 특징은 다음과 같습니다:

Git을 사실의 원천으로

인프라, 구성, 애플리케이션 배포 등 모든 것이 Git 저장소에 저장되어야 합니다. 이를 통해 모든 것을 통제할 수 있습니다. 클러스터는 Git 저장소에서 구성, 배포 구성, 환경 관리 도구를 읽고 적용합니다. 도구는 변경 사항을 추적하며, 저장소에서 변경이 감지되면 도구가 자동으로 이 변경을 적용합니다.

선언적 인프라

의미는 시스템 내 모든 것의 상태를 YAML 또는 JSON을 사용하여 선언해야 한다는 것입니다. 도구들은 그 상태를 실제 상태와 비교하고, 선언된 상태와 일치하도록 모든 가능한 것을 수행합니다.

자동화 및 CI/CD

Git 저장소에 대한 변경 사항은 자동으로 운영을 수행해야 합니다. 예를 들어, Jenkins, ArgoCD, 또는 Flux와 같은 도구가 새로운 구성이나 애플리케이션 버전을 자동으로 배포하여 시스템이 저장소의 상태와 일치하도록 보장합니다. 이 약자의 “CD” 부분은 특히 중요하며, 변경 사항은 지속적으로 가능한 한 빨리 나타나야 합니다.

자기 치유 및 지속적인 조정

GitOps 도구들은 일반적으로 시스템을 모니터링하고 현재 상태가 저장소에 저장된 상태와 일치하는지 확인하는 방법을 가지고 있습니다. 이상이 발견되면 도구들은 소위 “치유” 환경을 변경하여 저장소에 설명된 상태로 되돌리게 됩니다.

DevOps에서 GitOps로의 전환

GitOps의 구체적인 내용과 DevOps와의 차이를 탐구하기 전에, 전통적인 DevOps의 기여를 이해하는 것이 중요합니다. DevOps는 개발 및 운영 팀을 협력을 증진시키면서 테스트, 배포, 인프라 프로비저닝과 같은 자동화된 프로세스를 최적화하는 방식으로 관리하는 것을 의미합니다.

일반적으로 DevOps 절차에는 Jenkins, Kubernetes, Docker, Ansible와 같은 도구를 사용하여 소프트웨어 개발 주기 내에서 지속적 통합 지속적 배포 (CI/CD) 프로세스를 개발하여 소프트웨어 배송 속도를 향상시킵니다.

GitOps는 어디에 맞춰요?

GitOps는 이러한 DevOps 진화 원칙을 더 구조화된 방식으로 구축합니다. Git 접근 방식을 Day 2 운영에 더 발전된 방식으로 통합하며, 추가적인 사항으로 취급하지 않습니다.

전통적인 DevOps 기술을 사용할 때, 다양한 팀들이 동시에 인프라와 애플리케이션 코드에 작업할 가능성이 높아 위험을 초래할 수 있습니다. 모든 이러한 활동은 Git 하에서 수행되며, 인프라 변경 사항이 작다 하더라도 동일하게 버전 관리됩니다.

GitOps 워크플로우 채택의 이점

향상된 보안과 규제 준수

버전 관리된 Git 레포지토리를 인프라와 애플리케이션에 접근하고 변경하는 유일한 방법으로 사용하는 이점 중 하나는 검증 가능한 감사 추적을 생성하는 점입니다.

향상된 개발자 경험

개발자들은 Git과 같이 이미 익숙한 도구를 사용하여 인프라 관리를 수행할 수 있습니다. 개발자들이 인프라 관리에 같은 도구를 사용하도록 허용함으로써 GitOps는 추가 도구의 필요성을 없애고 GitOps 워크플로의 채택을 더 쉽게 만듭니다.

빠른 롤백과 재해 복구

많은 전통적인 DevOps 파이프라인의 문제 중 하나는 변경 사항을 롤백하기 쉽다는 점입니다. GitOps는 레포지토리의 이전 버전을 체크아웃하여 전체 시스템을 이전 상태로 롤백할 수 있게 해줍니다. 이는 재해 상황에서 복구 시간을 크게 줄일 수 있습니다.

��境 간 일관성과 일관성

Git은 진실의 원천으로, Git에 있는 것은 개발 브랜치에서 프로덕션 브랜치까지 시스템의 상태와 유사해야 합니다. “내 기계에서는 돌아간다”는 말을 더 이상 하지 않아도 됩니다.“It works on my machine.” 다른��경에서 다른 구성이 수동으로 변경될 때 발생하는 일반적인 배포 이슈가 있습니다.

확장성

GitOps는 전통적인 구성 관리 솔루션보다 더 확장 가능합니다. 선언적이지 않고 명령적이라는 개념을 도입합니다. 환경을 한 곳에서 변경하는 대신, GitOps에서는 환경을 한 번 설명합니다. 도구는 그 설명이 맞는 환경을 지속적으로 보장하고 모든 시스템에서 해당 설명을 만족하는 기계를 구축합니다.

GitOps가 DevOps 관행을 어떻게 변환시키는가

GitOps는 DevOps CI/CD 도구와 프로세스에서 완전히 새로운 좌측 이동입니다. 몇 가지 주요 전통적인 DevOps 솔루션들이 GitOps를 현재 채택하고 있거나, 미래에 GitOps 실천을 통합할 계획입니다:

1. 인프라 애자일 코드

DevOps가 인프라를 생성하고 관리하며, 가능하다면 이 절차를 자동화할 수 있어야 합니다. DevOps 마스터는 Terraform이나 CloudFormation과 같은 도구를 사용할 수 있지만, 다른 전문가는 같은 스크립트를 실행하여 완전히 다른 환경을 만들 수 있습니다. 이곳에서 인프라 애자일 코드가 등장합니다. 이는 모든 IaC 구성을 Git에 저장하는 것을 주로 의미합니다. 이 시스템에서는 모든 것이 자동화되고, 더 중요한 것은 지속적으로 확인된다는 점입니다.

2. CI/CD 파이프라인

전통적인 DevOps 워크로드에서 CI/CD 파이프라인은 코드의 테스트, 빌드, 배포를 자동화합니다. 그러나 GitOps의 경우, CI/CD 파이프라인은 인프라 변경을 배포하는 데도 사용됩니다. ArgoCD와 Flux와 같은 도구는 기존 CI/CD 파이프라인을 강화하여 Git 레포지토리를 모니터링하고 변경이 푸시되면 환경을 자동으로 업데이트합니다. 따라서 파이프라인은 개발자에게 더 많은 작업을 수행하고 사이클을 가속화합니다.

3. 모니터링 및 가시성

GitOps는 모니터링과 가시성에 중점을 두어 더 신뢰할 수 있습니다. GitOps에서 사용되는 도구는 실시간 환경을 지속적으로 모니터링하고 Git에 정의된 상태와 비교합니다. 따라서 시스템이 정의된 상태에서 벗어나면 자동으로 롤백할 수 있습니다. 자동 롤백은 문제 있는 환경을 빠르게 복구하여 다운타임을 최소화하고 시스템의 신뢰성을 높입니다.

결론

결론적으로, GitOps는 단순한 유행어가 아닌 전통적인 DevOps 관행을 혁신할 수 있는 강력한 접근 방식입니다. 인프라와 배포를 코드로 취급하여 GitOps는 수동 운영의 필요성을 제거하고 모든 환경에서 원하는 상태를 보장합니다.

DevOps CI/CD 서비스를 현대화하는 것을 고려하는 팀들에게는, GitOps 워크플로우를 채택하는 것이 더 효율적이고 신뢰성 있게 원하는 결과를 달성할 수 있는 방법입니다. ArgoCD와 Flux와 같은 도구를 통해 GitOps는 밝은 미래를 가지고 있으며, 미래의 DevOps 풍경에서 중요한 부분이 될 수 있습니다.

Source:
https://dzone.com/articles/an-introduction-to-gitops