나는 지금부터 천천히 facebook, instagram 처럼 SNS 서비스를 제공하는 웹 페이지를 제작하는 프로젝트를 시작할 것이다. 그리고 프로젝트 시작 전에 프로젝트를 관리하기 위해 내가 사용할 도구, 툴에 대해서 소개 할 것이다.
기본적으로 프로젝트를 관리하는 방법과 도구, 툴들은 너무나도 많다.
1. 그 중 첫 번째로 나의 프로젝트 전체 일정 관리 부분에서 에자일 방식의 개발을 사용할 것이고 툴은 Jira라는 툴을 통해서 관리하게 될 것이다.
기본적인 Jira에 관한 설명은 일전에 블로그에 개시해두었다.
https://denyok.tistory.com/7?category=790116
[SW] JIRA를 이용한 스크럼 프로젝트 관리
* 스크럼(Scrum)은 프로젝트관리를 위한 상호,점진적 개발방법론이며, 애자일 소프트웨어 공학 중의 하나이다. 소프트웨어 개발은 애자일 개발 방법론을 기반으로 진행되어 진다. 이 방법론의 특징은 협업을 중요..
denyok.tistory.com
이 글을 참고 하면 되겠다. 위 글을 보면서 Jira 프로젝트를 하나 만들었다.
앞으로 이게 내 Jira로 여기에 프로젝트 관리를 시작할 것이다.
2. 두 번째는 Git이다.
Git에는 여러 종류가 있는데 가장 보편적으로 사용하고 사용하기 쉬운 온라인 기반의 원격 저장소를 관리해 주는 Github를 사용할 것이다. Git이 어떤것인지 그리고 어떻게 사용해야 하는지에 대해서 포스팅 할 것이다. Git을 만들고 생성하는 자세한 과정은 포스팅 하지 않겠다. 쉽게 찾을 수 있을 것이다.
우선 Git을 이해하려면 그 흐름을 알고 있는게 편할것이다.
Git은 크게 4가지 구역으로 나누어져 있는데
- Working directory : 내가 현재 작업하고 있는 공간을 의미한다.
- Staging area : 작업하는 공간에서 Local repository로 저장하기 전에 임시로 저장해 두는 곳으로 일종의 버퍼라고 생각하면 편할 것이다.
- Local repository : 로컬 저장소 즉, 현재 사용중인 서버 주로 노트북이나 PC의 메모리에 해당하는 공간을 의미한다.
- Remote repository : 원격 저장소 즉, Github를 의미한다.
그 다음 알아야 할 것은 용어다.
- add : 현재 작업 공간에서 로컬 저장소로 저장 하기 전에 임시 저장소에 저장하는 행위를 뜻한다.
- commit : 임시 저장소에 있는 코드를 로컬 저장소에 저장한다. 이러한 행위를 commit이라고 한다. 그리고 커밋을 할때 일종의 코멘트를 작성하는데 (이 또한 커밋이라고 한다.) 이 코멘트를 읽고 어떤 부분이 바뀌었는지 짐작을 할 수 있게 작성을 해야한다. 또 commit은 하루의 작업을 마무리하면서 로컬 저장소에 저장하는것이 아니라 주관적으로 의미 있는 변경의 단위가 바뀌었다고 생각이 되었을 때 작성하는 것이 좋다. 이는 지극히 주관적이므로 사람마다 커밋의 단위는 차이가 있을 수 있다.
- push : 이렇게 커밋하여 로컬 저장소에 저장된 이 코드들을 원격 저장소에 저장하는 것을 의미한다.
- fetch : 원격 저장소에 저장된 코드를 다시 내 로컬 저장소로 가져와 저장하는 것을 의미한다. 이는 주로 작업을 다시 수행할 때 하게 된다.
- merge : 로컬 저장소에 있는 코드를 현재 내 작업 공간에 위치하여 업데이트 시키는 것을 의미한다.
- pull : fetch + merge의 과정을 pull이라고 한다. 다른 개발자와 싱크를 맞추는 역할을 수행한다.
- branch : 위의 용어들과 성격이 좀 다른 용어이다. 용어의 의미를 말 해 주기전 branch의 사전적 의미를 생각해보자 branchs는 (나뭇)가지의 의미를 가지고 있다. 이를 코드에 적용해 보면 현재 프로젝트의 main코드 즉, 아무 문제 없이 작동되는 코드를 몸통이라고 하면 이 코드를 가지고 직접적인 개발을 하기엔 리스크가 너무 크다. 그래서 branch라는 가지를 두어 개발한 후에 문제가 없는 것을 확인 후에 main 코드에 업데이트 하는 것이다.
이러한 작업들은 꽤나 까다롭다. 근데 카톡으로 주고받고 할 수 있는 것을 왜 Git을 사용하면서 까지 코드를 관리할까?
- 릴리즈 관리, 버전관리를 하기 쉽다.
- 코드 병합시에 문제해결이 편하다.
이게 다는 아니지만 이것만으로 충분히 사용할 만한 가치가 있다.
이정도만 알면 프로젝트 개발시에 문제가 없을것으로 보인다.
그럼 이제 프로젝트를 진행 해 보자.