Concepts

본 장에서는 Oden에 대한 보다 상세한 이해를 돕기 위해, Oden에서 지향하는 아키텍처의 형태 및 주요 구성요소에 대한 소개를 제공한다.

Architecture

Oden을 활용한 배포관리 환경은 크게 다음과 같은 구성요소로 이루어진다.

  • Server and Agent

    배포관련 각종 작업을 수행하는 핵심모듈로, Server는 빌드리파지토리 (Build Repository) 혹은 배포대상서버 (Target Server) 등에 위치시킬 수 있으며, Agent는 배포대상서버에 설치되며, CLI 기반 UI를 제공함

  • Build Repository

    CI 환경에 의해 빌드된 각종 컴포넌트들이 저장된 장소로, 배포대상서버의 디렉토리 구조와 동일하게 구성되어야 함

  • GUI Tool

    Eclipse Plug-in 등을 활용하여 Oden 관련 각종 배포작업을 수행하는 GUI 환경

Oden을 활용하기 위해 Eclipse Plug-in을 사용할 경우, Eclipse의 Plug-in 기반 아키텍처의 장점에 의해, 모델링-코드생성-빌드-테스트-배포 및 형상/이슈관리를 유기적으로 통합시킬 수 있다. 이러한 일련의 흐름을 예를 들어 설명하면 다음과 같다.

  1. 설계모델링을 통해 Eclipse 프로젝트 및 소스코드를 생성한다.

  2. 생성된 코드를 바탕으로 필요한 비즈니스로직을 추가하여 프로그램을 작성한다.

  3. 이러한 개발을 진행할 때에는 테스트케이스를 함께 생성하여 진행함으로써 개발생산성 및 유지보수성을 증대시킨다.

  4. CI 엔진과 연계하여 빌드 시 테스트 수행을 포함하여 통합빌드를 진행한다.

  5. 배포관리툴과 연계하여 원하는 배포대상서버에 배포를 실시한다.

  6. 이러한 일련의 과정을 이슈관리 시스템 및 형상관리 시스템과 연계시켜 체계적으로 관리한다.

다음 그림은 이러한 유기적인 통합의 모습을 개념적으로 나타낸 것이다.

Oden을 활용한 배포환경 구성 시에는 Oden에서 제공하는 Server, Agent, Eclipse Plug-in 등을 각각의 위치에 설치하여야 하며, 이때 Server의 위치는 빌드리파지토리나 배포대상서버, 어느 곳이든 상관이 없지만, Agent의 경우에는 반드시 배포대상서버에 위치시키도록 한다. 설치 관련 자세한 사항은 "Installing Anyframe Oden" 을 참고하도록 한다.

Note

Server는 빌드리파지토리 혹은 배포대상서버에 위치시키고, Agent는 배포대상서버에 위치시킨다.

Oden을 활용하여 배포대상물을 원하는 배포대상서버에 배포하고, 로그를 통해 결과를 조회하며, 원하지 않는 경우 직전 배포상태로 되돌리거나 스냅샷을 뜬 시점으로 롤백할 수 있다. 이러한 일련의 내용을 각 구간별로 설명하면 다음과 같다.

  • Eclipse Plug-in UI를 통한 배포관리

    • 배포정책 (Policy; Full/Selective/Incremental) 설정

    • 배포실행 (Task)

    • 로그를 통한 결과 확인/재실행

    • 스냅샷 관리 및 실행

    • 롤백 실행

  • Console (CLI)을 통한 배포관리

    • Eclipse Plug-in UI (GUI)와 동일한 기능 수행

  • 빌드리파지토리에서 배포대상물을 가져옴

    • 각종 배포대상물 (클래스/JAR/WAR, 웹리소스 등)에 대한 변경사항 감지

    • CI를 활용한 빌드 시 Incremental Build 방법을 적용할 것을 가이드함

  • Oden Server가 설치된 서버가 "HOST" 역할을 수행함

    • 배포정책 (Policy) 저장

    • 배포작업 (Task) 실행 및 로그생성

    • 바뀐 부분을 감지하여 배포할 파일만 Agent에게 전달

    • 스냅샷 및 롤백 수행

    • Server를 CI서버/빌드리파지토리에 위치시키거나 별도의 장비, 혹은 배포대상서버들 중 하나에 설치하는 것이 가능함

  • Oden Agent만 설치된 배포대상 서버들은 "GUEST" 역할을 수행함

    • Server로부터 전달받은 배포대상물들을 지정된 위치에 배포함

