메뉴 건너뛰기

7부에서는 Agile ALM에서 말하는 빌드, 릴리즈, 배포 관리를 Atlassian 솔루션과 함께 구현하는 방법에 대하여 소개합니다. 이 시리즈의 다른 내용을 다음 링크를 통해 확인할 수 있습니다. 

1. 지속적인 통합과 빌드 관리

지속적인 통합(Continuous Integration)은 애자일 베스트 프랙티스 중 하나로 현재는 모든 소프트웨어 개발 프로젝트에 핵심 사항 중 하나로 자리 잡았다. Agile의 대가 마틴 파울러에 따르면 지속적인 통합에서는 다음 사항을 실천하기를 권장하고 있다. 

  • 단일 소스 저장소 유지하라.
  • 빌드 자동화하라.
  • 모든 사람이 매일 커밋하라.
  • 모든 커밋은 통합 서버에서 빌드 되도록 하라.
  • 빌드가 빠르게 되도록 유지하라.
  • 최신 실행 가능한 소스에 누구든 접근할 수 있게 하라.
  • 모든 사람들이 소스에 일어나는 변화를 알 수 있게 하라.
  • 자동화된 배포를 사용하라.

Atlassian Bamboo는 지속적인 통합의 모든 사항을 만족하는데 가장 적절한 솔루션 중의 하나이다. 기본적인 컨셉은 하나의 프로젝트(저장소 기반)를 만들고 해당 프로젝트를 위한 빌드 계획, 그리고 배포 계획 그리고 빌드와 배포의 연동을 지원한다. 

빌드 계획은 Stage와 Stage 하위의 여러 Job으로 구성할 수 있으며, 각 Stage는 서로 다른 Stage를 트리거 하여 자동으로 수행할 수 있게 해준다. 하나의 예로 첫번째 Stage에서 빌드 검증을 수행하고 만약 빌드 검증이 통과하게 되면 두번째 Stage에서는 단위 테스트를 수행하게 구성할 수 있다. 

일반적으로 빌드의 구성은 자신의 조직에 필요한 빌드 정책을 세우고 해당 정책을 반영하는 빌드 계획을 작성할 수 있다. 다음 그림은 Bamboo의 하나의 프로젝트에 존재하는 빌드 계획의 리스트를 보여주고 있다. 첫 번째 빌드 계획은 Commit 빌드 계획으로 저장소를 트리거 하고 있다가 Commit이 발생되면 빌드를 하여 빌드 결과를 알려준다. 두 번째 빌드 계획은 데일리 빌드 계획으로 Clean 빌드와 함께 정적 분석, 단위 테스트, 문서 생성 자동화, UI 및 성능 테스트 자동화를 수행한다.  세 번째 빌드 계획은 릴리즈 빌드 계획으로 제품의 릴리즈 시점에 릴리즈를 수행할 수 있게 해준다. 

release01.png
Figure. Bamboo 빌드 계획 리스트

상위 그림에서 Plan 컬럼은 빌드 계획의 이름을 말하고 Build는 현재까지 수행된 빌드 수와 최근 상태, Completed는 최종 성공한 일자, Tests 단위 테스트의 통과 여부, Reason은 빌드가 일어난 이유를 나타낸다. 빌드 계획의 수동 실행 혹은 수정은 우측 아이콘을 통해 가능하다.

다음 그림은 특정 빌드 계획의 요약 정보(Plan summary)를 보여주고 있다. 빌드의 요약정보에는 최근 수행된 빌드 히스토리와 빌드 수행에 대한 간단한 통계를 함께 제공한다. 

최근 실패(Recent failures)에는 최근의 실패, Branches에는 개발을 위한 브랜치 별로 빌드 정보, History에는 전체 빌드 히스토리, Tests에는 최근 실패한 단위 테스트, Issues는 빌드와 연결된 JIRA 이슈 리스트, Deployments에는 빌드와 관련된 배포 정보를 보여준다. 

release02.png
Figure 계획 빌드 요약 정보

