[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 pub] 2.cloud foundry 분석

16
0 Open PaaS 심층 분석(CloudFoundry) 2014. 7. 30.() 재욱 이사 ㈜비디

Upload: tommy-lee

Post on 15-Jan-2015

273 views

Category:

Technology


7 download

DESCRIPTION

[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

TRANSCRIPT

Page 1: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

0

Open PaaS 심층 분석(CloudFoundry) 2014. 7. 30.(수)

현 재욱 이사

㈜비디

Page 2: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

발표 순서

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 설치 구성도

Page 3: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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

Page 4: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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

Page 5: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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

Page 6: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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 등

Page 7: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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 기능을 제공합니다.

Page 8: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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. 실행 흐름 분석

Page 9: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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)

Page 10: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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)

Page 11: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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. 운영 흐름 분석

Page 12: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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. 운영 흐름 분석

Page 13: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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는 아래와 같습니다.

Page 14: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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. 개방성 분석

Page 15: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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. 설치 방법 및 구성

Page 16: [개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 2.cloud foundry 분석

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. 설치 방법 및 구성