소프트웨어 개발 환경에서는 하나의 Application을 만들기 위해 수많은 Code 변경이 발생합니다.
개발자는 새로운 기능을 추가하고,
버그를 수정하고,
여러 개발자가 동시에 작업합니다.
하지만 Code 변경 이력을 관리하지 않으면 다음 문제가 발생합니다.
예:
개발자 A Code 수정
↓
개발자 B Code 수정
↓
변경 내용 충돌
↓
이전 버전 복구 어려움
이러한 문제를 해결하기 위해 Version Control System(VCS)이 필요합니다.
Git은 현재 가장 널리 사용되는 Distributed Version Control System(DVCS)입니다.
예:
Developer
↓
Git Repository
↓
Commit 기록
↓
Branch 관리
↓
Remote Repository
↓
협업 진행
Git 구조를 이해하면 DevOps Pipeline과 CI/CD Architecture의 기본을 이해할 수 있습니다.
| 구성 요소 | 역할 |
|---|---|
| Repository | Code 저장 공간 |
| Commit | 변경 기록 |
| Branch | 개발 작업 분리 |
| Merge | Code 통합 |
| Remote Repository | 원격 저장소 |
Git은 DevOps Engineering 환경에서 가장 기본이 되는 Version Control 기술입니다.
Git이란?
Git은 Source Code의 변경 사항을 추적하고 여러 개발자가 협업할 수 있도록 지원하는 분산 Version Control System입니다.
주요 기능:
- Code Version 관리
- 변경 이력 추적
- Branch 관리
- 협업 지원
- 이전 Version 복구
Software 개발 과정의 핵심 도구입니다.
Git Version Control Architecture
기본 구조:
Working Directory
↓
Staging Area
↓
Local Repository
↓
Remote Repository
Code 변경 과정을 단계별로 관리합니다.
Git Repository란?
Repository는 Git이 Code와 변경 이력을 저장하는 공간입니다.
종류:
| 유형 | 설명 |
|---|---|
| Local Repository | 개발자 PC 저장소 |
| Remote Repository | GitHub 등 원격 저장소 |
개발자는 Local에서 작업하고 Remote와 공유합니다.
Git Working Directory
Working Directory는 개발자가 실제 Code를 수정하는 공간입니다.
흐름:
Code 수정
↓
Git Status 확인
↓
Staging 이동
↓
Commit 생성
개발 작업이 시작되는 위치입니다.
Git Staging Area란?
Staging Area는 Commit 전에 변경 내용을 준비하는 공간입니다.
구조:
Working Directory
↓
git add
↓
Staging Area
↓
git commit
↓
Repository
Commit 대상 Code를 선택할 수 있습니다.
Git Commit이란?
Commit은 Code 변경 내용을 저장하는 기록 단위입니다.
포함 정보:
- 변경 내용
- 작성자
- 시간
- Message
Version History를 관리합니다.
예:
git commit -m "Add login feature"
Git Branch란?
Branch는 하나의 Code 흐름을 여러 개로 분리하는 기능입니다.
예:
main
|
|---- develop
|
|---- feature-login
기능 개발과 운영 Code를 분리할 수 있습니다.
Git Merge란?
Merge는 서로 다른 Branch의 변경 내용을 하나로 통합하는 과정입니다.
예:
feature Branch
↓
Merge
↓
main Branch
협업 개발에서 필수 기능입니다.
Git Remote Repository
Remote Repository는 여러 개발자가 Code를 공유하는 공간입니다.
대표:
- GitHub
- GitLab
- Bitbucket
DevOps Pipeline의 시작점입니다.
Git과 DevOps Architecture
DevOps 흐름:
Developer
↓
Git Commit
↓
Repository
↓
CI/CD Pipeline
↓
Build
↓
Deploy
↓
Production
Git은 DevOps Pipeline의 첫 번째 단계입니다.
Git과 Kubernetes 연결
Cloud Native 환경:
Developer
↓
Git Repository
↓
CI/CD
↓
Container Image Build
↓
Kubernetes Deployment
Kubernetes 운영에서도 Git은 핵심 역할을 합니다.
Git과 Infrastructure as Code
IaC 환경:
Terraform Code
↓
Git Repository
↓
Review
↓
Apply
↓
Cloud Infrastructure
Infrastructure 변경도 Code처럼 관리합니다.
Git Best Practice
권장:
- 의미 있는 Commit Message 작성
- Branch 전략 사용
- Pull Request 활용
- Code Review 진행
- Secret 정보 저장 금지
안정적인 개발 환경을 구성합니다.
Git 장애 분석
Repository 상태 확인:
git status
Commit 기록 확인:
git log
Branch 확인:
git branch
Remote 확인:
git remote -v
확인:
- 변경 내용
- Commit 상태
- Branch 충돌
- Remote 연결
Git 장점
| 장점 | 설명 |
|---|---|
| Version 관리 | 변경 기록 |
| 협업 | 다중 개발 지원 |
| 복구 | 이전 Version 복원 |
| Branch | 병렬 개발 |
Git은 현대 Software Engineering과 DevOps 환경의 기본 기술입니다.
자주 묻는 질문
Git과 GitHub는 같은 것인가요?
아닙니다.
Git은 Version Control System이고 GitHub는 Git Repository를 저장하고 협업 기능을 제공하는 Platform입니다.
Git은 개발자만 사용하는 기술인가요?
아닙니다.
DevOps, Cloud Engineer, Infrastructure Engineer도 Code와 Configuration 관리 때문에 사용합니다.
Kubernetes 운영에서도 Git이 필요한가요?
필요합니다.
GitOps Architecture에서는 Git Repository가 Kubernetes 운영 상태의 기준(Source of Truth)이 됩니다.
마무리
Git은 Source Code와 Infrastructure 변경 사항을 Version 단위로 관리하는 Distributed Version Control System입니다.
| 구성 요소 | 역할 |
|---|---|
| Working Directory | Code 작업 공간 |
| Staging Area | Commit 준비 |
| Commit | 변경 기록 |
| Branch | 개발 분리 |
| Remote Repository | 협업 저장소 |
Git 구조를 이해하면 CI/CD, GitOps, Infrastructure as Code와 같은 현대 DevOps Architecture의 기반을 구축할 수 있습니다.