하나의 빌드 계획을 선택하면 빌드에 대한 세부정보를 확인할 수 있다. 하나의 빌드에는 빌드의 각 스테이지와 스테이지 Job의 수행 여부를 확인할 수 있으며 수행되지 않은 스테이지는 수동으로 수행할 수 있다.

빌드 결과 요약에서는 빌드의 세부사항, 연동된 배포 프로젝트에서의 배포 현황을 볼 수 있다. 필요에 따라 팀원들과 커뮤니케이션할 수 있는 코멘트 창을 제공하고 이 빌드와 관련된 Commit 정보, JIRA issue 정보를 확인할 수 있다. 

그 외 Tests 탭에는 테스트 결과와 시간, Commits 탭에는 빌드와 관련된 Commit의 세부사항, Artifacts 탭에는 빌드를 통해 만들어진 공유되고 있는 산출물, Logs 탭에는 빌드 스테이지 별 수행 로그를 보거나 다운로드 받을 수 있다. 추가로 Metadata는 빌드 혹은 배포와 관련된 메타데이터, 이슈 탭에는 이슈 관련된 정보를 확인할 수 있다. 다음 그림은 특정 프로젝트 20번째 빌드의 세부정보 화면 예시를 보여주고 있다. 

release03.png
Figure. Build Result Summary 예시

2. 릴리즈 관리

JIRA에서는 릴리즈를 관리하기 위해 버전을 제공하고 있다. 릴리즈 메뉴에서 버전 이름, 시작일과 릴리즈 일, 설명을 입력하여 새로운 버전을 생성할 수 있다.  특정 릴리즈에 이슈를 할당하기 위해 이슈의 Fix Version/s에 할당하고자 하는 버전을 입력하면 된다. 

다음 그림은 버전 v1.0에 할당된 이슈 리스트를 보여주고 있다. 해당 버전의 이슈는 Issues in version에는 이 버전의 전체 이슈 리스트를 보여주고, Issues done에는 완료된 이슈 리스트를 보여주고, Issues in progress에는 진행중인 이슈 리스트, Issues to do에는 해야 할 이슈 리스트를 보여준다. 

release04.png

Figure. 릴리즈와 이슈 리스트


다음으로 Warnings에는 Pull Requests 중인 이슈, 리뷰가 오픈 된 이슈, 리뷰 되지 않은 코드, 빌드가 실패한 이슈에 대한 경고를 보여준다. 다음 그림은 릴리즈에서 이슈의 Warnings을 보여주고 있다. Warnings 뷰는 최종적으로 릴리즈 수행을 위해 현재 이슈의 상태와 문제점들을 한눈에 파악하는데 도움을 준다. 

release05.png

Figure 릴리즈와 Warning 이슈 리스트


릴리즈 담당자는 해당 버전의 이슈들을 확인하고 릴리즈를 위한 준비가 완료되면 상단 Release 버튼을 클릭하여 해당 버전에 대한 릴리즈를 수행할 수 있다. 

릴리즈에 대한 옵션은 빌드가 없는 릴리즈, 새로운 빌드를 통한 릴리즈, 존재하는 빌드를 통한 릴리즈 중의 하나를 선택한다. 릴리즈를 통해 빌드를 수행할 경우 릴리즈를 위한 Bamboo의 빌드 계획을 선택할 수 있으며, 빌드 계획 선택 시 수행을 원하는 빌드 스테이지도 함께 선택할 수 있다. 

만약 릴리즈에 속해있는 몇몇 이슈가 종료되지 않았을 경우, 해당 이슈를 무시하거나 다음 버전으로 이전 시킬 수 있다. 최종적으로 릴리즈 날짜를 확인하고 릴리즈 버튼을 눌러 릴리즈를 수행한다. 

다음 그림은 Release v1.1에서 새로운 빌드를 통한 릴리즈 수행에 대한 예시 화면을 보여주고 있다. 릴리즈 계획은 Bamboo에 작성되어있는 릴리즈 계획을 선택하였고 릴리즈 스테이지는 빌드 성공 후 테스트 서버 배포, 스테이징 서버 배포, 운영 서버 배포까지 자동으로 수행되도록 설정하였다.  

