GitOps
- Git을 중심으로 인프라스트럭처, 애플리케이션, 컨테이너 배포를 자동화
- CI/CD와 결합되어 개발 및 운영을 관리
버전 제어 시스템 (VCS)
- 코드, 문서 등등을 관리하고 추적
- 변경 사항 기록하여 이력 추적 가능
- 협업 가능
로컬 버전 제어 시스템 (Local VCS)
- local에서 모든 변경 사항 저장
- 모든 패치를 합산하여 특정 시점의 파일 모양 만듦
- 협업 불가능
- ex. 한글과 컴퓨터
중앙 집중식 버전 제어 시스템 (CVCS)
- 로컬 버전 제어 시스템에서 발전된 시스템
- 협업 가능
- 관리자가 세밀한 제어 가능
- 중앙 집중식 서버가 단일 장애 지점(SPOF)이 됨
- 서버의 다운타임에는 공동 작업 중단
- 서버가 손상되면 복구 불가
- ex. ppt 공유 문서
분산 버전 제어 시스템
- 중앙 집중식 버전 제어 시스템에서 발전된 시스템
- 중앙에서 최신 스냅샷만 checkout하지 않고 history를 포함해서 레포를 완전히 복사
- 서버가 손상되면 역으로 로컬에서 서버로 복사해서 복구 가능
- 원격 레포가 여러 개이므로 서로 다른 방식으로 작업 가능 (대신 잘 합칠 것)
- 다양한 workflow를 설정 가능
- ex. git
분산 버전 제어 시스템의 장점
- 이력 추적
- 협업
- 백업 및 복원
- 브랜치와 병합
- 오픈 소스 참여
- 일종의 커뮤니티
Git
- 분산 버전 제어 시스템
- 소스 코드 및 프로젝트 파일 변경 이력 관리
- 현 시점 VCS 최강자
특징
- 데이터를 생각하는 방식에서 타 VCS와 다르다.
- 타 VCS 시스템은 낱개 파일 변경으로 저장한다.
- Git은 커밋마다 모든 파일에 대한 스냅샷을 저장
- 공간 효율을 위해 변경되지 않은 파일에는 링크만 저장
- 즉, 타 VCS는 file stream처럼, Git은 스냅샷 stream처럼 생각한다는 것
- 원격 작업 분리
- Git은 로컬만 있어도 작업이 가능하다.
- 협업을 함에도 동일 네트워크의 다른 컴퓨터 정보가 필요하지 않다.
- 요약하면 평소에는 로컬에서만 작업하지만, 필요할 때만 중앙(remote)과 상호작용
- 파일 무결성
- 모든 변경 항목이 SHA-1 고유 체크섬으로 관리됨
- 모든 버전의 스냅샷에 대해 체크섬을 관리하므로 이력을 수정하는 것이 불가능
영역
- 워킹 디렉토리
- 프로젝트의 한 버전에 대한 단일 체크아웃
- Git 디렉토리의 DB에서 checkout하여 사용 가능
- 스테이징 영역
- 다음 커밋에 들어갈 내용에 대한 정보 저장
- Git에서는 인덱스라고 표현함
- Git 디렉토리 (.git)
- 프로젝트의 메타데이터, 오브젝트를 저장하는 곳
- 중앙에서 이력을 쌓아놓는 곳
- 다른 컴퓨터에서 레포를 복제할 때 해당 디렉토리를 복사함.
Git Workflow
- 작업 트리에서 파일 수정
- 변경 사항을 스테이징하여 스테이지 영역에 추가
- 커밋 수행하면 스테이징 영역의 파일을 가져와서 스냅샷을 Git 디렉토리에 저장.
'GitOps > Git' 카테고리의 다른 글
[Git] 브랜치 (0) | 2024.12.31 |
---|---|
[Git] 기초 및 명령어 (0) | 2024.12.30 |
[Git] Github flow 실습: Member편 (0) | 2024.06.24 |
[Git] Github flow 실습: Owner편 (0) | 2024.06.24 |
[Git] Github flow (0) | 2024.06.24 |