제목이 엄마개발자 블로그인데 너무 육아 이야기만 적은 것 같아서 ㅋㅋㅋ
개발과 관련된 내용도 좀 적어볼까 한다. ㅎㅎ
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하기
세가지로 정리해 볼 수 있을 것 같다.
다음 편에..
댓글