release06.pngFigure. 릴리즈 빌드와 릴리즈 수행

3. 지속적인 배포

일반적으로 빌드와 배포는 단순하고 오래 걸리는 반복 작업으로 자동화를 통해 개발 생산성을 향상 시킬 수 있다. 조직의 문화와 조직의 개발 환경을 고려한 배포 자동화 정책이 반드시 필요하며 정해진 정책에 따라 배포 자동화를 구축해야 한다.

다음 그림은 배포 자동화 전략의 예시를 보여주고 있다. 일반적으로 배포는 빌드와 연계하여 자동화를 수행할 수 있다. 개발자는 자신의 코드를 Commit하고 직접적인 테스트를 위해 해당 Commit이 반영된 산출물이 개발 서버로 배포되기를 희망할 수 있다. 데일리 빌드 후의 빌드 산출물은 자동으로 테스트 서버에 배포되어 다음 날 QA 조직 혹은 테스트 담당자들이 기존의 기능, 변경된 기능, 추가된 기능을 테스트하여 이상 유무를 점검할 수 있게 해준다. 릴리즈 빌드의 경우 해당 빌드의 산출물이 테스트 서버로 배포되어 릴리즈 검증을 거치고 이 검증이 완료되면 Staging 서버에서 검증 후 최종 운영 서버로 자동 배포가 되기를 원할 것이다.

release07.png

Figure. 빌드와 배포 자동화 전략


Bamboo에서 배포는 특정 빌드 계획 연동을 통해 빌드 성공 시, 자동으로 배포되거나 혹은 사용자가 버튼 클릭 만으로 배포가 될 수 있게 빌드 스테이지를 구성할 수 있다. 이러한 연동은 소프트웨어 제품의 요구사항이 테스트, 스테이징, 운영 서버에 각각 배포되었는지를 추적할 수 있게 해준다. 

다음 그림은 JIRA 이슈에서 배포 정보를 확인하는 예시 화면을 보여준다. 개발 패널 하단의 배포 관련 요약정보에서 링크를 선택하면 어떠한 배포 계획에 따라 배포되었는지를 확인할 수 있다. 먼저 Commit 빌드를 통해 개발 서버로 배포됨을 알 수 있고 데일리 빌드에서는 테스트 서버로 배포 완료, 그리고 릴리즈 빌드에서는 테스트 서버와 스테이징 서버로 배포는 완료되었지만, 운영 서버(Production Server)에 배포는 실패했음을 알 수 있다. 

release08.png

Figure. JIRA Issue와 배포 추적


관련 데모 영상은 다음 링크에서 확인할 수 있다.



Atlassian Gold Partner 주식회사 커브

Who's PSEG

profile

PSEG는 Practical Software Engineering Group의 약자입니다. 

이론을 넘어 실용적으로 활용할 수 있는 소프트웨어 공학을 공유하는게 그룹의 목적입니다.

