목표
GitOps를 구현해보자!
DevOps란?
https://aws.amazon.com/ko/devops/what-is-devops/
나는 DevOps의 정의를 알아보기 위해 AWS 공식 사이트에 들어가보았다.
DevOps는 애플리케이션과 서비스를 “빠른 속도”로 제공할 수 있도록 조직의 역량을 향상시키는 문화 철학, 방식 및 도구의 조합이다. 소프트웨어 기능, 개선 요청 또는 버그 수정 등 하나의 아이디어가 개발에서 배포에 이르는 프로세스의 속도를 높임으로써 더 빨리 프로덕션 환경에 전달될 수 있다.
즉, "빠른 속도"로 사용자에게 서비스를 제공할 수 있도록 Delivery Pipeline을 구축하는 것이 DevOps라고 이해하였다.
GitOps란?
깃옵스는 프로젝트에 DevOps를 적용하기 위한 여러 컨셉 중 하나이다.
'개발과 운영의 경계를 허문다'는 데브옵스의 철학에서 알 수 있듯이, GitOps는 배포 단위 당 하나의 Git 리포지토리를 단일 원천으로 하며, 인프라를 코드로(IaC)하는 정도에서 확장하여 애플리케이션의 배포까지 관련된 모든 요소를 코드화 하여 Git에서 관리하는 것을 목표로 한다.
CNCF의 OpenGitOps Project에서는 GitOps를 다음과 같이 정의했다.
1. Declarative: A system managed by GitOps must have its desired state expressed declaratively.
2. Versioned and immutable: Desired state is stored in a way that enforces immutability, versioning and retains a complete version history.
3. Pulled automatically: Software agents automatically pull the desired state declarations from the source.
4. Continuously reconciled: Software agents continuously observe actual system state and attempt to apply the desired state.
내가 이해하기로, Git을 이용하여 DevOps를 구현하며 선언형으로 버전화된 코드 및 설정 파일을 관리하며, 자동화된 시스템을 구축하면 GitOps를 구현했다고 말할 수 있을 것 같다.
나는 하나의 Git Repo를 이용하여 소규모 GitOps 프로젝트를 진행해볼 것이다.
Azure
Azure 클라우드를 사용하여 시스템을 구축해볼 것이다.
마이크로소프트 재직자분께 멘토링을 받기도 했고, Azure의 공식문서가 잘 구성되어 있고 구축 사례가 많아서 재밌게 구축해볼 수 있을 것 같다!
System Architecture
위와 같이 Azure GitOps 프로젝트를 구성했다.
ACI로 시작했는데, 나중에는 AKS를 적용하고 Multi Cloud에 배포하면서 프로젝트를 발전시켜보고 싶다.
다음 게시글부터 본격적으로 프로젝트를 시작할 예정이다.
'🍀 Cloud Architect > DevOps' 카테고리의 다른 글
Azure ACI 배포하기 (with. Docker) (2) | 2023.11.08 |
---|---|
GitOps 설정 (Github Action Workflow, Branch Protect) (0) | 2023.11.06 |