SlideShare une entreprise Scribd logo
1  sur  17
Future of Apache CloudStack: modular,
distributed, and hackable
Darren Shepherd
Citrix

CCCEU 2013
About Me
●

Apache CloudStack Committer

●

Previously - Cloud Architect @ GoDaddy.com
–

Built three generations of clouds
●
●

●

2nd – Custom “CloudStack Compatible”

●

–

1st – CloudStack 2.x, custom storage framework
3rd – 100% from scratch

Been developing IaaS orchestration systems full time for the last 4
years

Currently – Do something @ Citrix
–

Focus on open source

–

I care about architecture and design
What's This About
●

My opinions

●

What I think we should focus on architecturally

●

What I'm trying to accomplish
General Comments
●

Do more with less
–

Identify patterns in code and create frameworks
●

–
●

For example, make Abstract base classes

Copy and paste is bad

Need to leverage more open source frameworks
–

jOOQ, Spring TX, Netflix Archaius/Servo, Jackson, Apache jclouds,
Flyway/Liquibase, Apache Commons

●

Past/Current – ACS adds cloudiness to legacy technologies

●

Current/Future – ACS orchestrates cloudy technologies

●

Always provide a way for Apache CloudStack to do nothing and
delegate to something else
Modular – Why?
●

Enforce design and architectural boundaries

●

Better pluggability

●

Quality/Testing

●

Lays the foundation for distributed architecture
Modular – What's been done
●

4.3 - Spring Modularization
–

META-INF/cloudstack/mycomponent/module.properties

–

