Overview

Anyframe Open Deployment ENvironment (이하 Oden) [1] 은 CI [2] 환경을 통해 빌드된 어플리케이션 컴포넌트 및 각종 설정파일, 웹파일 등을 원하는 배포대상서버에 편리하게 배포할 수 있도록 하는 배포관리 툴이다. 본 장에서는 Oden의 개발 배경 및 주요 특징에 대한 간략한 소개를 제공한다.

Introduction

최근의 일반적인 중대형 개발 프로젝트의 프로세스는 요구정의로부터 시작하여 분석 및 아키텍처정의, 설계, 개발, 이행 등으로 진행하는 것이 최근의 추세이며, 여러 벤더들은 이러한 각 공정 단계에 특화된 다양한 툴을 제공하고 있다. 그러나 분석/아키텍처정의/설계 단계에서 활용할 수 있는 다양한 툴과는 달리, 개발단계 이후 활용할 수 있는 툴의 범위는 다소 부족한 듯 하다. 특히, 개발한 어플리케이션 컴포넌트들을 개발서버 및 테스트서버 혹은 그 너머의 운영서버 등에 배포할 수 있는 전문화된 배포관리 툴에 대한 선택의 폭은 매우 작은 것이 현실이다.

이러한 전문적인 배포관리툴의 부재로 인해, 현장 프로젝트에서는 몇가지 어려움에 직면하게 된다.

첫째, 자동화 및 정형화된 배포관리가 이루어지지 않아 프로젝트 진행 및 운영 시 추가적인 리소스가 필요하게 된다.

  • 기존에는 수작업 또는 CI엔진에 의한 복사 등으로 배포를 실시하였는데, 이를 관리하기 위해 QAO [3] 혹은 SA [4] 에 의한 배포관리가 전문적으로 이루어져야 했음

  • 배포대상서버가 여러대일 경우, 해당 작업을 단순반복하여 처리해야 하므로 번거로운 작업을 수행해야 함

둘째, 배포 시 고려할 수 있는 다양한 배포 방법에 일일이 대응하기가 어렵게 된다.

  • 전문적인 배포관리 툴이 없다면 전체 배포, 원하는 것만 배포, 변경된 사항만 배포 등 현장에서 요구하는 다양한 배포 방식에 일일이 대응하기 어려움

  • 특히, 개발서버에서는 대개 변경된 사항만 배포되면 족함에도 불구하고, 일일이 비교하는 것이 번거롭기 때문에 전체를 한꺼번에 배포할 경우가 많음

  • 실제로 일일이 비교하여 배포하는 경우라도, 누락되는 것이 있어 결국 배포에 실패하게 되는 경우가 발생함

셋째, 표준화 및 정형화된 프로세스에 기반한 개발 및 이행단계 진행이 어렵게 된다.

  • 프로세스화된 배포 환경의 부재는 매번 배포시마다 업무의 혼란 및 리소스의 낭비 여지를 제공하게 됨

  • 이를 위해 배포 정책 설정, 스냅샷/롤백, 로그분석, 스케쥴링/배치, 워크플로우 적용 등 다양한 기능들이 필요함

Oden은 이러한 어려움을 극복하기 위한 자동화된 배포관리 환경을 제공한다.

Key Features

Oden은 다음과 같은 주요 특징을 지닌다.

첫째, 현장 프로젝트의 다양한 상황에 대응하기 위한 개방적이고 유연한 구조를 지향한다.

  • 현장의 추가기능 요구에 유연하게 대응할 수 있도록 플러그인 형태(OSGi Bundle)로 기능을 추가할 수 있는 플랫폼을 활용하였음

  • 배포관리서버를 위한 별도의 하드웨어를 두지 않아도 되는 유연한 구조를 지향함

둘째, 다양한 형태의 배포 방법을 지원한다.

  • 배포 가능한 배포 대상에 대한 일괄 배포 (full-deployment)

  • 배포 가능한 배포 대상 중 원하는 것만 선택적으로 배포 (selective-deployment)

  • 배포 가능한 배포 대상 중 변경된 것만 배포 (incremental-deployment)

