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

2,014 views

Published on

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

Published in: Technology
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,014
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
189
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

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

  1. 1. 0 Open PaaS 심층 분석(CloudFoundry) 2014. 7. 30.(수) 현 재욱 이사 ㈜비디
  2. 2. 발표 순서 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 설치 구성도
  3. 3. 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
  4. 4. 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
  5. 5. 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
  6. 6. 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 등
  7. 7. 6 4-1. 실행 흐름 구조 4. 실행 흐름 분석 Router Health Manager Actual State Desired State Messaging (NATS) DEA DEA DEA Blobstore CCDB UAADB Service Broker Node(s) Cloud Controller Service InstanceService Instance APP 저장소 메타데이터 Routing 정보 Health Check Seervice Binding Seervice Instance Traffic CloudFoundry는 모든 트래픽을 라우터를 통해, 제어 또는 서비스 유형에 따라 Cloud Controller와 DEA로 분기 되며, 문제점 을 자동 감지하고 복구하는 Health Check 기능을 제공합니다.
  8. 8. 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. 실행 흐름 분석
  9. 9. 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)
  10. 10. 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)
  11. 11. 10 Agent Health Manager Actual State Desired StateMessaging (NATS) Worker Blobstore BOSHDB UAADB Deployment Controller(Director) 저장소 메타데이터 Job 실행 VM 상태체크 Cloud Provider Interface CloudFoundry 운영관리는 기능은 BOSH로 수행되며 인프라와의 연동은 CPI를 통해 이루어집니다. 5-1. 운영 흐름 구조 5. 운영 흐름 분석
  12. 12. 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_data 8 : 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 : deployment 15 : json_data property_manger 16 : current_deployment17 : result_message 18 : deploy() 19 : post '/deployments', :consumes => :yaml() 20 : create_deployment() 21 : perform() 22 : void 23 : task 24 : redirected 25 : status, task_id deployments_controller depolyment_manger deployment_manager deployments_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. 운영 흐름 분석
  13. 13. 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는 아래와 같습니다.
  14. 14. 13 CloudFoundry는 구성요소의 확장을 2가지 축에서 지원합니다. Vertical Scaling은 구성요소가 탑재된 VM의 성능(CPU/Memory/Disk 등)을 업그레이드 하는 방식의 확장이고, Horizontal Scaling은 구성요소가 탑재된 VM을 수평적으로 개수를 늘려가는 방식의 확장입니다. Router DB Service credentials Scale Horizontally Scale Vertically Scale DEAs BOSH CLI Cloud Controller DEA DEA DEA DEA DEA 6-2. CloudFoundry’s Scalability 6. 개방성 분석
  15. 15. 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. 설치 방법 및 구성
  16. 16. 15 VPC Availability Zone Elastic Load Balancer BOSH SubnetCF 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. 설치 방법 및 구성

×