META-INF/cloudstack/mycomponent/*context.xml

–

Over 50 Modules
Stats
●

~400k lines of Java (not 1.2m)
–
–

32% - engine, framework, services, usage, util

–
●

42% - agent, api, core, server
26% - plugins

We still have big blobs of code
–

74% “Core Code”

“Core Code” is not really core. Includes VR, CP,
SSVM, XenServer, others
What needs to be done
●

Package plug-ins in separate RPM/DEBs

●

Break out more code from /server/src

●

Break apart *ManagerImpl classes
–

●

Implement too many interfaces that belong in
different architectural layers

Modularize VR and VPC code
Distributed Architecture
●

Maybe you don't care
–

Many don't – Monolithic deployment is simple and
scalable enough for most use case

●

Support multiple deployment models

●

Scalability
–

●

Scale tiers according to load characteristics

Reliability
–

Put certain components closer to resources
Monolithic
Single JVM

Redundant JVM
Fully Distributed
●

System Services
–
–

●

Event Bus
Lock Manager

Servers
–

API

–

Back end Jobs

–

Host Manager
How
●

Event Bus
–

Hazelcast or Redis

–

Do not use “reliable messaging”
●

●

Lock Manager
–

●

Works more like UDP multicast

Hazelcast or ZooKeeper

Same binary on all servers
–

“Profiles” used to determine which Spring modules are
activated on start
Hackability
●

Should be relatively simple to add one off
functionality
–

●

●

Every cloud deployment is slightly different

Need to stay relevant with upcoming
technologies
Want people to integrate first with ACS because
–

It works

–

It's easy
Totally scientific observation
●

Two types of sys admins
–

Those who hate Java for no good reason

–

Those who hate Java for a good reason

Those that
will tolerate developing
in Java

Those who
love systems
(admins/engineers)
Dynamic languages can be good

Those that
Those who
will tolerate developing
love systems
in a dynamic
(admins/engineers)
language
Hackability
●

Move systems related code to python

●

No Java on the hypervisor!

●

Need a new ServerResource architecture that
delegates to agents in any language
–

Work for Hyper-V is a step in the right direction

●

Decouple VR from HypervisorResource

●

Community help needed
–

Good work, GCE API and hopefully new AWS API
Questions?

Contenu connexe

Tendances

Interoperable OpenStack guest provisioning with Cloudbase-Init
Interoperable OpenStack guest provisioning with Cloudbase-InitInteroperable OpenStack guest provisioning with Cloudbase-Init
Interoperable OpenStack guest provisioning with Cloudbase-Init
Alessandro Pilotti
 
Building a dev ops paas with puppet, docker, openstack and apache stratos
Building a dev ops paas with puppet, docker, openstack and apache stratosBuilding a dev ops paas with puppet, docker, openstack and apache stratos
Building a dev ops paas with puppet, docker, openstack and apache stratos
Lakmal Warusawithana
 

Tendances (20)

State of the Container Ecosystem
State of the Container EcosystemState of the Container Ecosystem
State of the Container Ecosystem
 
Interoperable OpenStack guest provisioning with Cloudbase-Init
Interoperable OpenStack guest provisioning with Cloudbase-InitInteroperable OpenStack guest provisioning with Cloudbase-Init
Interoperable OpenStack guest provisioning with Cloudbase-Init
 
Mihai Tataran - Dev/Test Continuous Delivery Automation cu Microsoft Azure
Mihai Tataran - Dev/Test Continuous Delivery Automation cu Microsoft AzureMihai Tataran - Dev/Test Continuous Delivery Automation cu Microsoft Azure
Mihai Tataran - Dev/Test Continuous Delivery Automation cu Microsoft Azure
 
Java PaaS Apache Stratos
Java PaaS   Apache StratosJava PaaS   Apache Stratos
Java PaaS Apache Stratos
 
Wso2 con 2014-us-talk-deep dive into apache stratos & private paas
Wso2 con 2014-us-talk-deep dive into apache stratos & private paasWso2 con 2014-us-talk-deep dive into apache stratos & private paas
Wso2 con 2014-us-talk-deep dive into apache stratos & private paas
 
Sven Vogel: Running CloudStack and OpenShift with NetApp on KVM
Sven Vogel: Running CloudStack and OpenShift with NetApp on KVMSven Vogel: Running CloudStack and OpenShift with NetApp on KVM
Sven Vogel: Running CloudStack and OpenShift with NetApp on KVM
 
Cornel Popescu - Protectia datelor in cloud: de ce si cum se face
Cornel Popescu - Protectia datelor in cloud: de ce si cum se faceCornel Popescu - Protectia datelor in cloud: de ce si cum se face
Cornel Popescu - Protectia datelor in cloud: de ce si cum se face
 
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
 
The OpenNebula Approach to Bring Open-Source to the Enterprise
The OpenNebula Approach to Bring Open-Source to the EnterpriseThe OpenNebula Approach to Bring Open-Source to the Enterprise
The OpenNebula Approach to Bring Open-Source to the Enterprise
 
Tudor Damian - Microsoft Azure ca si solutie pentru backup sau disaster recovery
Tudor Damian - Microsoft Azure ca si solutie pentru backup sau disaster recoveryTudor Damian - Microsoft Azure ca si solutie pentru backup sau disaster recovery
Tudor Damian - Microsoft Azure ca si solutie pentru backup sau disaster recovery
 
Mihai Tataran - Definirea unei strategii pentru migrarea solutiilor si a orga...
Mihai Tataran - Definirea unei strategii pentru migrarea solutiilor si a orga...Mihai Tataran - Definirea unei strategii pentru migrarea solutiilor si a orga...
Mihai Tataran - Definirea unei strategii pentru migrarea solutiilor si a orga...
 
OpenNebulaconf2017US: OpenNebula hybrid clouds with Amazon and Azure by Ruben...
OpenNebulaconf2017US: OpenNebula hybrid clouds with Amazon and Azure by Ruben...OpenNebulaconf2017US: OpenNebula hybrid clouds with Amazon and Azure by Ruben...
OpenNebulaconf2017US: OpenNebula hybrid clouds with Amazon and Azure by Ruben...
 
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
OpenNebulaConf2017US: Welcome and project update by Ignacio M. Llorente and R...
 
Building a dev ops paas with puppet, docker, openstack and apache stratos
Building a dev ops paas with puppet, docker, openstack and apache stratosBuilding a dev ops paas with puppet, docker, openstack and apache stratos
Building a dev ops paas with puppet, docker, openstack and apache stratos
 
vBACD - Deploying Infrastructure-as-a-Service with CloudStack - 2/28
vBACD - Deploying Infrastructure-as-a-Service with CloudStack - 2/28vBACD - Deploying Infrastructure-as-a-Service with CloudStack - 2/28
vBACD - Deploying Infrastructure-as-a-Service with CloudStack - 2/28
 
Build your own private Cloud environment
Build your own private Cloud environmentBuild your own private Cloud environment
Build your own private Cloud environment
 
Microservices Architecture and Containers.
Microservices Architecture and Containers.Microservices Architecture and Containers.
Microservices Architecture and Containers.
 
OpenNebula 5.4 Enhancements vCenter Integration
OpenNebula 5.4 Enhancements vCenter IntegrationOpenNebula 5.4 Enhancements vCenter Integration
OpenNebula 5.4 Enhancements vCenter Integration
 
Apache CloudStack Google Summer of Code
Apache CloudStack Google Summer of CodeApache CloudStack Google Summer of Code
Apache CloudStack Google Summer of Code
 
PaaS on top of CloudStack
PaaS on top of CloudStackPaaS on top of CloudStack
PaaS on top of CloudStack
 

Similaire à Future of Apache CloudStack: modular, distributed, and hackable

Similaire à Future of Apache CloudStack: modular, distributed, and hackable (20)

[HKOSCON][20180616][Containerized High Availability Virtual Hosting Deploymen...
[HKOSCON][20180616][Containerized High Availability Virtual Hosting Deploymen...[HKOSCON][20180616][Containerized High Availability Virtual Hosting Deploymen...
[HKOSCON][20180616][Containerized High Availability Virtual Hosting Deploymen...
 
[BarCamp2018][20180915][Tips for Virtual Hosting on Kubernetes]
[BarCamp2018][20180915][Tips for Virtual Hosting on Kubernetes][BarCamp2018][20180915][Tips for Virtual Hosting on Kubernetes]
[BarCamp2018][20180915][Tips for Virtual Hosting on Kubernetes]
 
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
[Srijan Wednesday Webinars] How to Build a Cloud Native Platform for Enterpri...
 
Openstack - Enterprise cloud management platform
Openstack - Enterprise cloud management platformOpenstack - Enterprise cloud management platform
Openstack - Enterprise cloud management platform
 
Apache Mesos Overview and Integration
Apache Mesos Overview and IntegrationApache Mesos Overview and Integration
Apache Mesos Overview and Integration
 
Getting Started with Apache CloudStack
Getting Started with Apache CloudStackGetting Started with Apache CloudStack
Getting Started with Apache CloudStack
 
Instant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositoriesInstant developer onboarding with self contained repositories
Instant developer onboarding with self contained repositories
 
Cloudstack vs Openstack
Cloudstack vs OpenstackCloudstack vs Openstack
Cloudstack vs Openstack
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
 
Microservices with Node and Docker
Microservices with Node and DockerMicroservices with Node and Docker
Microservices with Node and Docker
 
Cluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards KubernetesCluster-as-code. The Many Ways towards Kubernetes
Cluster-as-code. The Many Ways towards Kubernetes
 
Cloud Orchestration is Broken
Cloud Orchestration is BrokenCloud Orchestration is Broken
Cloud Orchestration is Broken
 
Disposable infrastructure
Disposable infrastructureDisposable infrastructure
Disposable infrastructure
 
Halifax DevOps - Meet-up - July.19 2017
Halifax DevOps - Meet-up - July.19 2017Halifax DevOps - Meet-up - July.19 2017
Halifax DevOps - Meet-up - July.19 2017
 
Short-Training asp.net vNext
Short-Training asp.net vNextShort-Training asp.net vNext
Short-Training asp.net vNext
 
Sebastien goasguen cloud stack and docker
Sebastien goasguen   cloud stack and dockerSebastien goasguen   cloud stack and docker
Sebastien goasguen cloud stack and docker
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker Cloud
 
Modern Elastic Datacenter Architecture
Modern Elastic Datacenter ArchitectureModern Elastic Datacenter Architecture
Modern Elastic Datacenter Architecture
 
[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native Environments[WSO2Con Asia 2018] Architecting for Container-native Environments
[WSO2Con Asia 2018] Architecting for Container-native Environments
 
Introduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OSIntroduction to Apache Mesos and DC/OS
Introduction to Apache Mesos and DC/OS
 

Dernier

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Dernier (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Future of Apache CloudStack: modular, distributed, and hackable

  • 1. Future of Apache CloudStack: modular, distributed, and hackable Darren Shepherd Citrix CCCEU 2013
  • 2. About Me ● Apache CloudStack Committer ● Previously - Cloud Architect @ GoDaddy.com – Built three generations of clouds ● ● ● 2nd – Custom “CloudStack Compatible” ● – 1st – CloudStack 2.x, custom storage framework 3rd – 100% from scratch Been developing IaaS orchestration systems full time for the last 4 years Currently – Do something @ Citrix – Focus on open source – I care about architecture and design
  • 3. What's This About ● My opinions ● What I think we should focus on architecturally ● What I'm trying to accomplish
  • 4. General Comments ● Do more with less – Identify patterns in code and create frameworks ● – ● For example, make Abstract base classes Copy and paste is bad Need to leverage more open source frameworks – jOOQ, Spring TX, Netflix Archaius/Servo, Jackson, Apache jclouds, Flyway/Liquibase, Apache Commons ● Past/Current – ACS adds cloudiness to legacy technologies ● Current/Future – ACS orchestrates cloudy technologies ● Always provide a way for Apache CloudStack to do nothing and delegate to something else
  • 5. Modular – Why? ● Enforce design and architectural boundaries ● Better pluggability ● Quality/Testing ● Lays the foundation for distributed architecture
  • 6. Modular – What's been done ● 4.3 - Spring Modularization – META-INF/cloudstack/mycomponent/module.properties – META-INF/cloudstack/mycomponent/*context.xml – Over 50 Modules
  • 7. Stats ● ~400k lines of Java (not 1.2m) – – 32% - engine, framework, services, usage, util – ● 42% - agent, api, core, server 26% - plugins We still have big blobs of code – 74% “Core Code” “Core Code” is not really core. Includes VR, CP, SSVM, XenServer, others
  • 8. What needs to be done ● Package plug-ins in separate RPM/DEBs ● Break out more code from /server/src ● Break apart *ManagerImpl classes – ● Implement too many interfaces that belong in different architectural layers Modularize VR and VPC code
  • 9. Distributed Architecture ● Maybe you don't care – Many don't – Monolithic deployment is simple and scalable enough for most use case ● Support multiple deployment models ● Scalability – ● Scale tiers according to load characteristics Reliability – Put certain components closer to resources
  • 11. Fully Distributed ● System Services – – ● Event Bus Lock Manager Servers – API – Back end Jobs – Host Manager
  • 12. How ● Event Bus – Hazelcast or Redis – Do not use “reliable messaging” ● ● Lock Manager – ● Works more like UDP multicast Hazelcast or ZooKeeper Same binary on all servers – “Profiles” used to determine which Spring modules are activated on start
  • 13. Hackability ● Should be relatively simple to add one off functionality – ● ● Every cloud deployment is slightly different Need to stay relevant with upcoming technologies Want people to integrate first with ACS because – It works – It's easy
  • 14. Totally scientific observation ● Two types of sys admins – Those who hate Java for no good reason – Those who hate Java for a good reason Those that will tolerate developing in Java Those who love systems (admins/engineers)
  • 15. Dynamic languages can be good Those that Those who will tolerate developing love systems in a dynamic (admins/engineers) language
  • 16. Hackability ● Move systems related code to python ● No Java on the hypervisor! ● Need a new ServerResource architecture that delegates to agents in any language – Work for Hyper-V is a step in the right direction ● Decouple VR from HypervisorResource ● Community help needed – Good work, GCE API and hopefully new AWS API