[Agile Beginners] 통합, 빌드,배치,릴리즈 어떻게 정의하는게 좋을까요?

620 views
Skip to first unread message

정형택

unread,
Apr 29, 2010, 10:08:33 PM4/29/10
to Agile Beginners' Q&A
안녕하세요.
제대로 초보적인 질문하나 올릴까 합니다.
하지만, 제 입장에서는 꽤 헷갈리는 문제이기도 합니다^^

애자일 관련해서 공부하다 보면, 아래의 용어들이 자주 거론 됩니다.
통합(Integration)
빌드(Build)
릴리즈(Release)
배치(Deployment)


이 4개 용어가 서로 연관성이 많고 의미가 겹치는 부분도 있는 것 같습니다.
그래서 명확히 구분하는게 어렵군요.


우선 작업순서 기준으로 보면 아래와 같지 않을까 생각합니다.(순전히 제
생각입니다.^^)
빌드(Build) ==> 통합(Integration) ==> 릴리즈(Release) ==> 배치(Deployment)


또한, 관리주체(또는 연관성) 기준으로 보면
빌드(Build)와 통합(Integration)은 개발자,
릴리즈(Release)와 배치(Deployment)는 고객과 밀접한 관계가 있는 것 같습니다.


그런데, 웹 애플리케이션 개발에서는 빌드(Build)작업이
통합(Integration),릴리즈(Release),배치(Deployment)를 모두 포함 하는게
아닌가 하는 생각도 듭니다.


여러분들은 어떻게 정의하시나요?

--
Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 abqna+un...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.

gyehong park

unread,
Apr 30, 2010, 1:47:59 AM4/30/10
to ab...@googlegroups.com
개발 중에 나타날 수 있는 상황으로 보면 어떨까 싶습니다.

여러 가지 기능을 추가하려고 할 때, 한 가지씩 따로 테스트를 하면 버그 등을 해결하기 쉽겠죠. 사람들에게 따로 따로 줄 수 있으니 할당도 쉽습니다. 그런데, 가끔은(혹은 자주) 따로 따로는 잘 동작하던 것이 모아 놓으면 잘 안되는 문제가 발생하곤 합니다. 그래서 가능하면 빨리 통합해서 해야 한다는 말이 나온 것입니다.

빌드도 마찬가지인데, 가끔은 컴파일을 안하고 코딩하기도 합니다. 눈으로 버그를 열심히 찾기도 하죠. '왜 컴파일을 안하냐?' 라고 이상하게 생각하실 수도 있는데, 빌드에 오랜 시간이 걸리는 프로젝트도 많습니다. 예를 들어 10분만 걸린다고 해도, 한줄 고치고 빌드하기 어렵겠죠? 그래서 빌드 서버를 조금 좋은 컴퓨터로 따로 두기도 하구요. 빌드하는 동안 다른 부분을 또 수정하기도 합니다. 이것이 문제를 복잡하게 만들기도...
코딩 측면에서 보면 빌드 안하고 열심히 개발하다가 코딩 량이 많아지면, 빌드 후에 발생한 버그를 찾기 어려워지는 상황이 발생합니다. 또 빌드가 오래 걸리면 문제가 되는 것이 배치 후에 나타난 버그인 경우 심각한 문제로 비춰지기도 합니다. 고객에게 최소 빌드하는 시간동안은 문제 수정을 못하는 거죠. 고객입장에서는 얘네들 이런 간단한 버그 수정하는데 왤케 오래걸려가 되기도 하는 것이죠.
코딩 측면의 빌드 문제는 코딩을 할 때는 프로젝트를 따로 만들어서 하면됩니다.(이후 통합을 가능한 빨리해야겠죠?)  하지만, 이런 환경을 만드는 것이 어려운 경우가 많습니다. TDD도 비슷한 문제를 안고 있는 경우가 있습니다. TDD가 되면 이 문제도 자연스럽게 해결됩니다. 빌드 타임을 간단히하고, 줄이는 것은 잘~ ^^;;;;;

