본문 바로가기
카테고리 없음

[SCM] github 에 대한 단상 ..

by millycoder 2020. 1. 3.

제목이 엄마개발자 블로그인데 너무 육아 이야기만 적은 것 같아서 ㅋㅋㅋ

개발과 관련된 내용도 좀 적어볼까 한다. ㅎㅎ

 

2007년 개발을 시작하면서 대략 5개 정도의 형상관리 툴을 사용해왔다. 

CC(Clear Case), SVN, P4, gitlab, github 까지..

2011년, Tizen 프로젝트를 하면서 gerrit 을 연동하여 git을 사용하였고, 

2015년 본격적으로 github를 사용하게 되었다. 

git-gerrit 을 쓰다 github를 사용하니, 처음에는.. UI가 조잡하고 정신없다는 생각을 많이 하였는데

오픈소스들이 gitlab -> github로 대부분 넘어가면서 그 위력이 더욱 커진 것 같다. 

코드에 대한 접근성이 좋아지며 오픈소스 contribution에 대한 진입장벽 또한 엄청나게 낮아졌다. 

 

코드개발에 있어 형상관리(Software Configuration Management)는 매우 중요하다.

이제는 github가 일반화되어 중요성은 언급하지 않아도 될 것 같다. 

github와 같은 툴를 통해 소스코드 history 및 버전을 관리할 수 있을 뿐 아니라 

코드를 통해 communication하면서 개발자(committer)와 리뷰어가 함께 성장할 수 있다. 

 

github의 활성화는 단순히 소스코드의 변경 사항을 추적하는 것 뿐 아니라

소프트웨어 개발 문화 전반에도 많은 기여를 하게 된 것 같다. 

동작하면 되는 코드를 밀어넣던 시대에서

내 코드를 동료에게 보여주고.. 코드로 대화하며 코드의 품질에 대한 고민을 같이 하게 되었다. 

 

github를 이야기한다면

CI/CD에 대해 이야기 안할 수 없다.

CI/CD (Continuous Integration/Continuous Development)

 

개발 품질 향상과 추적성을 위하여 요구사항 단계부터 제품의 릴리즈까지 지속적으로 통합 적용하면서 개발해 나간다. 

이렇게 시스템을 연동하거나 자동화 체계를 만드는 노력은

개발자의 노력을 최소화하고 누구나 만들 수 있는 실수와 에러를 최소화하기 위함의 목적을 갖고 있다. 

 

개발프로세스를 간략히 추상화해 보면.. 

 

1. 기능을 정의하고 (요구사항 및 설계 포함)

2. Code commit (개발한 코드를 리뷰할 수 있는 단위로 쪼개어 넣고)

3. Build (제품에 포함되고)

4. Test (자동화 가능한 테스트를 수행하고)

5. 배포 

 

이런 프로세스를 갖게 된다. (물론 애자일 방식이나, 짧게 싸이클을 돌면서 특정 스텝이 변경,삭제,반복 될 수 있다.)

github는 2번의 과정에 focus 해서 생각하면 되는데,

code를 반영하기 전 선 체크사항들을 연계할 수 있다. (CI 연계)

예를 들자면.. 

 Code commit verification Coding Style Checker, Build Test(Jenkins..), 정적분석툴, 문법 오류 검사 등
Issue 관리 github(Issue), Jira 등
Test automation Merge후 테스트(Unit Test, Integration Test, System test) 자동화

github에 다양한 기능들을 붙여서 연동할 수 있으나 디테일한 내용은 언급하지 않는걸로^^;; 

인터넷에 많을 듯 ㅎㅎ

 

각설하고.. github로 돌아가서 ㅎㅎㅎ

나는 물론 외부 개발이나 코드를 보지 않기 때문에 

사내 github를 사용하며, github로 소스들을 관리하였는데

코드 공유는 어렵지만 오픈소스나 사용방식이 동일하니

그 팁을 정리해 볼까 한다.

 

1. 개발 환경 설정

   - Organization, Team, Repo, Fork

2. 개발 Flow

   - Checkout, 코드 수정 및 반영, Commit 생성 및 변경

3. 중앙 깃에 코드 Commit & Review

   - PR Request, Revice, Review change 반영하기, Merge하기 

 

세가지로 정리해 볼 수 있을 것 같다.  

 

다음 편에..  

 

 

 

 

 

 

댓글