좀 오래된 내용이긴 하지만 이왕 정리해논거 블로그에도 남겨두기로 한다.
일정: 2014.5.29 13:00 ~ 18:00
장소: 양재동 엘타워 지하1층 라벤더홀
후기
전반적으로 Git을 효과적으로 사용하고, 이슈/릴리즈를 통합하여 관리하기 위한 아틀라시안사의 시스템을 사용을 알리는 자리.
SW 개발부서 뿐만 아니라, HW/QA/마케팅/기획 등 모든 부서에서 사용가능 하다.
이번 세미나에서 소개되지는 않았지만 협업 관리 툴인 Confluence는 개발 문서관리 & 공유에 매우 유용하게 사용된다.
모두 웹 기반으로 언제/어디서나 쉽게 접근이 가능하다.
도입 시 비용 계산(User 100명 일 때)
툴 |
JIRA |
Confluence |
HipChat |
Bitbucket |
Stash |
Bamboo |
SourceTree |
정체 |
이슈 관리 |
협업 툴 |
협업 메신저 |
GIT 호스팅 |
GIT 관리 툴 |
빌드 & 배포 자동화 툴 |
GIT 클라이언트 |
비용(100 Users) |
$4,000 |
$4,000 |
free |
$100/월 |
$6,000 |
$4,000 |
Free |
최소 비용 |
10명 $10 |
10명 10$ |
free |
5명까지 무료 |
10명 10$ |
10개 작업 $10 |
free |
*Bitbucket을 제외한 모든 시스템은 자사 서버에 설치 및 한번만 지불되는 금액.
1. Entering
행사주체: 모우소프트
국내에서 처음 개최
2. Atlassian(아틀라시안) 소개 (발표: 아시아/퍼시픽 담당자)
호주 시드니에서 설립
직원: 800명
매출 1억2천만달러 기록 (올해 2억 달러 이상 예상)
35,000 customers
기술기업(삼성, LG) 외 제조업체(코카콜라, 이케아, GE 등)도 많음
3가지 제품 카테고리 (협업 툴, Work Flows, 개발-오늘 주제)
3. 모우소프트 (발표: 모우소프트 이사)
모우인터렉티브 솔루션사업본부의 브렌딩 부서
ALM & Agile 방법론 솔루션, 기술 지원, 컨설팅
Atlassian Experts 계약회사
국내 고객: 삼성, 엘지, 휴맥스, SKT, KT, NC-Soft, 카카오, 네이버 등
행사 계획
14.9.9 - Atlassian Summit(USA 산호세) : 10% 참가비 할인코드 제공
14.11 - Atlassian User Group in Seoul(예정)
15.5 - Atlassian Summit in Seoul(예정) : (@Atlassian 사람들은 모르는 내용인듯)
4. Be a Happier Developer with git (발표: 아틀라시안 개발자)
@주로 GIT의 장점을 설명하고 다양한 방법을 제시해주는 세션이었음. SVN 대비 확실히 좋다고는 생각함.
발표자는 Bitbucket 개발자(2.5년)
Bitbucket이란? 아틀라시안에서 서비스하는 GIT 원격 저장소 서비스(https://bitbucket.org/)
git은 훌륭한 Time machine이다.(@형상관리 시스템인데 당연한거 아닌가ㅡㅡ;;)
1. speed
push & pull 빼고는 모두 로컬에서 진행
리눅스 커널 개발자들이 C언어로 개발
Clone(모든 history를 다루기 때문) & Size를 제외한 모든 부분에서 성능 우위(SVN과 비교)
2. freedom & safety
branching
독립적인 개발 공간이며, branching 시 Server-Side 과부하가 SVN에 비해 현저히 낮다.
svn의 경우 merging이 어려워(branch을 꺼려하게 되는 주 요인) trunk에 직접 Commit 하게 되므로써 코드리뷰가 어렵고, Merging 시점에 code freezing 등의 불편함이 있다.
사소한 변경 사항에 대한 branching 이 아주 쉽고 자유롭다.(아틀라시안에서는 모든 이슈에 대해 하나의 branching을 한다)
branch 생성
# git checkout -b new-branch (로컬에 생성 됨)
branch publishing
# git push origin new-branch
stash 커맨드로 쉽게 사용가능
임시로 저장되었다가 다시 사용가능
safety
모든 개발자가 clone 가지고 있음(분산개발, 서버가 날아가도 Clone으로 복구가능)
파일복구
# git checkout file-name
특정 Commit 시점으로 복구
# git checkout sha-1
# git checkout ref(branch/tag)
branch 내의 특정파일 보기
# git show branch:path/to/file
Log 활용
# git log -S
more on recover : http://atlss.in/git-armor
3. explore & understand
누가 어느 시점에 뭘 했나를 쉽게 탐색 가능하다.
--author
--after, --before
-S string
git log -1 -- [path]
git grep <regexp>
git branch --no-merged
git branch --merged
4. control and assemble
Merging 시 장점
모든 히스토리가 local PC에 저장되어 있고, merging 도 local에 있는 파일을 상대로 하기 때문에 매우 빠르고, 히스토리를 효율적으로 분석 가능하다.
Merging 을 도와주는 다양한 방법이 있다.
rebase
branch 작업 중 동일한 파일에 대한 변경이 master-branch에서 했을 경우 현재 local에서 작업 중이 branch를 master와 동기화 + Commit 할 필요가 있을 때 유용하게 사용됨.
branch 시작되는 시점을 master-branch의 변경 시점으로 reset하고, commit 된 순서대로 source merge 하게 된다.
master-branch 내용을 feature-branch에 적용가능(feature-branch란 특정 이슈나, 개별 모듈 개발 등 master-branch와 별도로 개발되는 branch를 지칭)
Warning!(주의사항): 다른 개발자들이 이미 pulling한 내용을 rebase 하게 될 경우 혼동이 올 수 있다.
5. Productive Teams with Stash(git) (발표: 아틀라시안 개발자, JIRA -> Fish Eye -> Cruciable -> Stash 개발)
@주로 아틀라시안의 엔터프라이즈급 GIT 관리 툴인 Stash를 소개하는 세션. 비싸긴 하나 GIT 잘 모르는 관리자들이 사용하기 좋을 듯(but, 관리자가 GIT 사용 할일 있을까?)
1. Efficient Workflows
worflow는 기업의 문화/제품/팀마다 다르게 적용해야 한다.
Issue, Code 의 연동
모든 이슈에 대해 feature-branch 생성 -> 완료 후 master에 적용
branch per issue naming: feature/JIRA-30-user-avatars (branchType/IssueKey-User)
hotfix/JIRA-32-broke-ie2
JIRA 이슈 페이지를 통해 create branch -> stash로 자동 naming (naming 실수를 없앨 수 있음)
@아래는 아틀라시안 개발자들이 자사 제품을 개발하는 예를 보여줌
1) Alassian Marketplace(SAAS 의 좋은 예, atlassian 사내에 서버가 위치해 있음)
자사 제품에 연동되면 다양한 plugin 들을 제공(무료&유료)
feature-branch(N개) -> master-brach 통합 중 충돌 가능에 대비해 developer branch 도입
developer-branch로 통합 후 검증 후 master로 merge
2) Alassian Stash
master에서 버전 별로 branching -> bugfix 발생 시 feature-branch 생성 -> version-branch에 반영 -> master에 반영
v1.1에서 bugfix 발생 -> v1.2와 master에 모두 반영 필요, 개발자 merge 과정 중 실수 발생 할 수 있다.
이때 git hook를 이용해 자동으로 merge 할 수 있도록 개발함.(Stash semantic 버전에 탑재)
2. Improving code Quality
@코드 퀄리티를 높히는 방법론으로 코드 리뷰를 강추하고, Pull Request 기능이 이를 지원 할 수 있다고 소개
Code Reviews
Reasons(해야하는 이유)
코드 퀄리티 개선
지식공유 & 학습
개발자 부재를 리뷰어가 메울 수 있음(버그는 모두의 잘못?)
Pull Request
변경 사항을 pull 해달라~(리뷰 요청)
Naming은 Stash에서 자동으로 설정해준다, 사용자는 리뷰어만 선정하면 됨.
Discuss: Diff Code화면을 두고 comment로 discuss 가능
Diff 기능은 uni-side(한 페이지에 변경 사항 모두 표시), side by side(좌/우 나누어 변경사항 표시) 지원
승인 처리에 대한 룰을 설정 할 수 있다(예: 최소 몇 명 이상이 승인해야 Merging 됨)
내가 수정한 내용에 대해서 누가 가장 리뷰를 잘해 줄 수 있을까?
Auto Suggest Reviewers 플러그인 이용가능(무료)
git blame을 이용해 해당 파일(모듈)의 개발에 가능 많은 기여를 한 개발자를 자동으로 리뷰어로 선정
3. Protecting Code(개발 속도를 늦추지 않고!!)
@타사 협업 시 master-branch에서 cloning을 원하지 않을 때 유용할 듯
Forks(Server-side clone of the repository)
변경 내용을 stash를 이용해 자동으로 pull 가능
Fork한 내용에 대한 full control 가능
stash에서 Repository Manager를 통해 접근권한 설정을 효율적으로 관리 가능
Access 권한을 Repository별로 설정가능(branch 권한 설정 인터페이스)
4. Natural Fit(개발툴과의 통합성)
@아틀라시안 제품과 GIT과의 연동이 아주 좋다~라고 말하고 있다.
git & CI(빌드 & 배포 시스템)
코드 merge 전 모든 feature-branch에 대해 build 실행
Bamboo
새로운 branch 생성 시 자동 탐지
JIRA(git on issue tracking)
이슈 화면에 해당 이슈에 대한 모든 내용을 확인 가능
HipChat(협업 관리를 위한 메신져, 안드로이드 & 아이폰용 앱이 있다)
Atlassian 툴과 통합하여 개발과 관련된 히스토리 확인 가능
Stash: 30일 무료 (한국어 지원)
Bitbucket: 5명 이하 무료
SourceTree(git client): 무료
HipChat: alassian user에게 무료
6. 고객사 Case Study : 모우소프트
@아틀라시안 developer 발표자의 여유 있고 유연한 프리젠테이션에 비해서 많이 딱딱하고 지루하고 전달력이 떨어진다.(한국 개발자의 종특인가 ㅠㅠ)
이슈관리: JIRA
협업관리: Confluence
SSO관리: Crowd
코드리뷰: Crucible
Agile 방법론: JIRA Agile
코드 히스토리: FishEye
Git 연동: Stash
빌드/릴리즈: Bamboo
마켓플레이스: Confluence Team Calendar, Structure, Clone, Custom Dashboard, CLI, Confluence sharepoint, JEditor, Gliffy
7. Git Essential Demo
Task -> Code -> Deployment
JIRA(+JIRA Agile) -> Stash -> Bamboo
Get Git right
branchin workflows
simple pull request(pre-commit code review)
하나의 인터페이스를 통한 통합 작업
Demo
1. JIRA Agile에서 이슈 선택
2. Branch 생성
종류 선택
mother branch 선택
생성
3. SourceTree에서 branch checkout & pull
Source editing 저장
변경된 사항 자동 detecting
commit log 작성 후 commit(local)
branch에 push
4. Stash를 통해 확인
pull request 생성
source, destination 선택
commit log 확인 & 리뷰어 선택
생성
5. Stash를 통해 확인(리뷰어)
notification으로 알림
해당 request 선택
source 선택(diff 확인)
comment 작성 & approval
6. 최종 확인 및 merge
merge 완료 후 branch 삭제 여부 선택가능
7. Bamboo
merge 후 Bamboo에서 새로운 commit에 대한 이벤트 detecting
자동 빌드
빌드된 내용을 배포(N개의 목적지에 동시 배포 가능)
release naming 가능
JIRA에서 deployment에 대한 내용 확인
Traceability
한 이슈에 대한 모든 내용을 한 화면에서 확인
시스템간 양방향 연동
Enterprise Ready
대용량/많은 사용자 관리
LDAP, MS Active Directory, Crowd, JIRA와 연동
Q&A
Q(다음): stash 사용 시 fisheye&crucible 과 기능이 중복된다. stash 의 pull request만 사용하면 되는가?
A: stash를 이용한 pull request를 사용하라. stash는 git 만 지원. 아직은 fisheye 기능이 더 많다. 하지만 stash 사용을 추천한다.
Q(게임베이스): 파일 이름 변경이나 폴더명 변경에 대한 대비책이 있는지?
A: SourceTree 사용 시 그런 문제가 있다면 버그로 보인다. 버그라면 좀더 자세한 설명바라며, 확인 후 수정토록 하겠다.
Q(SKT): Bamboo를 아마존 ES에서 사용하고 싶다. 돈 냈는데 어떻게 사용하는지 몰라서 한달째 못쓰고 있다. 아마존 프리티어에 대한 Bamboo 메뉴얼이 있는가?
A: Atlassian에서도 Elastic Bamboo를 사용하고 있다. Contact point를 드리겠다. 문의 달라.
A(모우소프트): Atlassian에 어떻게 support를 받는지 방법을 모르고 있는것 같다. 우리가 지원가능하다.
Q(다음): 간단한 repository 통계 정보(현재 유료 plugin)를 free로 제공할 계획이 없는가?
A: Stash 로드맵에 대한 정보는 드리기 힘들다. Stash에 통합되는 연동툴이 있으니 활용 가능할 것으로 보인다(gitinspector).
로드맵 작성 시 고객 요청이 많이 반영된다.
A(모우소프트): 아틀라시안 product 개발자들 블로그가 접근가능하다. 이곳을 통해 요청하는 것도 가장 빠른 방법이 될수도 있다.
Q(게임베이스): 파일이 A에서 B로 변경 시 A에서의 히스토리를 찾기가 힘들다.
A: git에는 파일 이름 tracking하는 기능이 없다. 직접 수동으로 확인해야 한다.
Q: master-branch에 많은 commit history들이 있을 것이다. 이런 것들을 어떻게 효과적으로 쉽게 찾을수 있는지?
A: rebase를 이용해 깔끔하게 정리해서 볼수 있고, stash를 이용해서도 가능하다.
Q: bitbuchet에서 stash를 사용시 장점? 마이그레이션 시 수작업이 필요한지?
A: 로컬 컴퓨터에 stash repo를 만들어서 작업해야 함(어렵지 않다). stash는 enterprise에서 사용하도록 디자인되어 있다.
Q: 800명 직원 중 그래픽 디자이너 수? bitbucket에서 디자인 중요도?
A: 20명 정도. 중요하게 생각하고, 협업하는 자리도 갖고 있다. 최근 디자인 일관성을 위한 릴리즈도 있었다.
Q(다음): 핸드폰에서 이슈 등록 가능하도록 지원 계획이 있는지(현재 모바일 페이지에서는 안되며, PC 화면으로 전환 시 모바일에 사용하기 불편하다)?
A: 현재 우선순위가 높은 아이템이다(로드맵에 있음).
ETC
GIT 튜토리얼: http://atlassian.com/git
ALM = Application Lifecycle Management
로지텍 마우스 스크롤 문제 해결(feat. 크롬 브라우저) (1) | 2015.12.01 |
---|---|
카카오톡과 올레 IPTV위 대화형 스마트 컨트롤 (0) | 2015.07.20 |
[애자일 마스터] 엘리베이터 피치 만들기 (0) | 2014.11.17 |
CSS 로 심슨 그리기 (0) | 2014.07.24 |
Ask.com 과 그의 악당 쉐키들 없애기 [부제: FreeFixer 사용기] (0) | 2014.07.23 |