릴리즈는 저 같은 경우 테스트쪽에 넘길 때 많이 사용한 용어인듯. 릴리즈도 보면, 릴리즈를 테스트할 수 있는 환경 구축이 중요할 수 있습니다. 전에 웹과 연동하는 어플의 경우, 어플 개발팀이 사용하는 웹서버 환경, 웹개발팀이 사용하는 웹서버 환경, 테스트 팀이 사용하는 웹서버환경, 고객이 테스트할 수 있는 배치전 웹서버 환경이 구축되어 있었습니다.  

테스트가 잘 되 끝나면, 실전 배치를 할 수 있도록 배치 준비를 하고, 고객은 이곳에서 테스트를 하고, 고객이 배치를 승인하면, 실제 사용자는 업데이트를 받아서 사용할 수 있습니다.

대충, 이런 개발 상황이 비슷비슷한 용어를 사용하는 것이리라 생각합니다.

2010/4/30 정형택 <mrju...@gmail.com>

이지연

unread,
Apr 30, 2010, 2:11:09 AM4/30/10
to ab...@googlegroups.com
계홍님 메일에 덫붙여서
각 활동의 단위가 차이점인 것 같아요.
 
빌드 - 개인 단위의 활동
통합 - 팀 내지는 같이 개발하는 사람단위의 활동
릴리즈 - 관계부서 간의 활동
배치 - 회사와 고객 간의 활동
 
저도 릴리즈는 개발팀에서 테스트팀으로 넘길 때 사용하는 단어였어요~ ^^

 
2010년 4월 30일 오후 2:47, gyehong park <gyeho...@gmail.com>님의 말:

Sangchel Hwang

unread,
Apr 30, 2010, 8:14:32 AM4/30/10
to ab...@googlegroups.com
시스템을 통합하기 위해서 하는 작업이 빌드이고,
빌드된 결과를 확인하기 위해서 시스템에 올리는걸 배치라고 부르고,
여러번의 빌드중 특정 시점에 고객에게 돈을 받기 위해 진행하는 빌드를 릴리즈
라고 보는건 어떨가요. 그냥 제 생각합니다. ^^;


2010/4/30 이지연 <ezon...@gmail.com>



--
Pragmatic Story, http://pragmaticstory.com

sundlee

unread,
Apr 30, 2010, 9:10:05 AM4/30/10
to Agile Beginners' Q&A
저희 회사에서 위의 항목중 integration, build, release는 하고 있습니다. (deploy는 하는지는 잘모르겠
네요)


우리 회사의 예를 간단히 요약하면,
integration(build준비와 간단한 테스트) --> build(formal test와 build server에
checkin) --> release(build server에 모든 테스트를 패스했다고 표시하고 release가능하게 변경)
의 순서로 진행합니다.


우리 회사의 예를 자세히 설명하면,

사내에 여러 component를 개발하는 팀이 있다고 할때,

[Integration team] 어떤 제품을 출시하기위해서는 이런 component들의 알맞은 버전이 합쳐져서 빌드가 되도록
script를 수정하고 version control 서버에 수정내용을 checkin을 하고, 기본기능에 대해서 테스트
(integration test)합니다. (원하는 기능을 포함하고 문제없이 동작하는지 확인)

[Build team] integration과정에서 기본적으로 테스트가 끝난 component들을 사용해서
(integration단계서 checkin된 script를 사용해서) build를 합니다. (integration단계에서도 빌드
를 하지만 그것은 build팀이 빌드를 할수있도록 구성하면서 테스트하고 간단한 기능을 테스트 하는 것이고, build팀에서 하
는 빌드와 다른 점은 공식적인 의미를 담고 있는 것이 다르다고 할수 있습니다.) build가 끝나면 image(binary
image?)가 나오는데 이것을 빌드 서버에 checkin을 합니다. 책임자의 승인이 있은뒤에 테스트 팀에 이 이미지가 전달되
고 정식으로 테스트(formal test)를 진행합니다.