셋째, 배포관련 다양한 부가기능 및 가이드를 제공한다.

  • 작업관리자(Job Manager)를 통한 배포작업 관리 기능 제공

  • 배포이력로그(Deployment History)를 통한 이력 조회 및 결과 추적 기능 제공

  • 스냅샷(Snapshot)/롤백(Rollback)을 통한 배포 되돌리기 기능 제공

  • 스케쥴링, 워크플로우 등을 위한 외부 시스템과의 연계 고려

  • CI엔진에서 빌드된 내용으로부터 배포 실시 및 Incremental Build 등 CTIP 환경 가이드 제공

넷째, 다양한 배포환경에 적용할 수 있도록 안정적인 성능을 보장한다.

  • 대량, 대용량 배포물에 대한 안정적인 배포실행 제공 [5]

  • 물리적 디스크 I/O를 최대한 줄여 속도 확보

다섯째, 간단한 조작을 통한 손쉬운 배포 방식을 제공한다.

  • Oden Shell 에서 제공하는 CLI [6] 환경을 통한 배포 실행

  • Eclipse UI 에서 제공하는 GUI 환경을 통해 CLI 환경의 다양한 조작을 일관된 프로세스 흐름을 통해 동일하게 진행

  • CLI, GUI 환경에서 각각의 환경에 맞는 도움말 제공

Comparison of Editions

Oden은 오픈소스인 Community Edition과 상용인 Enterprise Edition의 두가지 에디션이 존재하며, 각 에디션 간의 차이점은 다음과 같다. 본 문서에서 설명하는 각종 기능 중 각 에디션 별 제공 기능은 다음과 같다.

표 1.1.

FeaturesCommunity EditionEnterprise Edition
소유권오픈소스 (Apache License 2.0)상용
개방형 아키텍처에 기반한 배포 플랫폼
배포 가능한 배포 대상에 대한 일괄 배포 (full-deployment)
배포 가능한 배포 대상 중 원하는 것만 선택적으로 배포 (selective-deployment)
배포 가능한 배포 대상 중 변경된 것만 배포 (incremental-deployment)
배포 정합성 검증
대량/대용량 배포
배포 이력조회
배포정책(Policy) 구성 및 활용
배포작업(Task) 구성 및 활용
배포명세(Note) 구성 및 활용 
성공한 배포항목 배포 되돌리기
실패한 배포항목 배포 재시도
로컬 빌드리파지토리로부터 배포 수행
원격 빌드리파지토리로부터 배포 수행 
스냅샷(Snapshot)을 활용한 백업 
스냅샷(Snapshot)을 활용한 롤백 
사용자 인증을 통한 Oden Server 접근제어 
Oden Agent 별 Health-Check 
Oden Agent 간 형상비교를 통한 배포 동기화 검증 
커맨드라인 사용자 환경 (Telnet)
GUI Client (Eclipse Plug-in) 
GUI Client (배포전용프로그램) 
Web UI 
레거시 시스템 연계 
타시스템 연계를 위한 HTTP 인터페이스 제공 
타시스템 연계를 위한 WebService 인터페이스 제공 



[1] Oden은 OSGi, Eclipse 등 Java 기술을 활용하고 있으며, 손쉽게 확장이 가능한 개방형 아키텍처를 지향한다. 더불어 각종 UNIX, Mac OS X, Microsoft Windows 등 다양한 플랫폼 환경을 지원한다.

[2] Continuous Integration: 빌드, 테스트, 배포 등의 일련의 절차를 통합/자동화함으로써 소프트웨어 딜리버리의 시간을 단축시키는 기법 및 이를 가능하게 하는 것

[3] Quality Assurance Officer: 품질관리자

[4] Software Architect: 소프트웨어 아키텍트

[5] Anyframe Oden 개발팀 내부의 자체적인 성능검사 결과, 대량(25,000여 개의 컴포넌트) 및 대용량(6GB 정도의 용량) 배포환경에서 안정적인 배포결과를 보여주었다.

[6] Command Line Interface: 커맨드라인 인터페이스. 일반적으로 터미널 등을 통한 명령프롬프트 기반의 사용자 작용에 기반한다. 대표적인 CLI 환경으로는 UNIX Shell 환경을 예로 들을 수 있다.