0 Open PaaS 심층 분석(CloudFoundry) 2014. 7. 30.(수) 현 재욱 이사 ㈜비디
Jan 15, 2015
0
Open PaaS 심층 분석(CloudFoundry) 2014. 7. 30.(수)
현 재욱 이사
㈜비디
발표 순서
1. 개요
2. 제품 라인업
3. 아키텍처 구조 분석 3-1 아키텍처 구조 3-2 멀티테넌시 구조
4. 실행 흐름 분석 4-1 실행 흐름 구조 4-2 시퀀스 흐름
5. 운영 흐름 분석 5-1 운영 흐름 구조 5-2 시퀀스 흐름
6. 개방성 분석 6-1 지원 언어 및 서비스 6-2 확장 방안
7. 설치 방법 및 구성 7-1 설치 방법 7-2 설치 구성도
2
Why Open PaaS? 1. 개요
Open Source
Micro Clouds
Private Clouds
Public Clouds
CUSTOM SERVICES
CUSTOM RUNTIMES
CloudFoundry는 Cloud Infra 축, 언어/프레임워크 축과 기타 외부 서비스 축에 대한 개방성을 CPI(Cloud Provider Interface), Buildpack, Service로 제공합니다.
** 이미지출처 : Pivotal
3
CloudFoundry’s Product Line-up 2. 제품 라인업
CloudFoundry의 Product는 Pivotal의 Public Web Service, 상용제품인 Pivotal CF(CloudFoundry), Open Source CloudFoundry Project 세 가지로 이루어져 있습니다.
https://run.pivotal.io/ http://gopivotal.com/platform-
as-a-service/pivotal-cf http://cloudfoundry.org/index.html
4
3-1. 아키텍처 구조 3. 아키텍처 구조 분석
CloudFoundry는 VMWare/OpenStack/AWS와 같은 Infrastructure 및 다양한 Application들이 Deploy 되고 실행되는 언어/프레임워크에 중립적이며, 외부 서비스와 연동이 자유로운 Open PaaS에 최적의 아키텍처를 제공합니다.
Cloud Controller
Dynamic Router
UAA/Login Servers Health Manager
DEA Pool(s) Service Broker Node(s)
User Provided Service Instances
Messaging (NATS)
Apps
Cloud Foundry BOSH
Build Packs
Logging
Apps
Infrastructure
PaaS
** 이미지출처 : Pivotal
5
3-2. 멀티테넌시 구조 3. 아키텍처 구조 분석
Application Container
Application Runtime
Application
DEA
Application Container
Application Runtime
Application
Application Container
Application Runtime
Application
DEA
Application Container
Application Runtime
Application
Buildpack Service Broker IaaS
Service Instance Service Instance
Service Instance
Service Instance 생성
Router
Cloud Controller UAA Login Health Manager
NATS(Message Bus)
Infra 제공 실행환경 통합 Service
Binding
공유 자원
Language Framework
WAS 등
Compute Cloud Storage Cloud Network Cloud
DBMS Message Queue
SaaS 등
6
4-1. 실행 흐름 구조 4. 실행 흐름 분석 Ro
uter
Health Manager
Actual State
Desired State
Messaging (NATS)
DEA DEA DEA
Blobstore CCDB UAADB
Service Broker Node(s)
Cloud Controller
Service Instance
Service Instance
APP 저장소 메타데이터
Routing 정보
Health Check
Seervice
Binding
Seervice Instance
Traffic
CloudFoundry는 모든 트래픽을 라우터를 통해, 제어 또는 서비스 유형에 따라 Cloud Controller와 DEA로 분기되며, 문제점 을 자동 감지하고 복구하는 Health Check 기능을 제공합니다.
7
1) CF Push Command Line Interface 호출
2) Cloud Controller에 Application생성을 요청
한다. Cloud Controller는 Access Token을
Decode하여 사용자 인증
3) 사용자가 인증되면, Cloud Controller는 새
로운 Application 정보를 DB에 Insert
4) 사용자가 Application 생성 권한이 있는지
확인하고, 있다면 DB 변경내용 반영
5) Application의 생성을 Event에 기록하고, 설
정된 Application 정보에 대한 응답
6) Cloud Controller에 Route 생성을 요청하고,
새로운 Route에 대하여 3)~5)과정 반복
7) 생성된 Route정보를 Application DB 반영
① 호출 및 인증
② APP 정보 저장
③ Route 정보 저장
4-2.시퀀스 흐름 – 예: CF Push(Application Deploy) 4. 실행 흐름 분석
8
8) 임시 디렉터리에 업로드 할 파일을 복사 한다.
이때, 업로드 할 파일의 중복 여부 체크
9) Cloud Controller에 Application 파일의 업로
드를 요청한다. Cloud Controller는 업로드
가능한 사용자인지 체크하고, Application의
리소스를 업로드 할 Blobstore 구성
10) Resource를 Hash하여 Blobstore에 복사하고,
Blobstore에서 Hash된 Resource들을 다운
로드 한 후, Resource를 Packaging하여
Blobstore 복사
④ 파일 업로드
4. 실행 흐름 분석 4-2.시퀀스 흐름 – 예: CF Push(Application Deploy)
9
11) 업로드된 Application의 Start를 Cloud
Controller에 요청하면, Cloud Controller는
DEA에 Start메시지 전달
12) DEA는 메시지를 전달받아 Application에 대
한 Instance를 생성하고 이를 실행한 후,
DEA Pool에 Instance정보(State, Memory 등)
반영
13) Push Process는 Instance가 Start될 때까지
계속 감시하여, 사용자에게 Application 실
행 상태를 보여줌
⑤ APP 시작
4. 실행 흐름 분석 4-2.시퀀스 흐름 – 예: CF Push(Application Deploy)
10
Agen
t
Health Manager
Actual State
Desired State Messaging (NATS)
Worker
Blobstore BOSHDB UAADB
Deployment Controller(Director)
저장소 메타데이터
Job 실행
VM 상태체크
Cloud Provider Interface
CloudFoundry 운영관리는 기능은 BOSH로 수행되며 인프라와의 연동은 CPI를 통해 이루어집니다.
5-1. 운영 흐름 구조 5. 운영 흐름 분석
11
alt
bosh_cli director controller manager Jobhelper
1 : prepare_deployment_manifest()
2 : manifest := load_yaml_file()
3 : list_properties()4 : get '/deployments/:deployment/properties'()
deployment.rb
5 : get_properties()
6 : properties7 : json_data8 : properties
9 : manifest_yaml
deployment_helper
yaml_helper
10 : inspect_deployment_changes()11 : get_deployment()
deployments_controller
12 : get '/deployments/:name'()13 : find_by_name()
14 : deployment15 : json_data
property_manger
16 : current_deployment17 : result_message
18 : deploy()
19 : post '/deployments', :consumes => :yaml()
20 : create_deployment()21 : perform()
22 : void23 : task
24 : redirected
25 : status, task_id
deployments_controllerdepolyment_manger
deployment_managerdeployments_controller
job: update_deployment
if interactive?
1) BOSH Deploy Command Line Interface 호출
2) Login 권한 체크
3) Helper 에서 Deployment YAML 파일을 Load
하고 Director 는 Deployment Controller를 통
해서 해당 Deployment의 Properties 정보를
가져옴
4) 변경 전.후의 Deployment YAML 정보를 사용
자에게 Display 하여서 어떤 설정이 변경 되었
는지 보여줌
5) Director 에서 해당 Controller 인
Deployments Controller를 통해서 Update
Deployment Job Queue 를 실행하여 지정된
Deployment 설정으로 Deploy 실행
6) Job을 실행한 Task ID 에 해당하는 Task
Tracker 실행
① 호출 및 인증
② Deploy 준비
③ Deploy 실행
5-2. 시퀀스 흐름 – 예: BOSH Deploy(System 운영) 5. 운영 흐름 분석
12
CPIs(Cloud Provider Interface) AWS/OpenStack/VMWare
Buildpacks Java/Spring/Ruby/Node.js
PHP/Python/Go
Services MySQL/RabbitMQ/MongoDB/PostgreSQL
PHD/Analytics(상용제품 지원)
6-1. 지원 언어 및 서비스 6. 개방성 분석
CloudFoundry는 기본적으로 아래와 같이 CPI : IaaS 지원, Buildpack : 언어 및 프레임워크 지원, Services : 외부의 다양한 서비스들(DBMS/MQ 등) 연결 및 통합 지원합니다. 현재 공식적으로 지원 되는 주요 CPI/Buildpack/Service는 아래와 같습니다.
13
CloudFoundry는 구성요소의 확장을 2가지 축에서 지원합니다. Vertical Scaling은 구성요소가 탑재된 VM의 성능(CPU/Memory/Disk 등)을 업그레이드 하는 방식의 확장이고, Horizontal Scaling은 구성요소가 탑재된 VM을 수평적으로 개수를 늘려가는 방식의 확장입니다.
Rout
er
DB Service credentials
Scale Horizontally
Scale Vertically
Scale DEAs
BOSH CLI Cloud Controller
DEA DEA
DEA
DEA
DEA
6-2. CloudFoundry’s Scalability 6. 개방성 분석
14
1. 인프라 환경 구성
- Network(Subnet, Routing, VPC 등) 환경 구성, Blobstore(S3) 환경 구성, DBMS(RDS) 환경 구성
2. Inception Server(설치 제어용 서버) 설치
- Ruby 환경 설정, Git 설치, RubyGems 설치, BOSH CLI 설치, 연관 Package Updates
3. Micro BOSH Server(BOSH의 최소사양) 설치
- Deployment Manifest 생성, Stemcell 다운로드, Micro BOSH Deployment, Targeting & Login
4. BOSH Server(시스템 관리용 서버) 설치
- Release Upload, Stemcell Upload, Deployment Manifest 생성, BOSH Deployment, Targeting & Login
5. Cloud Foundry(PaaS) 설치
- Release Upload, Stemcell Upload, Deployment Manifest 생성, Cloud Foundry Deployment
6. Installation 검증
- CF CLI 설치, Targeting & Login, Organization 생성, Space 생성 및 Switching, Sample Application Pushing & 연결
7-1. 설치 방법 7. 설치 방법 및 구성
15
VPC
Availability Zone
Elastic Load Balancer
BOSH Subnet CF Subnet
S3 Bucket Blob Store
RDS(MySQL) CCDB/UAADB
Router
CloudController Login UAA
Etcd Loggregator NATS
BOSH
NAT Server
EIP
EIP
* NAT : Network Address Translation * UAA : User Account and Authentication * EIP : Elastic IP * CC : Cloud Controller * RDS : Relational Database Service * VPC : Virtual Private Network
7-2. 설치 구성도 – On AWS 7. 설치 방법 및 구성