테스트후에 패스하면,
[release] 테스트팀이 해당 image가 모든 test에 패스한 경우에 build팀은 빌드 서버에서 해당 image의 상태
를 테스트에서 패스했다고 표시하고 PM에게 비로소 release해도 된고 연락을 하고 release가 이뤄지게 됩니다.

On 4월30일, 오후9시14분, Sangchel Hwang <k16w...@gmail.com> wrote:
> 시스템을 *통합*하기 위해서 하는 작업이 *빌드*이고,
> 빌드된 결과를 확인하기 위해서 시스템에 올리는걸 *배치*라고 부르고,
> 여러번의 빌드중 특정 시점에 고객에게 돈을 받기 위해 진행하는 빌드를 *릴리즈*


> 라고 보는건 어떨가요. 그냥 제 생각합니다. ^^;
>

> 2010/4/30 이지연 <ezone...@gmail.com>


>
>
>
>
>
> > 계홍님 메일에 덫붙여서
> > 각 활동의 단위가 차이점인 것 같아요.
>
> > 빌드 - 개인 단위의 활동
> > 통합 - 팀 내지는 같이 개발하는 사람단위의 활동
> > 릴리즈 - 관계부서 간의 활동
> > 배치 - 회사와 고객 간의 활동
>
> > 저도 릴리즈는 개발팀에서 테스트팀으로 넘길 때 사용하는 단어였어요~ ^^
>

> > 2010년 4월 30일 오후 2:47, gyehong park <gyehongp...@gmail.com>님의 말:


>
> > 개발 중에 나타날 수 있는 상황으로 보면 어떨까 싶습니다.
>
> >> 여러 가지 기능을 추가하려고 할 때, 한 가지씩 따로 테스트를 하면 버그 등을 해결하기 쉽겠죠. 사람들에게 따로 따로 줄 수 있으니
> >> 할당도 쉽습니다. 그런데, 가끔은(혹은 자주) 따로 따로는 잘 동작하던 것이 모아 놓으면 잘 안되는 문제가 발생하곤 합니다. 그래서
> >> 가능하면 빨리 통합해서 해야 한다는 말이 나온 것입니다.
>
> >> 빌드도 마찬가지인데, 가끔은 컴파일을 안하고 코딩하기도 합니다. 눈으로 버그를 열심히 찾기도 하죠. '왜 컴파일을 안하냐?' 라고
> >> 이상하게 생각하실 수도 있는데, 빌드에 오랜 시간이 걸리는 프로젝트도 많습니다. 예를 들어 10분만 걸린다고 해도, 한줄 고치고 빌드하기
> >> 어렵겠죠? 그래서 빌드 서버를 조금 좋은 컴퓨터로 따로 두기도 하구요. 빌드하는 동안 다른 부분을 또 수정하기도 합니다. 이것이 문제를
> >> 복잡하게 만들기도...
> >> 코딩 측면에서 보면 빌드 안하고 열심히 개발하다가 코딩 량이 많아지면, 빌드 후에 발생한 버그를 찾기 어려워지는 상황이 발생합니다.
> >> 또 빌드가 오래 걸리면 문제가 되는 것이 배치 후에 나타난 버그인 경우 심각한 문제로 비춰지기도 합니다. 고객에게 최소 빌드하는
> >> 시간동안은 문제 수정을 못하는 거죠. 고객입장에서는 얘네들 이런 간단한 버그 수정하는데 왤케 오래걸려가 되기도 하는 것이죠.
> >> 코딩 측면의 빌드 문제는 코딩을 할 때는 프로젝트를 따로 만들어서 하면됩니다.(이후 통합을 가능한 빨리해야겠죠?)  하지만, 이런
> >> 환경을 만드는 것이 어려운 경우가 많습니다. TDD도 비슷한 문제를 안고 있는 경우가 있습니다. TDD가 되면 이 문제도 자연스럽게
> >> 해결됩니다. 빌드 타임을 간단히하고, 줄이는 것은 잘~ ^^;;;;;
>
> >> 릴리즈는 저 같은 경우 테스트쪽에 넘길 때 많이 사용한 용어인듯. 릴리즈도 보면, 릴리즈를 테스트할 수 있는 환경 구축이 중요할 수
> >> 있습니다. 전에 웹과 연동하는 어플의 경우, 어플 개발팀이 사용하는 웹서버 환경, 웹개발팀이 사용하는 웹서버 환경, 테스트 팀이 사용하는
> >> 웹서버환경, 고객이 테스트할 수 있는 배치전 웹서버 환경이 구축되어 있었습니다.
>
> >> 테스트가 잘 되 끝나면, 실전 배치를 할 수 있도록 배치 준비를 하고, 고객은 이곳에서 테스트를 하고, 고객이 배치를 승인하면, 실제
> >> 사용자는 업데이트를 받아서 사용할 수 있습니다.
>
> >> 대충, 이런 개발 상황이 비슷비슷한 용어를 사용하는 것이리라 생각합니다.
>

