상세 컨텐츠

본문 제목

Getting Git Right in Seoul 후기

IT.About

by zNine 2014. 7. 18. 09:37

본문

728x90
반응형




좀 오래된 내용이긴 하지만 이왕 정리해논거 블로그에도 남겨두기로 한다.


일정: 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

매출 12천만달러 기록 (올해 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




728x90
반응형

관련글 더보기