Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions 챕터_16/변수미.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#### 버전 관리 시스템 (VCS)

- 파일의 시간에 따른 변경 기록을 추적하는 시스템

#### 버전관리는 왜 필요할까

- 소프트웨어 엔지니어링은 프로그래밍에 시간의 흐름을 통합한 개념이다.
- '즉각 이루어지는 소스 코드 생산'과 '제품을 장기간 지속 관리'하는 행위를 다른 차원으로 구분하고 있고, 후자를 위해 소스코드와 시간의 상호작용을 관리하는 버전관리가 중요하다.
- 프로그래밍에서는 꼭 필요하진 않지만, 소프트웨어 엔지니어링에서는 필수다.

#### VCS 아키텍쳐를 알아보자

중앙집중형

- 단 하나의 중앙 리포지터리 이용, 개별 개발자가 커밋하는 모든 코드는 중앙으로 (구글 방식)
- 초창기에는 모든 VCS가 이 모델로 만들어졌고, 한 사람이 락을 독점했다.
- 진보한 VCS는 한사람이 락을 독점하는 것이 아닌, 어느 버전과 동기화 되었는지 추적하게 되었다.

분산형

- git 등에서 사용하는 패러다임
- 레포의 복사본(clone, fork)를 가지고 있다면 커밋할 수 있는 레포를 소유한것
- '중앙'이라는건 개념적으로만 존재
- 특정 하나를 진실 공급원이라고 지정하지 않아도 되어, 오프라인 작업, 협업에 더 유리하다.

> 버전관리 === Git이라고 생각했었는데, 생각보다 다양한 분류가 있었네요

## 버전 관리 @ 구글

- 구글의 소스 코드 대부분은 하나의 모노리포에서 관리되며 약 5만여 엔지니어에게 공유된다.
- **자체 개발한 중앙집중형 VCS인 Piper를 이용**
- 초기 구상 단계부터 구글 규모를 감당하는데 집중

> git 등을 사용하지 않는 이유가 많은 코드를 커밋하는 개발자들을 감당할 수 없어서이고, 그래서 자체 구축했다는게 신기하네요..
> 당연히 git 사용할줄 알앗습니다.

## 버전관리의 미래

- 모노리포의 가장 큰 우려는 '모든 것을 하나의 리포에 담을 수 있는 기술이 있느냐'이다.

> 그럼 구글은 모든것을 하나의 리포에 담을 수 있는 기술이 있다. 라는건데 대단하네요