> >> 2010/4/30 정형택 <mrjun...@gmail.com>


>
> >> 안녕하세요.
> >>> 제대로 초보적인 질문하나 올릴까 합니다.
> >>> 하지만, 제 입장에서는 꽤 헷갈리는 문제이기도 합니다^^
>
> >>> 애자일 관련해서 공부하다 보면, 아래의 용어들이 자주 거론 됩니다.
> >>> 통합(Integration)
> >>> 빌드(Build)
> >>> 릴리즈(Release)
> >>> 배치(Deployment)
>
> >>> 이 4개 용어가 서로 연관성이 많고 의미가 겹치는 부분도 있는 것 같습니다.
> >>> 그래서 명확히 구분하는게 어렵군요.
>
> >>> 우선 작업순서 기준으로 보면 아래와 같지 않을까 생각합니다.(순전히 제
> >>> 생각입니다.^^)
> >>> 빌드(Build) ==> 통합(Integration) ==> 릴리즈(Release) ==> 배치(Deployment)
>
> >>> 또한, 관리주체(또는 연관성) 기준으로 보면
> >>> 빌드(Build)와 통합(Integration)은 개발자,
> >>> 릴리즈(Release)와 배치(Deployment)는 고객과 밀접한 관계가 있는 것 같습니다.
>
> >>> 그런데, 웹 애플리케이션 개발에서는 빌드(Build)작업이
> >>> 통합(Integration),릴리즈(Release),배치(Deployment)를 모두 포함 하는게
> >>> 아닌가 하는 생각도 듭니다.
>
> >>> 여러분들은 어떻게 정의하시나요?
>
> >>> --
> >>> Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> >>> 이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.

> >>> 그룹에서 탈퇴하려면 abqna+un...@googlegroups.com<abqna%2Bunsu...@googlegroups.com>로
> >>> 이메일을 보내주세요.
> >>> 더 많은 옵션을 보려면http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.


>
> >>   --
> >> Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> >> 이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.

> >> 그룹에서 탈퇴하려면 abqna+un...@googlegroups.com<abqna%2Bunsu...@googlegroups.com>로
> >> 이메일을 보내주세요.
> >> 더 많은 옵션을 보려면http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.


>
> >  --
> > Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> > 이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.

> > 그룹에서 탈퇴하려면 abqna+un...@googlegroups.com<abqna%2Bunsu...@googlegroups.com>로
> > 이메일을 보내주세요.
> > 더 많은 옵션을 보려면http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.
>
> --
> Pragmatic Story,http://pragmaticstory.com


>
> --
> Google 그룹스 'Agile Beginners' Q&A' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> 이 그룹에 게시하려면 ab...@googlegroups.com(으)로 이메일을 보내세요.
> 그룹에서 탈퇴하려면 abqna+un...@googlegroups.com로 이메일을 보내주세요.

> 더 많은 옵션을 보려면http://groups.google.com/group/abqna?hl=ko에서 그룹을 방문하세요.

Reply all
Reply to author
Forward
0 new messages