?

 


  1. Jira Linux 메모리 증설 방법

    JIRA Memory 설정JIRA의 <Install_directory>/bin/setenv.sh 파일을 아래 그림과 같이 수정 후 서비스를 재시작 한다. JVM_MINIMUM_MEMORY="2048m" JVM_MAXIMUM_MEMORY="2048m" JIRA web접속을 하여 System > System Info 탭의Java VM Memory Statistics의 T...
    Date2018.06.05 CategoryJIRA ByTom Reply0 Views761
    Read More
  2. Jira Window 메모리 증설 방법

    JIRA Memory 설정JIRA Memory 설정하기 위해 서비스를 중지 하고 실행 파일 경로를 복사 한다. cmd 실행 하여 tomcat8.exe //RS 를 tomcat8w //ES 으로 변경 하여 실행한다. JAVA 탭으로 이동하여 Initial memory pool, Maximum memory pool...
    Date2018.06.05 CategoryJIRA ByTom Reply0 Views880
    Read More
  3. No Image

    Academic pricing (50% 할인)

    Atlassian은 자격을 갖춘 교육 기관에 서버 라이센스를 50 % 할인합니다. 다음 기관들은 Atlassian Academic 라이센스를 취득 할 자격이 있습니다 : 교육 기관 : 공립 또는 사립 직업 학교, 방송 통신 학교, 단기 대학, 단과 대학, 대학 또는 국가인가 ...
    Date2017.12.02 CategoryETC ByTerry Reply0 Views1132
    Read More
  4. Agile ALM with Atlassian - 7부 빌드, 릴리즈, 배포 관리

    7부에서는 Agile ALM에서 말하는 빌드, 릴리즈, 배포 관리를 Atlassian 솔루션과 함께 구현하는 방법에 대하여 소개합니다. 이 시리즈의 다른 내용을 다음 링크를 통해 확인할 수 있습니다. Agile ALM with Atlassian - 1부 ALM 이란 Agile ALM with Atlassian...
    Date2017.07.14 CategoryETC ByPSEG Reply0 Views3900
    Read More
  5. Agile ALM with Atlassian - 6부 코드 품질 보장 활동

    6부에서는 Agile ALM에서 말하는 코드 품질 보장 활동을 Atlassian 솔루션과 SonarQube 솔루션으로 함께 구현하는 방법에 대하여 소개합니다. 이 시리즈의 다른 내용을 다음 링크를 통해 확인할 수 있습니다. Agile ALM with Atlassian - 1부 ALM 이란 Agile A...
    Date2017.07.14 CategoryETC ByPSEG Reply0 Views3166
    Read More
  6. Agile ALM with Atlassian - 5부 아키텍처와 디자인

    5부에서는 Agile ALM에서 말하는 심플 아키텍처와 디자인을 Atlassian 솔루션과 함께 구현하는 방법에 대하여 소개합니다. 이 시리즈의 다른 내용을 다음 링크를 통해 확인할 수 있습니다. Agile ALM with Atlassian - 1부 ALM 이란 Agile ALM with Atlassian ...
    Date2017.07.12 CategoryETC ByPSEG Reply0 Views3566
    Read More
  7. Agile ALM with Atlassian - 4부 스크럼 프로젝트 관리

    4부에서는 Agile ALM에서 말하는 스크럼 프로젝트 관리를 Atlassian 솔루션과 함께 구현하는 방법에 대하여 소개합니다. 이 시리즈의 다른 내용을 다음 링크를 통해 확인할 수 있습니다. Agile ALM with Atlassian - 1부 ALM 이란 Agile ALM with Atlassian - ...
    Date2017.07.12 CategoryETC ByPSEG Reply0 Views3176
    Read More
  8. Agile ALM with Atlassian - 3부 요구사항 관리와 사용자 스토리

    3부에서는 Agile ALM에서 말하는 요구사항 관리를 Atlassian 솔루션과 함께 구현하는 방법에 대하여 소개합니다. 이 시리즈의 다른 내용을 다음 링크를 통해 확인할 수 있습니다. Agile ALM with Atlassian - 1부 ALM 이란 Agile ALM with Atlassian - 2부 Agi...
    Date2017.07.12 CategoryETC ByPSEG Reply0 Views4174
    Read More
  9. No Image

    JIRA issue export가 안될 때 체크 포인트

    JIRA issue export가 안될 때 체크 포인트 하나 공유드립니다. Atlassian JIRA는 한 번에 export 가능한 issue 개수를 (디폴트) 1,000개로 설정하고 있습니다. 이유는 너무 많은 이슈 목록을 처리할 때 메모리 부족을 방지하기 위함이랍니다. 다행히 ex...
    Date2017.07.10 CategoryJIRA ByTerry Reply0 Views1380
    Read More
  10. Agile ALM with Atlassian - 2부 Agile ALM 이란

    2부에서는 Agile ALM에서 말하는 Agile ALM의 정의와 Atlassian 솔루션과 함께 구현하는 방법에 대하여 소개합니다. 이 시리즈의 다른 내용을 다음 링크를 통해 확인할 수 있습니다. Agile ALM with Atlassian - 1부 ALM 이란 Agile ALM with Atlassian - 2부 ...
    Date2017.07.10 CategoryETC ByPSEG Reply0 Views3079
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7