다음 그림은 이러한 배포 흐름을 개념적으로 설명한 것이다.

Servers and Agents

Oden의 Server 및 Agent는 배포작업을 실질적으로 관할하고 수행하는 역할을 수행한다.

Server 및 Agent는 배포할 것들을 확인, 감지, 목록화, 전송, 배포하는 일련의 작업들을 수행하며, 이러한 것들은 각각의 기능구성 및 설치 환경 등을 고려하여 개별 번들 [7] 로 구성되어 있다.

Servers

Oden Server는 각종 Oden Shell을 통한 쉘 커맨드를 제공하며, 이를 통해 다양한 배포관련 명령을 수행할 수 있도록 한다. 또한, Eclipse Plug-in 등 외부 GUI 환경과의 연계를 위한 서비스도 제공한다.

이러한 Oden Server는 단일 어플리케이션 당 하나로 구성하는 것을 권장하며, 여러대의 배포대상서버 [8] 에 대한 배포를 하나의 Server 및 여러개의 Agent를 통해 수행하게 된다. 예를 들어, 'A'라는 업무도메인에 대한 어플리케이션을 3대의 배포대상서버에 배포하고, 'B'라는 업무도메인에 대한 어플리케이션을 2대의 배포대상서버에 배포한다면, 총 2개의 Server를 구성하는 것을 권장한다. 이는, 각 어플리케이션 당 관련된 빌드리파지토리만을 특정 Oden Server와 연결하는 것이 관리하기 편하기 때문이다.

Number of Oden Servers = ∑ (Number of Applications)

Agents

Oden Agent는 Oden Server로부터 전달받은 배포대상물을 지정된 위치에 배포(복사)하는 역할을 수행한다.

그러므로, 앞서 예를 든 'A' 및 'B'라는 업무도메인에 대한 배포대상서버가 각각 3대 및 2대이므로, Oden Agent는 업무도메인 'A'용 Oden Server에 대해서 3개를, 업무도메인 'B'용 Oden Server에 대해서 2개를 각각의 배포대상서버에 구성한다.

Number of Oden Agents = ∑ (Number of Target Servers)

만약 배포대상서버가 물리적으로 중복된 장비에 위치해 있다하더라도, 구성하는 Agent의 개수는 변하지 않는다. Oden의 Server 및 Agent의 구성은 논리적인 구성에 입각하여 구성하는 것을 권장한다.

Note

Server는 단일 어플리케이션 당 하나로 구성하는 것을 권장하며, Agent는 해당 어플리케이션의 배포대상서버 당 하나를 구성한다.

Deploying Items

Oden은 배포작업의 효율성을 위해 배포정책(Policy) 및 배포작업(Task)에 의해 배포를 실시하거나, 해당 내용을 명시적으로 기술한 노트(Note)에 의해 배포를 수행한다.

Policies

특정 아이템을 배포하겠다는 내용을 “배포정책”으로 서버에 저장하여, 개별 사용자가 정의한 배포정책을 다수의 사용자가 공유하여 활용할 수 있다.

배포정책에 대한 보다 자세한 내용은 "Policy Command""Oden Policy and Task Editor" 등을 참고한다.

Tasks

하나 이상의 배포정책을 묶어서 “배포작업”으로 설정한 후, 해당 배포작업을 실행시키면, 배포작업 내에 정의된 배포정책에 의해 배포대상물들이 배포된다. 배포작업에 대한 보다 자세한 내용은 "Task Command""Oden Policy and Task Editor" 등을 참고한다.

