Skip to end of metadata
Go to start of metadata

액터와 시스템 구성요소

OCE PaaS 플랫폼의 구성원은 개발자, 운영자, 소비자로 나뉜다. 
개발자는 개발자 포탈을 통하여 가상 개발 환경을 얻어서 개발, 테스트, 빌드를 할 수 있으며 개발결과물을 앱스토어에 게시할 수 있다. 
소비자는 소비자 포탈을 통하여 등록된 앱들을 사용취득, 반납, 피드백등을 할 수 있으며 셀프서비스 (소비자가 직접 자신의 앱을 관리할 수 있는 기능)를 할 수 있다. 
운영자는 개발자가 게시한 앱에 대한 앱스토어 정식 게시 승인, 가입자와 개발자에 대한 계정을 관리하고 앱의 용량한계가 감지될 때 서버 증설 (스케일 아웃) 을 할 수 있다

  다음은 가루다의 서브 프로젝트들로 위의 서비스들을 하나 이상씩 맡아 제공한다:

  1. Garuda-RT - 어플리케이션 실행을 위한 WAS, DB 등을 제공하는 플랫폼
  2. uClipse Cloud IDE   - 웹에서 개발, 업무설계, 자가 맞춤할 수 있는 클라우드 개발 환경
  3. PaaS Social Portal   - 앱스토어, 사용자 포탈, 개발자 커뮤니티

   

  1. 개발도구 (Cloud IDE): UI Designer, Java Editor / Compiler, BPMN Designer, Visual Mashup Tool
  2. Garuda RT Master:  운영서버로 들어온 요청에 대하여 부하정도를 확인하고 부하가 증대시에 Garuda RT Instance 늘이도록 Bahama/Chef Netra 인스턴스 증대 명령을 , 발생한 인스턴스의 서비스 IP HA Proxy 추가하는 명령을 담당한다.
  3. Netra: IaaS서비스를 추상화한다. 등록된 가상머신 이미지 (혹은 템플릿 스크립트) 인스턴스화하고 소멸할  있고, 네트워크 IP 생성하여 돌려줄  있어야 한다
  4. Grauda RT (PaaS RT):  웹앱을 구동할 있는 HTTP Service DB접근, RESTful Service API, BPMN Engine Service등의 기능이 탑재된 OSGi Server 제공한다. 기본적으로 네트라 템플릿으로 존재하다가 PaaS서비스가 시작되면 기본 인스턴스 개수  만큼 기동된다. 기동된 Garuda RT Instance 배포 요청을 받으면 해당 (OSGi 번들 jar형태) App Repo에서 받아내려 자동배포하는 애이젼트를 포함한다
  5. OSGi Bundle Packager Cloud IDE 포함되어있으며 개발자가 앱을 배포하는 명령을 보내면(UI소스저장소에 저장된 소스코드와 설정, 비즈니스 프로세스 등을 OSGi 표준 번들 방식으로 패키징하여 Netra App Repo 저장한다

가루다가 조직에게 주는 가치

  1.  No-Ops Team
    PaaS는 개발조직에게 통합 미들웨어와 개발 서비스를 알아서 관리해준다. 개발환경의 생성, 디플로이, 관리의 환경에 대한 좀더 추상화된 환경을 제공한다. 이를 통하여 시스템 운영자가 없이 개발에 몰두 할 수 있는 조직인 'Dev-Ops' 혹은 'No-Ops' 조직을 만들 수 있다. 
     
  2. 일관성있는 애플리케이션 생애주기 관리
    Garuda PaaS는 개발 서비스에 대한 자동화된 프로세스를 제공한다 - 빌드, 테스트 그리고 형상관리 저장소 서비스 등을 - 어떠한 표준적이지 않은 환경에서 개발되었을 때 발생할 수 있는 비효율성, 오류, 비일관성 등의 문제를 개발 라이프사이클 전반에 있어서 막아준다. 이로서 개발과 운영조직은 SW 라이프사이클 관리를 위한 SW 형상과 버전을 트래킹하는 일관성 있는 플랫폼을 갖추게 된다. 이는 조직의 개발과 배포 프로세스를 일관되게 해준다.  
     
  3. 서비스 프로비져닝의 비용 절감
    Garuda Enterprise App Store 에서는 개발된 앱들을 스테이징에서, 운영, 확장까지의 애플리케이션 프로비져닝도 IaaS 를 직접 다룰 필요 없이 버튼 클릭한번으로 조직에서 사용할 수 있게 준비시켜준다. 사용할 애플리케이션에 대한 맞춤화는 셀프서비스 포탈에서 쉽게 설정하여 사용할 수 있다.

  4. 서비스 통합 비용 
    전통적으로 애플리케이션들을 통합 연동하는 것은 많은 비용과 시간이 필요하다. Garuda 에서는 모든 미들웨어는 쉽게 관리되고 연결될 수 있도록 미리 설정되어있기 때문에  앱스토어에 한번 등록된 앱들은 쉽게 RESTful 과 Web Service 의 형태와 BPM 플랫폼에 의하여 프로세스 적으로 통합될 수 있다. 

다운로드와 설치

  1. Install Garuda
  2. Garuda Documentation

소스코드와 참여

  1. 소스코드:  http://www.opencloudengine.org/svn/garuda/
  2. 커미터되기:  help at opence.org 로 신청메일주세요 환영합니다!

가루다 스펙 및 개발 로드맵

(노드를 선택한 후 "/"키를 누르면 세부 스펙이 열립니다)

 

개발자 도구

클라우드 IDE 개발환경
OCE의 특별한 제공사항 중 하나인 클라우드 IDE는 개발자가 일반적인 웹브라우저의 접속만으로 자바코드를 작성하고 (현재 OCE는 자바언어만을 지원함) 이를 테스트, 디버그 할 수 있다. 
클라우드 IDE는 개발자로 하여금 무거운 개발환경의 다운로드와 설정을 회피하고 빠른시간 내에 플랫폼에 접근하여 플랫폼의 기반 리소스를 활용하여 어플리케이션 개발에 집중 할 수 있도록 한다
비즈니스 오브젝트 모델링
OCE의 Business PaaS의 성격을 구분 짓게 하는 중요한 제공사항으로 비즈니스 프로세스와 룰 모델링을 지원하고 생성된 비즈니스 프로세스를 어플리케이션 코드에 주입하는 API를 제공한다. 
이는 개발자 중에서도 비즈니스 아키텍트가 이를 통하여 애플리케이션을 비즈니스 오케스트래이션 아키텍처에 근간하여 개발하게 되면 차후 소비자(현업)가 업무적인 이해도 수준에서 어플케이션 내의 비즈니스 프로세스와 업무 규칙 등을 관리할 수 있다.
OSGi 표준과 Docker 기반의 애플리케이션 패키징
Garuda 2.0에서는 Application 모듈화와 패키징을 위하여 OSGi 대신에 Docker 를 사용합니다. Docker 는 Multi-Platform 기반의 애플리케이션을 포장하여 실행할 수 있는 리눅스 컨테이너이기 때문에 PaaS의 도입기인 현 시점에서 유용성이 더 높다는 판단에서 Docker를 채용하기로 결정하였습니다. 물론 OSGi는 자바에서 JVM수준의 공유도를 지원하기 때문에 향후에 다시 지원할 예정입니다. 아래는 Garuda 1.0에서 사용한 OSGi 컨테이너에 대한 내용이 요약되어있습니다:

OSGi는 자바의 모듈성을 극대화하는 프레임워크이다. 모듈성이 왜 PaaS구축에 도움이 되는가를 아래에 요약하였다:
  1. 애플리케이션의 공유도를 높이면서 테넌트(가입자) 영역을 분리해준다. 클래스로더를 통한 테넌트 영역 (DB접속, 특화된 코드, 비즈니스 프로세스) 분리는 기존의 VM기반 멀티 테넌시보다 자원(HW)의 공유성을 높히면서 간섭을 최소화 한다.
  2. 공유 컴포넌트들의 메모리 공간, 디스크 공간까지도 공유된다. 애플리케이션에 관계된 코드만 분리되고 다른 애플리케이션이라도 프레임워크와 공통 컴포넌트 수준까지 OSGi번들로 구성되어 공유된다. 디펜던시가 존재하는 컴포넌트를 자동으로 인식하여 프로비져닝하기 때문에 각 서비스 노드들은 최적의 상태를 유지한다. 
  3. 무정지 배포, 확장, 축소가 기본적으로 제공된다. 
  4. OSGi를 통한 프로비져닝 대상은 서버자원외에 자바VM을 지원하는 모든 장비와 사물이 될 수 있다. 이는 사물인터넷(Internet of Things) 구현을 위한 PaaS로도 발전할 수 있다. 특히 기업 백엔드 시스템과 제어 장비들과의 연계 시나리오를 BPMN을 기반하여 모델링하고 실행하는 것이 가능하다. 여기를 참고하면 재미있는 상상을 해볼 수 있다 - http://www.ezdroid.com/를 통한 달빅 VM 상에서의 OSGi 프로비져닝, 그리고 BPMN을 통한 IoT 모델링 - http://www.iot-a.eu/public/public-documents/documents-1/1/1/copy4_of_d1.2/at_download/file, 그리고  http://www.iot-a.eu/public/public-documents/documents-1/1/2/towards-modeling-real-world-aware-business-processes/at_download/file
  5. 전자정부 표준 프레임워크의 컴포넌트들의 모듈성을 높혀 클라우드 서비스에 적합하게 개선하는 좋은 도구가 될 수 있다. 실제로 Spring 에서도 Spring DM과 같은 OSGi에 대한 노력으로 Spring 의 한계점을 극복하고자 하고 있다. 

OCE는 오픈소스 OSGi 프레임워크인 Apache Felix를 기반하여 동적 프로비져닝과 멀티 테넌시, 프레임워크 지원과 컴포넌트-애즈-어-서비스 계층을 구현하였다. 그러나 OSGi가 약간 어렵게 느껴지는가? 아니다 가루다에서는 OSGi 기반으로 애플리케이션을 포장하지만 제공하는 클라우드 IDE와 이클립스 샌드박스가 대신 알아서 번들 패키징과 디스크립터 생성을 해주기 때문에 개발자는 기존 자바 표준 API방식으로 개발하기만 하면 가루다가 알아서 잘 만들어진 번들로 생성하여 디플로이 해준다.

아래는 이미 OSGi 기반으로 자체 어플리케이션 생태계를 구성한 성공적인 플랫폼들의 사례들이다:

  1. 이클립스는 이클립스 플러그인의 패키징 방식으로 OSGi 를 채택하여 현재와 같은 방대한 생태계를 구축하는데 성공하였다. 이클립스 마켓플레이스는 p2 서버라고 하는 OSGi 번들 레포지토리 규약으로 전세계의 다양한 제공자들이 공개된 방식으로 자체 생태계를 운영할 수 있도록 하였다. 
  2. JIRA 로 유명한 Attlassian 플랫폼은 플러그인 아키텍처를 OSGi기반으로 하고 있다. 마찬가지 성공적인 마켓플레이스를 구축하여 플러그인 개발자가 Attlassian 내부의 어떤 체계의 복잡성을 이해하지 않더라도 쉽게 플러그인을 개발할 수 있게 하고 또한 다양한 플러그인을 사용자가 아무리 설치해도 전체 어플리케이션들이 잘 동작한다.
개발자 포탈

OCE는 개발자, 아키텍트 들의 협업공간을 제공한다. 
OCE의 모듈에는 기존 국내 공개 어플리케이션 생명 주기 (ALM; Application Lifecycle Management) 시스템인 kalm (www.kalm.org)이 탑재되있다. 
Kalm은 uEngine BPMS를 기반으로 요구사항 정의에서부터 개발, 운영에 이르는 프로세스를 실행할 수 있으며, BPM기반이라 각 액터에게 To-do-list (내가할일)을 제공한다. 이클립스에 플러그인 형태로도 접근할 수 있고 형상관리 (SVN), 단위테스트도구 (JUnit), CI (통합지속적 빌드) 도구 (Jenkins), 정적분석도구(PMD등) 와 통합되어있어서 어플리케이션 개발과정에 개입되는 도구들을 직접 소비자가 불러쓰지 않아도 개발 업무 단계에 따라 프로세스에 자동으로 연계되어 실행된다. 

개발자의 협업공간으로는 유엔진의 소셜 네트워크 서비스인 프로세스 코디 (www.processcodi.com)가 탑재되어있어서 개발자, 소비자, 운영자 모두의 의견을 실시간으로 주고 받으면서 피드백을 줄 수 있는 지식관리형태의 협업 환경을 제공한다.
클라우드 IDE로 개발하는 경우에는 거의 모든 협업과정과 개발과정을 웹브라우저 내에서 수행할 수 있으며, 향후 다중 접속 동시 개발, 소셜 코딩을 통한 크라우드 소싱(소셜네트워크 상의 전문가에게 난제를 해결 시키는 것) 등의 미래 개발 환경 시나리오를 지원하기 용이한 기반구조이다.

프로젝트 PM이 접속하여 신규프로젝트를 개설하면 자동으로 해당 프로젝트(앱)에 필요한 SVN 영역, 개발기 가상서버, CI 잡등이 프로세스에 의하여 자동 생성되며 개발자들을 해당 프로젝트에 팔로윙 시키면서 채팅, 마이크로 블로그, 화상회의(Big Blue Button이 사용되었음) 를 이용하여 개발에 대한 협업을 한다. 
개발이 완료된 시점에 앱스토어 게시 프로세스를 시작시키면 운영자의 승인에 따라 개발된 앱은 자동으로 SVN에 의하여 운영으로 이관되고 해당 운영 인스턴스가 발생하여 가입자를 받을 준비가 된다.

비즈니스 오브젝트 모델링
OCE의 Business PaaS의 성격을 구분 짓게 하는 중요한 제공사항으로 비즈니스 프로세스와 룰 모델링을 지원하고 생성된 비즈니스 프로세스를 어플리케이션 코드에 주입하는 API를 제공한다. 
이는 개발자 중에서도 비즈니스 아키텍트가 이를 통하여 애플리케이션을 비즈니스 오케스트래이션 아키텍처에 근간하여 개발하게 되면 차후 소비자(현업)가 업무적인 이해도 수준에서 어플케이션 내의 비즈니스 프로세스와 업무 규칙 등을 관리할 수 있다.

 

소비자 도구

앱스토어와 앱론처

소비자는 앱스토어에서 앱을 취득사용할 수 있다. 구매한 앱은 앱론처에 모여있게되고 해당 가입자 (기관)가 접속하여 앱론처에서 애플리케이션으로 접속하는 포탈이 된다.

셀프 서비스 포탈

OCE는 소비자가 취득한 앱의 로고, 비즈니스 프로세스, 비즈니스 폼 (UI) 등을 취득한 기관의 특성과 목적에 맞게 변경할 수 있는 셀프 서비스포탈을 제공한다.

 

 

운영자 도구

앱스토어 관리 포탈

OCE 앱스토어에 대한 관리는 운영자가 하게 된다. 개발자가 운영으로 넘긴 앱을 운영자가 승인하면 자동 빌드를 통하여 운영기에 인스턴스가 생성되게 된다.

생성된 인스턴스는 앱스토어에 등록되어 가입자(소비자)가 취득할 수 있게 된다. 도입기업마다 절차가 상이할 수 있는데 가입자가 취득을 요청하면 운영자가 이를 승인해주는 과정이 요구되기도 한다 (이 모든 과정 또한 BPM 기반으로 처리되기 때문에 도입기업별로 수정이 가능하다)

소비자의 피드백 채널과 운영중 동적확장(Elasticty)

운영자는 소비자가 앱스토어에서 각 앱에 대한 평가를 실시간으로 피드백 받을 수 있는 SNS기반 채널에 연결되어 있으며 (프로세스 코디 SNS 플랫폼), 이를 통하여 서버장애 및 확장에 대한 요구를 실시간으로 받을 수 있다.

애플리케이션 인스턴스들을 관리하는 마스터 노드는 각 클러스터 노드에서 전송되는 부하정보를 기반으로 특정 앱의 로드가 높아지면 자동으로 다른 노드의 여유공간에 애플리케이션을 추가 프로비져닝시킨다. 반대로 요청이 거의 없는 애플리케이션이 발견되면 해당 앱의 인스턴스를 제거한다. 이러한 방식으로 자원을 최적으로 사용하도록 자동화된다. 이러한 운영자동화는 Docker의 유연성 덕분에 쉽게 제어되고 포함된 소프트웨어 스위치인 HAProxy에 의하여 요청이 분산된다. 

실행 동영상

가루다를 통한 CRM 어플리케이션 개발과 SFA프로세스 모델링 

 

참고자료

 

기능 동영상

운영자동화

  1. 프로비져닝 자동화

Get Adobe Flash player

     2. 스케일 인/아웃 자동화

Get Adobe Flash player

클라우드 IDE

 

  1. 컨텐츠 어시스트
     
      2. 컴파일

 

  Get Adobe Flash player

      3.  빌드

 

  Get Adobe Flash player

      4. 마이그래이터

Get Adobe Flash player

     5. 데이터 & 프로세스 매쉬업

Get Adobe Flash player

 

사용자 포탈:  SSO / App Launcher

Get Adobe Flash player  

멀티태넌시 

  1.  테넌트 인식 데이터베이스 분리기능
  2.  테넌트 인식 메타데이터 분리기능
  3.  테넌트 인식 이미지 아이콘 분리기능 

  Get Adobe Flash player

  • No labels