프로젝트와 README, 그리고 VCS
1. 프로젝트란 무엇인가?
프로젝트란 일정한 기간 안에 일정한 목적을 달성하기 위해 수행하는 업무의 묶음을 말해요
- 기획부터 설계, 개발, 테스트를 거쳐 배포까지 포함하는 전체 프로세스를 의미해요
- 코드 및 문서로 진행의 척도를 얼마나 팀원과 공유하는 게 협업의 지름길이에요
2. 협업의 얼굴, 리드미(README)
리드미는 크게 두 가지 역할을 해요
📝 리드미에 들어가는 내용
🛠 마크다운(Markdown) 문법 활용하기
리드미는 주로 .md 확장자를 가진 마크다운 파일로 작성해요.
이를 통해 웹에서 가독성 좋게 글을 꾸밀 수 있습니다.
우리가 사용하는 깃허브와 디스코드, 벨로그도 지원해요
(이 블로그 글도 마크다운으로 작성중이에요!)
| 기능 | 문법 예시 | 비고 |
|---|
| 제목(Header) | # H1 ~ ###### H6 | #의 개수로 크기 조절 |
| 인용문 | > 내용 | 참고 문구 등에 사용 |
| 목록 | - 항목 또는 1. 항목 | 순서 있거나 없는 목록 |
| 코드 블록 | ```code``` | 코드 삽입용 |
실습을 조금 해볼게요

- 볼드체(굵게) 입니다.
let a = 'a'
var b = 'b'
const c = 'c'
console.log(a);
3. 버전 관리(Version Control)의 핵심
버전이란?
코드에 행해지는 "유의미한 수정"을 의미해요
기능 추가나 버그 수정 등 기록할 가치가 있는 변화에요
- 다른 사람의 버전을 관리하기 어려워요
- 각각의 변화가 어떤 수정사항을 담고 있는지 알 수 없어요
버전 관리 시스템(VCS)의 역할
- 변경 사항 추적: 어떤 부분이 어떻게 달라졌는지 확인
- 백업 및 복구: 문제가 생겼을 때 과거의 특정 시점으로 되돌리기
- 협업: 여러 사람이 동시에 같은 코드를 작업할 수 있게 지원
4. VCS의 3가지 유형
버전 관리 시스템은 발전 과정에 따라 크게 세 가지로 나뉘워요
① 로컬 버전 관리
- 특징: 내 컴퓨터 안의 간단한 DB에 변경 정보를 저장해요
- 단점: 내 컴퓨터가 고장 나면 이력이 사라지며, 다른 사람과 협업이 불가능합니다.
- 게임할 때 로컬로 세이브파일을 저장하는 것이랑 비슷해요.
② 중앙 집중형 버전 관리
- 특징: 중앙 서버에 모든 파일의 히스토리가 있고, 사용자는 서버에서 파일을 내려받아 사용해요 (예: SVN)
- 장점: 중앙에서 통제하므로 협업 관리가 용이해요.
- 단점: 버전을 관리하는 중앙 서버가 다운되면 작업이 중단되고, 서버 하드가 깨지면 모든 프로젝트 히스토리를 잃을 위험이 매우 커요
- 일부 회사에서는 아직도 svn을 사용하는 경우도 있다고 알고 있어요

③ 분산형 버전 관리 (현재 가장 많이 사용)
- 특징: 서버의 저장소를 통째로 복제하여 내 컴퓨터에 담아요 (예: Git).
- 장점:
- 서버에 문제가 생겨도 내 로컬 복제본으로 복구가 가능해요
- 원격 레포를 실수로 삭제해도 로컬로 관리하는 누군가가 다시 레포를 올리면 살릴 수도 있어요!
- 오프라인에서도 작업과 커밋이 가능해요
- 모든 작업자가 전체 히스토리를 공유하므로 가장 안전하고 유연해요

💡 오늘의 요약
- 프로젝트는 기획부터 배포까지의 전 과정이에요
- README는 마크다운 문법으로 다른 사람들이 보기 좋게 문서화할 수 있어요
- 버전 관리는 협업과 안전한 개발을 위한 필수 시스템이고, 현재는 분산형 관리 시스템(Git)이 표준으로 사용되고 있어요.