서버별 배포 Archive 생성 전략 1. 개요

Download Report

Transcript 서버별 배포 Archive 생성 전략 1. 개요

1. 개요
서버별 배포 Archive 생성 전략
-0-
1.
1-1.
...
- ...
서버별 배포 Archive 생성 전략
-1-
1.
1-1.
Environment 별 Web Application 가변 파일
- Development, Staging, Production 간 차이가 차이가 발생할 수 있는 파일은 아래와 같음
/**/*.html
/js/**/*.js
/css/**/*.css
/images/**/*.gif
/images/**/*.jpg
/images/**/*.png
/WEB-INF/jsp/**/*.jsp
/WEB-INF/classes/**/*.class
/WEB-INF/classes/**/*.properties
/WEB-INF/**/*.xml
/WEB-INF/lib/*.jar
확장자
*.js, *.css
설명
• 해당 코드를 JSP에 포함, 동적으로 처리
• 해당 파일에 Place Holder를 두고 Filtering 처리
• 파일 자체를 교체
JavaScript 파일과 Cascading Style Sheet 파일
참조하는 URL, 파일 정보 등이 달라질 수 있음
*.gif, *.jpg, *.png 이미지 파일
Banner, Label과 같은 이미지가 달라질 수 있음
• 파일 자체를 교체
*.properties
Java Properties 파일
• 해당 파일에 Place Holder를 두고 Filtering 처리
• 파일 자체를 교체
*.xml
기타 설정 파일
• 해당 파일에 Place Holder를 두고 Filtering 처리
• 파일 자체를 교체
서버별 배포 Archive 생성 전략
-2-
1.
1-1.
Environment 별 설정 파일 처리 구현 방안
- ...
분류
Replace
적용 기법
설정
Ant Filter Task
token, value 방식으로 property를 치환
Springframework Property Placeholder
Springframework 관련 설정 파일의 property를 치환
Springframework Expression Language
Maven Profile
Maven Resource Filter
Text 기반 설정 파일이면 범용적으로 property를 치환
Maven Profile + Resource Filter
Overwrite
Tag
설정 파일을 별도의 형상관리 태그로 구분하여 관리
Directory
설정 파일을 별도의 디렉토리로 구분하여 관리
Project
설정 파일만 별도의 프로젝트를 구성하여 관리
서버별 배포 Archive 생성 전략
-3-
소스 변경, 빌드 배포 전략 선택을 위한
의사 결정 가이드
서버별 배포 Archive 생성 전략
-4-
1.
1-1.
소스 변경 관련 결정 항목
- ...
반영 전
Review 여
부
소스 코드
변경량
Tags,
Branches
활용 여부
서버별 배포 Archive 생성 전략
-5-
사전/사후
Review
1.
1-1.
빌드 배포 관련 의사 결정 항목
- ...
전체, 부분
반영 여부
Hot
Deploy 여
부
서버별 배포 Archive 생성 전략
Cleanup
여부
-6-
Backup /
Restore 활
용 여부
소스 코드 동결 전
Target 별 배포 전략
(기본)
서버별 배포 Archive 생성 전략
-7-
1.
1-1.
Legend
Tag를 활용한 방법 (수동 검증)
-
Data Flow
수작업 검증을 통한 Tagging 처리
Tester가 직접 Deploy된 Web Application을 테스트하고 성공한 경우 tagging을 함
개발 중인 소스, 테스트 중인 소스, 릴리즈된 소스를 분리하여 처리 가능
Tag ID는 목적에 따라 Milestone, Version, Timestamp 등의 정보를 활용할 수 있음
SCM Server
svn://svnserver/repo
CI Server
1. Checkout
2. Build
Control Flow
Development / Staging /
Production
Server
3. Packaging
4. Deploy
trunk
tags/${TAG_ID}
branches
6. Tagging
서버별 배포 Archive 생성 전략
5. Test
-8-
1.
1-1.
Legend
Tagging을 활용하지 않는 방법 (수동 검증)
-
Data Flow
수작업 검증을 통한 Deploy 처리
개발 중인 동일 소스로 Development,, Staging, Production 용 배포 파일을 생성함
Tester가 직접 Deploy된 Web Application을 테스트하고 성공한 경우 다음 단계 서버에 Deploy 함
테스트 실패하면 이후 단계의 서버 배포용 파일을 버림.
SCM Server
svn://svnserver/repo
CI Server
1. Checkout
2. Build
trunk
Development / Staging /
Production
Server
3. Packaging
4. Deploy
DEV
tags
branches
STG
PRD
서버별 배포 Archive 생성 전략
Control Flow
-9-
5. Test
소스 코드 동결 전
Target 별 배포 전략
(응용)
서버별 배포 Archive 생성 전략
- 10 -
1.
1-1.
Legend
Tag를 활용한 방법 (자동 검증)
-
Data Flow
자동 검증을 통한 Tagging 처리
Test Code가 Deploy된 Web Application을 자동으로 테스트하고 성공한 경우 tagging을 함
개발 중인 소스, 테스트 중인 소스, 릴리즈된 소스를 분리하여 처리 가능
Tag ID는 목적에 따라 Milestone, Version, Timestamp 등의 정보를 활용할 수 있음
Test Code는 기본적인 접속 테스트, CRUD 테스트, 모듈 간의 연계 테스트와 같은 정상 동작 점검용으로 사용
(Maven Integration Test Plugin등을 활용)
SCM Server
svn://svnserver/repo
CI Server
1. Checkout
2. Build
Development / Staging /
Production
Server
3. Packaging
trunk
tags/${TAG_ID}
branches
6. Tagging
서버별 배포 Archive 생성 전략
5. Test
- 11 -
Control Flow
4. Deploy
소스 코드 동결 후
Target 별 배포 전략
(기본)
서버별 배포 Archive 생성 전략
- 12 -
1.
1-1.
Legend
Branch/Merging을 활용한 방법 (Fixes Branch)
- 유지보수나 버그 수정을 위한 Branching 처리 (Maintenance Branch)
- 릴리즈된 소스에 대한 수정분만 반영할 수 있도록 하기 위해 개발 중인 미완 소스와 격리 시켜야 할 때 사용
- 최종 릴리즈된 소스에서 (릴리즈한 tag에서) Branch를 따되, 어떤 revision에서 Branch 시켰는지 알고 있어야 함
SCM Server
CI Server
Release Branch
Feature Branch
Fixes Branch
Hotfix ...
Data Flow
Control Flow
TODO
Development / Staging /
Production
Server
svn://svnserver/repo
trunk
1. Branching
tags/${TAG_ID}
1. Checkout 2. Build
4. Deploy
5. Test
branches
서버별 배포 Archive 생성 전략
3. Packaging
- 13 -