배포를 수행하는데 번거롭게 여겨질 수도 있는 배포정책(Policy)와 배포작업(Task)의 다단계 구성을 한 이유는 다음과 같다.

  • 한번 작성한 배포정책을 여러사람이 여러번 재사용할 수 있도록 하게 함

  • 배포정책 자체를 꼭 필요한 범위만으로 설정할 수 있는 모듈 구성으로 만들어서 빈번한 배포 시에 보다 신속한 배포작업을 가능하게 함

  • 여러개의 배포정책을 하나로 묶어서 한번에 실행하는 배포작업을 구성할 수 있도록 하게 함

이상의 Policy와 Task 간의 관계를 그림으로 나타내면 다음과 같다.

Notes

"배포정책" 혹은 "배포작업" 등을 사전에 정의하지 않고, 배포할 파일에 대한 정보 및 배포대상서버의 정보 등을 포함한 배포명세를 XML 파일 형태로 작성한 것을 "노트(Note)"라고 하며, Job Manager의 Note를 활용한 배포를 활용하여 배포할 수 있다.

"노트"에 의한 배포는 Oden을 레거시 자원관리시스템 혹은 BPM 시스템 등과 연계할 때 유용하게 사용할 수 있다.

Backup and Restore

Oden은 특정 시점의 배포형상을 별도로 보관하고 이를 통해 배포형상을 되돌리기 위한 롤백 기능을 지원한다.

Snapshot Plans

배포대상서버의 특정 위치를 지정하여 스냅샷을 뜨도록 스냅샷정책을 설정한다.

스냅샷정책은 특정 위치에 배포된 파일 및 디렉토리 등을 백업하기 위한 설정이며, 이에 대한 보다 자세한 내용은 "Snapshot Command""Oden Snapshot View" 등을 참고한다.

Snapshots and Rollback

정의한 스냅샷정책에 의해 실제 스냅샷을 생성함으로써 백업을 수행하고, 이를 바탕으로한 롤백을 통해 복구를 수행한다.

스냅샷은 스냅샷정책에서 정의된 위치의 파일 및 디렉토리 등을 압축 [9] 한 파일이며, 롤백은 이 파일을 스냅샷정책을 참고하여 다시 원래의 위치에 풀어놓는 방식이다. 스냅샷 및 롤백에 대한 보다 자세한 내용은 "Snapshot Command""Rollback Command" , "Oden Snapshot View" 등을 참고한다.

스냅샷정책(Snapshot Plan)과 스냅샷(Snapshot) 역시 한번 정의한 스냅샷정책에 의해 여러번의 스냅샷을 뜰 수 있도록 하기 위해 단일작업이 아닌 다단계 작업에 의해 수행된다. 이러한 관계를 그림으로 나타내면 다음과 같다.

User Interface

Oden은 CLI 및 GUI 환경 모두에서 작업이 가능하며, 사용자는 두 환경 모두에서 동일한 배포 결과를 얻을 수 있다.

Command Line Interface

Oden 명령어를 실행시키기 위해 Oden에서는 자체 Shell 환경을 제공한다. Oden Shell을 통해 사용자는 Oden에서 제공하는 기능들을 이용할 수 있다. 보다 자세한 사항은 "Working with Command Line" 을 참고한다.

Graphical User Interface

Oden Eclipse Plug-in은 배포관리를 위한 Oden Server와 연계 하여 배포관리를 지원하는 플러그인으로, 배포 용이성 및 높은 신뢰성을 기대하게 해 준다. 보다 자세한 사항은 "Working with Eclipse Plug-in" 을 참고한다.



[7] Oden Server 및 Agent는 OSGi 표준사양을 따르는 개별 번들로 구성되어 있다.

[8] Oden은 물리적인 하드웨어가 아닌 웹어플리케이션서버(WAS) 또는 서블릿컨테이너 등의 인스턴스 하나를 배포대상서버 하나로 간주한다.

[9] 스냅샷은 확장자가 없는 ZIP 압축 파일이다.