일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SAA-CO2
- SAA
- awscli
- aws
- aws ses
- Datadog
- goroutine
- 메일 인증 프로토콜
- Kubernetes
- Lambda
- DKIM
- Ingress
- SMTP
- Fluentbit
- SPF
- SAA-CO3
- dMarc
- EKS
- go
- serverless
- gochannel
- JVM
- Fargate
- 도커
- K8S
- Certified Solutions Architect
- BitBucket
- docker
- Java
- Today
- Total
DevOps Tasks
Git 이란? 본문
Git 이란?
지금까지 오늘날 환경에서 가장 널리 사용되는 버전 관리 툴 ( Version Control System, VCS ) 은 Git 이다.
Git은 원래 Linux 운영 체제 커널을 만든 사람으로 유명한 Linus Torvalds 가 2005년에 개발한 오픈 소스 프로젝트다.
“ 버전 관리” 는 무엇이고 우리는 왜 이것을 알아야 할까?
버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.
따라서 , VSC를 사용하면 선택한 파일을 이전 상태로 되돌릴 수 있고, 변경 사항을 비교하고, 변경한 사람 및 변경시기를 추적할 수 있다.
또한, 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.
버전 관리의 종류는 크게 2가지로 나눌 수 있다.
Client-Server Model
중앙 서버가 존재하여, 다수의 Client 들은 중앙 서버에서 각자 맡은 역할만 작업한 후, 다시 중앙으로 통합하는 것으로 볼 수 있다.
대표적으로 CVS, Subversion ( SVN ) 등이 있다.
Distributed Model
중앙 서버가 존재하지만, 다수의 Client 들은 각자의 컴퓨터 저장소에 중앙 서버의 전체 사본을 가지고 작업하는 것을 의미한다.
대표적으로 git이 있다.
그렇다면 SVN과 git의 차이점에 대해 정리해 보자
SVN과 Git 차이점
Git과 SVN의 차이점은 은 분산형 관리 시스템 (Distributed revision control)이라는 것이다.
SVN은 중앙 서버에 소스와 이력을 기록하는 것과 달리
Git은 소스를 여러 개발자들의 로컬 저장소와 원격 저장소에 분산해서 저장한다.
그렇기 때문에 중앙 서버에 크리티컬 한 장애가 발생해도 로컬 저장소에 Commit을 할 수 있으며, 로컬 저장소들을 이용하여 중앙 저장소의 복원도 가능하다.
소스 코드의 사본을 로컬에서 관리하기 때문에 Git이 SVN에 비해 훨씬 빠르다.
당연스럽게 조직에서는 Git을 사용하면 유연한 협업을 통해 소프트웨어를 만드는 방식이 달라진다.
개발자용 Git Branch Workflow
Git의 가장 큰 장점 중 하나는 Branch 기능이다.
중앙 집중식 버전 제어 시스템과는 달리 Git 브랜치는 비용이 저렴하고 병합하기 쉽다.
따라서 많은 Git 을 사용하는 개발자들에게 인기 있는 기능은 Branch workflow 이다.
Branch 기능은 소스 코드를 변경할 때마다 환경을 분리할 수 있다.
개발자가 작업을 시작하려고 할 때 작업의 규모와 관계없이 새 Branch를 만든다.
그러면 main branch에 항상 Production의 품질 코드가 포함될 수 있다.
Branch 기능을 사용하면 Production 코드를 직접 편집하는 것보다 안정적일 뿐만 아니라 조직적인 이점도 얻을 수 있다.
Distributed Development
앞서, Git과 SVN의 차이점에서 볼 수 있듯이 SVN는 각 개발자는 하나의 중앙 집중식 리포지토리를 가리키는 작업 복사본을 받는다.
하지만 Git은 분산된 버전 제어 시스템이다.
각 개발자는 작업 복사본 대신 전체 Commit History가 포함된 자체 로컬 저장소를 갖게 된다.
전체 로컬 기록이 있으면 Git의 속도가 빨라질 수 있다.
네트워크 없는 상황에서도 Commit을 만들거나, 파일의 이전 version을 검사하거나, Commit 간에 diff를 수행할 수 있기 때문이다.
누군가가 SVN에서 Production Branch를 중단하면 수정될 때까지 다른 개발자가 변경 사항을 확인할 수 없는 경우도 있을 것이다.
Git에서는 이런 종류의 장애 아닌 장애가 발생하지 않는다.
Pull Request
기본적으로 Branch 기능에 Thread 형식으로 댓글을 남기기 때문에 풀리퀘스트의 기능은 매우 다양할 수 있다.
개발자가 문제가 생기면 Pull Request를 생성해서 나머지 팀원들에게 도움을 요청할 수 있을 것이다.
또는 주니어 개발자들은 Pull Request를 공식 코드 검토의 프로세스로 가져가 프로젝트 전체를 망치고 있지 않는다는 확신을 가질 수 있을 것이다.
'DevOps' 카테고리의 다른 글
메일 인증 프로토콜로 제로 스팸 메일 만들기 - SPF Part (0) | 2024.02.04 |
---|---|
[JAVA ] GC (Garbage Collection) Master (0) | 2024.01.31 |
[JAVA ] JVM (Java Virtual Machine) Master (1) | 2024.01.28 |
Obsidian 알아보기 (0) | 2024.01.20 |
Simple 스크립트로 CI/CD Pipeline 최적화하기 (0) | 2024.01.06 |