[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 pub] 4. 종합분석[1]
DESCRIPTION
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 4. 종합분석[1]TRANSCRIPT
0
오픈소스 PaaS 분석 종합 2014. 7. 30.(수)
서 보국 PM ㈜크로센트
발표 순서
1. 개요
2. 기술 분석
• 아키텍처 • 소스코드 • PaaS 설치 • App 설치 • 로드밸런싱 • 멀티테넌시 • 확장성
3. 라이선스 분석
4. 확장·신규 개발 범위 분석
2
Open PaaS 동향 1. 개요
오픈소스 클라우드 사용 경험 클라우드 서비스 사용 경험
클라우드 서비스 개발을 위해 PaaS 사용 Cloud Foundry, OpenShift 활용률이 높음
58% 52%
47%
PaaS IaaS Cloud Storage
47%
43%
36%
14%
14%
11%
OPENSTACK
CLOUD FOUNDRY
OTHER
CLOUDSTACK
APACHE STRATOS
OPENSHIFT
IT 전문가 600여명 설문 결과, Cloud Foundry와 OpenShift의 활용률이 높음 (Dzone, 2014)
3
프로토타입
아키텍처
구분
산출물
전자정부 표준프레임워크 개발 프레임워크 클라우드화
비즈니스 아키텍처
7월 8월 9월 10월 11월 12월
서비스 아키텍처
데이터 아키텍처
인터페이스 아키텍처
비기능 아키텍처
전자정부 표준프레임워크 공통 컴포넌트 클라우드화
테스트 케이스 작성
Gap 분석
개방형
클라우드
아키텍처
비즈니스 아키텍처 오픈 플랫폼 분석서
서비스 아키텍처 라이선스 / 운영 시나리오
데이터 아키텍처 e-Gov F/W 방안 수립서
인터페이스 아키텍처
비기능 아키텍처 e-Gov F/W 컴포넌트
방안 수립서
개방형 클라우드 아키텍처
6월 5월 4월
현황분석서 환경분석서
오픈 소스 환경 분석
현황분석 환경분석 라이선스 분석
CloudFoudry 상세기능 분석
OpenShift 상세기능 분석
소스 분석 환경 구성
OpenShift 아키텍처 분석
CloudFoundry 아키텍처 분석
사업계획서
과제 추진 현황 1. 개요
4
CLOUD FOUNDRY vs. OPENSHIFT 2. 기술분석
구분 CLOUD FOUNDRY OPENSHIFT
아키텍처 • 작은 단위의 여러 개의 컴포넌트로 구성 • 2 개의 주요 컴포넌트로 구성
소스 저장구조 • 하나의 소스 저장 구조로 구성 • 다수의 소스 저장 구조로 구성
PaaS 설치 • BOSH를 통한 설치 • IaaS 환경 필수적임
• 리눅스/가상머신을 통한 설치 • IaaS 환경이 선택적임
App 설치 • 컴파일 형태의(WAR) 저장 및 배포 • 소스코드 형태의 저장 및 배포
로드밸런싱 • 로드밸런싱 기능(Router) 내장 • 서비스(HA Proxy)를 통한 로드밸런싱
멀티테넌시 • DEA 및 데이터 단위 멀티테넌시 • Node 단위 멀티테넌시
확장성 • Buildpack을 통한 서비스 확장 • Cartridge를 통한 서비스 확장
Open Source PaaS 주요 차이점 요약
5
아키텍처 비교분석 (1/2) 2. 기술분석
OPENSHIFT 아키텍처 CLOUD FOUNDRY 아키텍처
작은 단위의 여러 개의 컴포넌트로 구성 2 개의 주요 컴포넌트로 구성
컴포넌트 컴포넌트
6
아키텍처 비교분석 (2/2) 2. 기술분석
OPENSHIFT 주요 컴포넌트 CLOUD FOUNDRY 주요 컴포넌트
NODE
BROKER
Message Subscriber
NODE Manager
Deployment Controller
Cartridge Controller
Log Controller
Gear Manager
Cloud Controller
Health Manager
DEA
Development Controller
Cloud Provider Interface
Service Broker
Messaging (NATS)
UAA Authentication Manager
Application Controller
Buildpack
7
소스 저장구조 비교분석 2. 기술분석
하나의 소스 저장구조로 구성 다수의 소스 저장구조로 구성
OPENSHIFT 소스코드 구조 CLOUD FOUNDRY 소스코드 구조
CLOUD FOUNDRY (GIT)
SERVER (GIT)
GEARD (GIT)
RHC (GIT)
8
PaaS 설치 비교분석 2. 기술분석
치
BOSH를 통한 설치 (IaaS 환경 필수) 리눅스/가상머신을 통한 설치 (IaaS 환경 선택)
① IaaS 환경 구성 (필수)
② 설치 환경 구성 (Ruby 환경 설정, Git 설치, DB 설치)
③ Micro BOSH SERVER 설치 (BOSH 설치 / 관리)
④ BOSH SERVER 설치 (IaaS 인터페이스)
⑤ CLOUD FOUNDRY 설치
① IaaS 환경 구성 (선택)
③ 설치 환경 구성 (Ruby 환경 설정, Git 설치, DB 설치)
② RHEL/RHEV 설치 (리눅스/가상머신)
④ OPENSHIFT 설치
OPENSHIFT 설치 순서 CLOUD FOUNDRY 설치 순서
9
App 설치 비교분석 2. 기술분석
OPENSHIFT App 설치 CLOUD FOUNDRY App 설치
컴파일 형태의(WAR) 저장 및 배포 소스코드 형태의 저장 및 배포
CLOUD FOUNDRY
BLOB Store 저장소
WAR / 바이너리 WAR
DEA
Warden
Container
WAS
OPENSHIFT
NODE
Build Pack 환경구성
업로드
Bosh Push
Gear
GIT
소스 코드
WAS
WAR GIT 소스코드
Cartridge
환경구성
업로드
WAR
10
로드밸런싱 비교분석 2. 기술분석
로드밸런싱 기능(Router) 내장 서비스(HA Proxy)를 통한 로드밸런싱
OPENSHIFT 로드밸런싱 CLOUD FOUNDRY 로드밸런싱
HA Proxy Cartridge 구성을 통한 서비스 방식의 로드밸런싱
Router Router NODE 자체 Router를
통한 로드밸런싱 Gear
HA Proxy
DEA
Waden Waden Waden
Waden Waden Waden
WAS WAS WAS
E-Gov F/W E-Gov F/W E-Gov F/W
DEA
Waden Waden Waden
Waden Waden Waden
WAS WAS WAS
E-Gov F/W E-Gov F/W E-Gov F/W
DEA NODE
Gear Gear Gear
Gear Gear Gear
WAS WAS WAS
E-Gov F/W E-Gov F/W E-Gov F/W
NODE
Gear Gear Gear
Gear Gear Gear
WAS WAS WAS
E-Gov F/W E-Gov F/W E-Gov F/W
NODE
Gear Gear Gear
Gear Gear Gear
APP APP APP
WAS WAS WAS
Warden
Container Container Container
WAS WAS WAS
Container Container Container
APP APP APP
11
멀티테넌시 비교분석 2. 기술분석
DEA 및 데이터 단위 멀티테넌시 Node 단위 멀티테넌시
OPENSHIFT 멀티테넌시 CLOUD FOUNDRY 멀티테넌시
테넌트 테넌트 테넌트 테넌트 테넌트 테넌트
Services
DB
DEA
Service Instance
DB
Waden
WAS
Service Instance
DB
Waden
WAS
DEA
Service Instance
DB
Waden
WAS
Service Instance
DB
Waden
WAS
DEA
DEA
Service Instance
DB
Waden
WAS
Service Instance
DB
Waden
WAS
DEA
Service Instance
DB
Waden
WAS
Service Instance
DB
Waden
WAS
DEA
Node
Gear
WAS
Gear
WAS
DB DB
Gear
WAS
Gear
WAS
DB DB
Node
Gear
WAS
Gear
WAS
DB DB
Gear
WAS
Gear
WAS
DB DB
Node
Gear
WAS
Gear
WAS
DB DB
Gear
WAS
Gear
WAS
DB DB
Node
Gear
WAS
Gear
WAS
DB DB
Gear
WAS
Gear
WAS
DB DB
Node
Gear
WAS
Gear
WAS
DB DB
Gear
WAS
Gear
WAS
DB DB
Node
Gear
WAS
Gear
WAS
DB DB
Gear
WAS
Gear
WAS
DB DB
Warden
Service Instance
DB
Container
WAS
Service Instance
DB
Container
WAS
Warden
Service Instance
DB
Container
WAS
Service Instance
DB
Container
WAS
12
확장성 비교분석 (1/2) 2. 기술분석
Buildpack을 통한 서비스 확장 Cartridge를 통한 서비스 확장
OPENSHIFT Cartridge CLOUD FOUNDRY Buildpack
13
확장성 비교분석 (2/2) 2. 기술분석
구분 세부 구분 OpenShift Cloud
Foundry
WAS서버 미들웨어 Jboss, Tomcat,
Zend
Glassfish, Jboss, Jetty, Resin,
Tomcat, Zend
DBMS
MySQL O O
PostgreSQL O O
MongoDB O O
other NoSQL O O
Native Databases
MongoDB, MySQL,
PostGreSQL
MongoDB, MySQL,
PostGreSQL
Control Interface(API)
REST-based API 제공
RESTFul API 제공
Command Line, Graphical User
Interface
API, Command Line
소스코드 저장소
Git O O
개발 도구
Eclipse O O
Codenvy O O
Web Console O O
Command-line Tooling O O
구분 세부 구분 OpenShift Cloud
Foundry
지원언어
Java O O Python O O
C# ×∗ (O) O PHP O O
Javascript O O Node.js O O Ruby O O Perl O O
Ajax O O
기타 Go, Scala
프레임워크
JavaEE6 O O
Spring O O
Rails O O
Django O O
Sinatra O O
Bottle O O
Symfony O O
Zend O O
Grails O O
Seam O O
.Net ×∗ (O) O
기본 프레임워크 Django, Drupal,
Flask, Rails, Vert.x Play
지원되는 미들웨어, 개발도구, 지원언어 및 프레임워크
* OpenShift의 경우, C#, .Net은 올해 지원 예정 (OpenShift Online : http://www.openshift.com)
14
공개SW 라이선스 개념 3. 라이선스분석
공개SW 라이선스는 개발자와 이용자간에 사용 방법 및 조건의 범위를 명시한 계약으로, 저작권 위반 시에는 이에 대한 처벌을 받게 됨
공개SW 개발자와 이용자간에
사용 방법 및 조건의 범위를 명시한 계약
• 공개SW를 이용하기 위해서는 공개SW 개발자가 만들어놓은 사용 방법 및 조건의 범위에 따라 해당 SW를 사용해야 함
• 위반할 경우에는 라이선스를 위반함과 동시에 저작권 침해로 인해서 이에 대한 처벌을 받게 됨
공개SW 라이선스 정의
공개SW 라이선스 정의와 특징
• 오픈소스 SW 라이선스는 기본적으로 사용자의 자유로운 사용∙수정∙배포를 보장하며 그에 따른 라이선스 별 일정 의무를 준수 해야 함
개발자 이용자
소스코드의 제공
일정 Rule의 준수 의무
사용, 복제, 배포, 수정의 자유
오픈소스 커뮤니티
< 오픈소스SW 라이선스 모델 >
15
공개SW 라이선스 현황(1/2) 3. 라이선스분석
자주 사용되는 공개SW 라이선스 Top 20
자주 사용되는 상위 10개 공개SW 라이선스는 전체 오픈소스 라이선스 중 약 90%를 차지하고 그 중 GPL과 Apache를 가장 많이 사용함
* 출처: 공개SW 라이선스 가이드(정보통신산업진흥원, 2014)
Rank 라이선스 명 점유율
1. GNU General Public License (GPL) 2.0 33% 2. Apache 2.0 13% 3. GNU General Public License (GPL) 3.0 12% 4. MIT License 11% 5. BSD License 2.0(3-clause, New or Revised) License 7% 6. Artistic License (Perl) 6% 7. GNU Lesser General Public License (LGPL) 2.1 3% 8. GNU Lesser General Public License (LGPL) 3.0 2% 9. Eclipse Public License (EPL) 1% 10. Code Project Open 1.02 License 1% 11. Microsoft Public License (Ms-PL) 1% 12. Mozilla Public License (MPL) 1.1 < 1% 13. Common Development and Distribution License (CDDL) < 1% 14. BSD 2-clause "Simplified" or "FreeBSD" License < 1% 15. Common Public License (CPL) < 1% 16. zlib/libpng License < 1% 17. Academic Free License < 1% 18. GNU Affero GPL 3.0 < 1% 19. Microsoft Reciprocal License (Ms-RL) < 1% 20. Open Software License (OSL) < 1%
주요 특징
• 자주 사용되는 상위 10개 공개SW 라이선스(GPL, LGPL, Apache, MIT, BSD, Perl, EPL, MPL)는 전체 오픈소스 라이선스 중 약 90%를 차지함
• GPL과 Apache 라이선스가 현재 가장 많이 사용됨
1
2
16
공개SW 라이선스 현황(2/2) 3. 라이선스분석
지적재산권 관점 공개SW 라이선스 분류
공개SW, 비공개SW 모두 SW의 범주 안에 속하는 지적재산권 보호대상이며, 지적재산권의 보호범위와 SW라이선스의 구분은 다음과 같음
[범례] 공개SW
사유 SW Freeware Shareware
소프트웨어
MPL QPL CPL OSL GPL LGPL BSD Apache MIT
제약 무제약
배포불필요 (Permissive)
공개SW라이선스
배포의무 (Reciprocal)
특허조항
비공개SW라이선스
특허 SW 비특허 SW
공유 불가능 SW
공유 가능 SW
원라이선스와 동일한 라이선스 배포 의무 有
원라이선스와 동일 라이선스 배포의무 無
: 개인무료 : 기간제한
이름,상표,상호 사용제한 有
이름,상표,상호 사용제한 無
특허권 행사제한 有
* 출처: 공개SW 라이선스 가이드(정보통신산업진흥원, 2014)
17
공개SW 라이선스 양립성 3. 라이선스분석
서로 다른 의무사항을 가진 공개SW 라이선스는 의무사항 충돌로 인해 양립(Compatibility)이 불가능한 경우가 발생 할 수 있으므로 공개SW 활용 시 주의가 필요함
공개SW 양립성
GPL 라이선스와 양립성 문제
18
배포시 소스코드 제공의무와 범위 -소스코드 공개 의무가 없음 -수정 프로그램에 대한 소스코드 공개를 요구하지 않기 때문에 상용SW에 무제한 사용이 가능
복제,배포,수정의 권한 허용
저작권 표시 등 의무사항
1
2
3
-아파치 라이선스로 만들어진 SW를 배포하는 경우에는 저작권 표시와 책임이 없다는 표시 하여야 함
- 소스코드의 자유로운 배포, 수정, 권한이 허용 - 파생저작물의 경우 수정된 파일에 대한 안내문구 첨부, 배포시 “Apache 2.0 라이선스 사본 제공” 표시
이름,상표,상호에 대한 사용제한 4
- “Apache”라는 이름에 대한 상표권을 침해하지 않아야 함
오픈 시프트 (Openshift)
클라우드 파운드리 (CloudFoundry)
Apache 2.0 채택
Apache 2.0 채택
선정 후보 PaaS 라이선스 Apache 2.0
선정된 PaaS는공개 의무가 없고 상업적 이용에 제한이 없는 Apache 2.0 을 채택함
오픈소스 PaaS 라이선스 분석 3. 라이선스분석
19
오픈 시프트 아키텍처 오픈 시프트 구성 라이선스
구분 공개S/W 라이선스
Broker
DNS Bind ISC
Puma BSD 3-Clause
MCollective Apache 2.0
Open4 BSD
Unicorn GPL 2.0
Capistrano MIT
Nokogiri MIT
MongoDB AGPL, Apache 2.0, CC
Messaging ActiveMQ Apache 2.0
Node
Git GPL 2.0
HAProxy GPL 2.0
Docker Apache 2.0
GEARD Apache 2.0
SELinux GPL 2.0
RPM GPL 2.0
SYSTEMD LGPL 2.1
① 오픈 시프트 라이선스 Apache 2.0은 소스코드 공개 의무가 없으나, 세부 구성 요소가 GPL 2.0 계열을 사용할 때에는 라이선스의 양립성 문제로 상업적 활용이 자유롭지 않음
② GPL라이선스를 대체할 수 있는 공개SW를 채택하거나 신규개발이 필요함
주요 시사점
OpenShift 라이선스 상세 분석 (1/2) 3. 라이선스분석
20
오픈 시프트 아키텍처 오픈 시프트 구성 라이선스
구분 공개S/W 라이선스
Cartridges (선택가능)
MongoDB GNU AGPL 3.0
MySQL GPL, FOSS
PostgreSQL BSD
JBoss GUN Library, LGPL 2.0
Tomcat Apache 2.0
PHP PHP
Python Python Software
Foundation
Ruby Ruby, BSD
Node.js MIT
Perl GPL, Artistic
Vert.x Apache 2.0
Jenkins MIT
Zend Server Proprietary
SwitchYard Apache 2.0
Cron Apache 2.0
① Cartridge는 DB, WAS, Language, Build tool 등 사용자가 설치하기 원하는 환경 및 라이선스 별로 선택이 가능
주요 시사점
OpenShift 라이선스 상세 분석 (2/2) 3. 라이선스분석
21
클라우드 파운드리 아키텍처 클라우드 파운드리 구성 라이선스
① 클라우드 파운드리는 대부분 소스코드 의무가 발생되지 않는 공개SW 라이선스 Apache 2.0, BSD, MIT를 채택함으로써 2차 저작물 배포 시 자유로우나, 일부 구성컴포넌트(debian_nfs_server, haproxy)가 GPL 라이선스를 채택하고 있어 소스코드 공개의 제약요건이 발생함
② GPL라이선스를 대체할 수 있는 공개SW를 채택하거나 신규개발이 필요함
주요 시사점
구분 공개S/W 라이선스 Dynamic Router Gorouter Apache 2.0
Cloud Controller
cloud_controller_ng Apache 2.0 common Apache 2.0
nginx_newrelic_plugin BSD Nginx BSD
UAA/Login Servers login Apache 2.0 uaa Apache 2.0
Service Broker Node mysqlclient Apache 2.0
sqlite Public domain Health Manager hm9000 Apache 2.0
DEA Pool(Apps) warden Apache 2.0
dea_next Apache 2.0
DEA Pool(Build Packs)
buildpack_nodejs MIT buildpack_go BSD
buildpack_ruby MIT buildpack_java Apache 2.0
DEA Pool(Logging)
loggregator Apache 2.0 dea_logging_agent Apache 2.0 syslog_aggregator Apache 2.0
loggregator_trafficcontroller Apache 2.0
Cloud Foundry 라이선스 상세 분석 (1/2) 3. 라이선스분석
22
클라우드 파운드리 아키텍처 클라우드 파운드리 구성 라이선스
① 클라우드 파운드리는 대부분 소스코드 의무가 발생되지 않는 공개SW 라이선스 Apache 2.0, BSD, MIT를 채택함으로써 2차 저작물 배포 시 자유로우나, 일부 구성컴포넌트(debian_nfs_server, haproxy)가 GPL 라이선스를 채택하고 있어 소스코드 공개의 제약요건이 발생함
② GPL라이선스를 대체할 수 있는 공개SW를 채택하거나 신규개발이 필요함
주요 시사점
구분 공개S/W 라이선스
Messaging nats MIT
gnatsd MIT
CloudFoundry BOSH
cli Apache 2.0
postgres BSD, MIT
libpq Library Free
기타 libyam Apache 2.0
etcd Apache 2.0
etcd_metrics_server Apache 2.0
debian_nfs_server GPL
haproxy GPL
Ruby BSD
Collector MIT
Golang BSD
rootfs_lucid64 Apache 2.0
(Choice) tomcat7 Apache 2.0
Cloud Foundry 라이선스 상세 분석 (2/2) 3. 라이선스분석
23
개방형 클라우드 플랫폼의 관리, 공통, 서비스, 개발도구 및 API, 자원 및 서비스 확장 기능
IaaS Interface
PaaS 공통 관리
Web콘솔, CLI
사용량 측정
개발환경 관리
운영 모니터링
로그수집, 분석
서비스
플랫폼 프로그래밍
언어 별 실행환경
웹/어플리케이션 서버
데이터 저장소
캐쉬
통신, 인터페이스
전자정부
보안, 통합인증
사용자 지원, 협업
통계, 리포팅
디지털 자산관리
시스템 관리
App 수용 능력의 수평적 확장
(서비스 확장 위한 자원 추가)
PaaS 서비스 수평적 확장
(Zone, Region 추가)
PaaS를 위한 자원 확보
(VM, N/W, 등)
클라우드 공통 API
(OpenStack, VMware, AWS, 등)
독립된 실행환경
서비스 라우팅
서비스 등록, 관리
워크플로우
지능형 자원관리
Platform 계정,
그룹 별 권한, 인증 미래플랫폼
BigData 플랫폼 I/F
IoT 플랫폼 I/F
기타 플랫폼 I/F
(Mobile, 등)
OpenStack Based Service Providers Amazon Web Service CloudStack Based Service Providers
개발도구
클라우드
개발 도구
클라우드
생명 주기 관리
개방형 클라우드 플랫폼 아키텍처 4. 확장·신규 개발 범위 분석
24
CloudFoundry의 경우 개방형 클라우드 플랫폼의 기능을 거의 수용,일부 개발도구 관련해서 취약
Cloud Foundry 플랫폼 4. 확장·신규 개발 범위 분석
PaaS 공통
Cloud Provider Interface (CPI), BOSH CLI
관리
CF CLI
Bosh
개발환경 관리
Metrics Collector
Health Manager
App Log
Aggregator
서비스 플랫폼 Buildpacks
(java,Spring,Node.js,
Ruby , etc)
Application Execution(DEA)
Cloud Controller
Blob Store
Service Brokers
Message Bus
(NATS)
전자정부
보안, 통합인증
사용자 지원, 협업
통계, 리포팅
디지털 자산관리
시스템 관리
App 수용 능력의 수평적 확장
(서비스 확장 위한 자원 추가)
PaaS 서비스 수평적 확장
(Zone, Region 추가)
PaaS를 위한 자원 확보
(VM, N/W, 등)
클라우드 공통 API
(OpenStack, VMware, AWS, 등)
Cloud Controller
(Go)Router
Service Brokers
워크플로우
Bosh
UAA(Oauth2 Server)
Login Server
Cloud Controller
미래플랫폼
BigData 플랫폼 I/F
IoT 플랫폼 I/F
기타 플랫폼 I/F (Mobile, 등)
OpenStack Based Service Providers Amazon Web Service CloudStack Based Service Providers
개발도구
클라우드 개발 도구
클라우드 생명 주기 관리
재사용 및 확장 개발 신규 개발
25
OpenShift의 경우 개방형 클라우드 플랫폼의 기능을 거의 수용,일부 IaaS와의 연동부분은 취약
IaaS Interface (자체적으로 제공하지 않음)
PaaS 공통 관리
Admin Console, rhc
Node Manager
Cartridge Manager
Log Manager
Cartrideg Manager
서비스 플랫폼
Cartridge Manager
(java,Spring,Node.js,
Ruby , etc)
Cartridge Manager
(tomcat, jboss, etc)
Cartridge Manager
Cartridge Manager
Network Manager
전자정부
보안, 통합인증
사용자 지원, 협업
통계, 리포팅
디지털 자산관리
시스템 관리
App 수용 능력의 수평적 확장
(서비스 확장 위한 자원 추가)
PaaS 서비스 수평적 확장
(Zone, Region 추가)
PaaS를 위한 자원 확보
(VM, N/W, 등)
클라우드 공통 API
(OpenStack, VMware, AWS, 등)
Gear Manager
Node Manager
Broker
OpenShift Workflow
Broker
Broker 미래플랫폼
BigData 플랫폼 I/F
IoT 플랫폼 I/F
기타 플랫폼 I/F
(Mobile, 등)
OpenStack Based Service Providers Amazon Web Service CloudStack Based Service Providers
개발도구
통합 IDE
(eclipse, Cloud9 IDE)
Broker
재사용 및 확장 개발 신규 개발
OpenShift 플랫폼 4. 확장·신규 개발 범위 분석
26
개발도구에 있어서 보완 개발이 필요 IaaS Interface에 대한 보완 개발이 필요
개방형 클라우드 플랫폼 4. 확장·신규 개발 범위 분석
OPENSHIFT 확장·신규 개발 범위 CLOUD FOUNDRY 확장·신규 개발 범위