본문 바로가기

GitOps/Git

[Git] 개념

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