SlideShare a Scribd company logo
1 of 25
Download to read offline
© 2014 Sungard AS. All rights reserved.
Building a CloudStack UI for
the Enterprise
David Grizzanti, Bill Jones
Sungard Availability Services
CCCNA’14 - APRIL 10TH, 2014 - DENVER, CO
Overview
!   Who are we?
–  David Grizzanti (Software Engineer @ Sungard AS)
–  Bill Jones (Software Engineer @ Sungard AS)
!   Cloud Engineering @ Sungard Availability Services
–  Current Cloud Offering & why CloudStack is the future
!   What’s unique about our UI
–  Features
–  Technologies we’re using
!   Overall Architecture
!   Integrating with CloudStack
!   Demo
!   Continuous Integration
2
CCCNA’14 - April 10th, 2014 - Denver, CO
About Sungard Availability Services
Sungard Availability Services provides IT
Operations support to IT departments that need
to ensure business viability by keeping mission
critical information and applications up and
running.
Sungard AS provides tailored enterprise cloud
services, as well as innovative solutions
including:
!   Disaster Recovery
!   Managed Hosting
!   Software
!   Consulting
As of March 31st, 2014 Sungard AS
was split from Sungard and became a
separate, independent company.
Cloud Engineering at Sungard AS
Current Cloud Platform
!   Enterprise Cloud Services – we operate a shared, multi-tenant
infrastructure
!   We provide a fully managed “Virtual Data Center” environment for
our customers
!   Our customers get cloud economics and agility without needing to
re-architect their applications
!   We currently use traditional network isolation and security
techniques
!   We have developed our own orchestration platform for our fully
automated service provisioning
Issues with this approach
!   Runs on complicated hardware
!   Difficult to perform upgrades, general lifecycle issues
!   Need for a self-service option
4CCCNA’14 - April 10th, 2014 - Denver, CO
Cloud Engineering at Sungard AS
Future/Choosing CloudStack
!   We are growing, so scaling is a concern
!   Customers want more flexibility and provide more customization
!   Improve reliability of provisioning automation
!   Provide more features to customers in an agile fashion
!   Need for a “Public” cloud as well as enterprise offerings
What UI do we offer our customers?
5CCCNA’14 - April 10th, 2014 - Denver, CO
UI: Necessary Features
Self Service
!   Ability to enter credit card and spin up a VM within minutes
Utility Billing
!   Customer shouldn’t be blocked from adding more capacity
Cost Control
!   Customers can see projected spend and manage budgets across their
entire company
Make it straightforward and easy to use!
6CCCNA’14 - April 10th, 2014 - Denver, CO
UI: What sets us apart
Real Time Notifications to the UI
!   Integrates with Event Bus/RabbitMQ
Elevated Permissions on top of API
!   Allow more than just ROOT Admin to administer accounts
Roles
!   Allow for multiple user Roles above what CloudStack provides
Customer centric UI
!   Workplace concept to integrate CloudStack resources and billing
7CCCNA’14 - April 10th, 2014 - Denver, CO
Overall Architecture
Unified Cloud Portal
Web
Single Sign On
Bunny Ears
Billing Integration API
Hermes
Client/Browser CloudPlatform
SockJS
Let’s talk about the tech!
!   Ruby (Bunny Ears)
–  Worker that’s reading from RabbitMQ
!   Ruby on Rails
–  Main web app (running under nginx + unicorn)
! Node.js (Hermes)
–  Notifies client/browser of changes CloudStack resource state
! Backbone.js/Marionette.js + SockJS(WebSockets)
–  Javascript frameworks used to drive UI changes in the browser
–  Websockets keep connection open to Node.js for updating client’s
browser
! Redis
–  Storing information related to each async job
–  User invites
!   Bootstrap
–  Responsive front-end framework
9CCCNA’14 - April 10th, 2014 - Denver, CO
Working with the CloudStack API
Benefits
!   Fully featured API
! Async Jobs
Job Management
!   Storing request parameters + Job ID in Redis for retrieval and
correlation
Areas for improvement
!   Better permissions model (this is already in progress)
!   A Truly RESTful interface
!   Consistency around responses for all requests (async and non-async)
10CCCNA’14 - April 10th, 2014 - Denver, CO
Web
Example…
Working with the Event Bus
Benefits
!   Real time notifications (async jobs results)
!   No polling required
Node.js + SockJS (Websockets)
!   Worker process reads from RabbitMQ
!   Queries CloudStack/Redis
!   Sends events to Hermes -> Client’s browser
Areas for improvement
!   Multiple events types can sometimes be confusing
!   Data spread across more than 1 event
!   Incorrect information included in events
12CCCNA’14 - April 10th, 2014 - Denver, CO
Hermes
Bunny Ears
Client/Browser
Overall Architecture
Unified Cloud Portal
Web
Single Sign On
Bunny Ears
Billing Integration API
Hermes
Client/Browser CloudPlatform
SockJS
Let’s see a Demo!
VM Creation
VM Events
Network Configuration
Testing is Hard
Try as hard as possible to TDD
Tried to use VCR in the beginning…
The rise and fall of Smokestack
!   Built a replica of CloudStack for integration testing (well, almost)
!   Became too much work to maintain
!   Went with “simulator” (quicker on dev cycle)
Test Coverage
!   Code Climate
!   Quality & security analysis for
Ruby on Rails and Javascript
18CCCNA’14 - April 10th, 2014 - Denver, CO
Continuous Integration with CloudStack
Typical Flows
!   Run master after each push
!   Job in jenkins to build new projects for each new branch we push,
auto-build on intial push or update
!   Both master and “feature” branches run full unit and integration tests
Run full test suite after every code push
!   Challenge of trying to run “integration” tests on every push
!   Using CloudStack Simulator for feature tests
–  Pool of CloudStack instances
–  Vagrant/VirtualBox + Rails app to handle resetting each instance
after use
19CCCNA’14 - April 10th, 2014 - Denver, CO
Simulator Pool
Next Steps
Move to Docker?
Docker CloudStack Simulator
! github.com/dgrizzanti/docker-cloudstack-simulator
21CCCNA’14 - April 10th, 2014 - Denver, CO
Tools for sharing
Built a fully featured ruby client for CloudStack (StackerBee)
!   Exception handling
!   Idiomatic Ruby formatting for names (snake_case vs mixedCase)
!   Handling of map parameters
!   Configurable API version
!   CloudStack REPL
!   Faraday – HTTP lib (configurable middleware)
!   Exposes console access URL
!   Tests!
github.com/promptworks/stacker_bee
Vagrant CloudStack Simulator
! github.com/promptworks/vagrant-cloudstack-simulator
22CCCNA’14 - April 10th, 2014 - Denver, CO
Logging
Tracing requests while testing
!   Need a reliable way to trace a request all phases of the application
!   UI -> CloudStack
!   CloudStack -> RabbitMQ -> BunnyEars -> Hermes -> Client
23CCCNA’14 - April 10th, 2014 - Denver, CO
Credits/Acknowledgements
24CCCNA’14 - April 10th, 2014 - Denver, CO
Questions?
David Grizzanti
@dgrizzanti
david.grizzanti@sungardas.com
Bill Jones
bill.jones@sungardas.com

More Related Content

What's hot

AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!Wojciech Gawroński
 
Amazon EKS - Aws community day bengaluru 2019
Amazon EKS - Aws community day bengaluru 2019Amazon EKS - Aws community day bengaluru 2019
Amazon EKS - Aws community day bengaluru 2019Akash Agrawal
 
An introduction to Serverless
An introduction to ServerlessAn introduction to Serverless
An introduction to ServerlessAdrien Blind
 
Firebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile Apps
Firebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile AppsFirebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile Apps
Firebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile AppsDevathon
 
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...Edureka!
 
How to build and deploy serverless apps - AWS Summit Cape Town 2018
How to build and deploy serverless apps - AWS Summit Cape Town 2018How to build and deploy serverless apps - AWS Summit Cape Town 2018
How to build and deploy serverless apps - AWS Summit Cape Town 2018Amazon Web Services
 
AWS Lambda Documentation
AWS Lambda DocumentationAWS Lambda Documentation
AWS Lambda DocumentationWhizlabs
 
Raleigh DevDay 2017: Building CICD pipelines for serverless applications
Raleigh DevDay 2017: Building CICD pipelines for serverless applicationsRaleigh DevDay 2017: Building CICD pipelines for serverless applications
Raleigh DevDay 2017: Building CICD pipelines for serverless applicationsAmazon Web Services
 
Serverless Computing, AWS Way: SourceFuse Technologies
Serverless Computing, AWS Way: SourceFuse Technologies Serverless Computing, AWS Way: SourceFuse Technologies
Serverless Computing, AWS Way: SourceFuse Technologies Sarmishtha Sinha
 
基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅Mason Mei
 
Serverless computing
Serverless computingServerless computing
Serverless computingNitinSalvi14
 
Stop calling everything serverless!
Stop calling everything serverless!Stop calling everything serverless!
Stop calling everything serverless!Jeremy Daly
 
Netflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumNetflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumAdrian Cockcroft
 
Building Cloud-Aware Applications
Building Cloud-Aware ApplicationsBuilding Cloud-Aware Applications
Building Cloud-Aware ApplicationsChris Haddad
 
Workshop: Building Containerized Swift Applications on Amazon ECS
Workshop: Building Containerized Swift Applications on Amazon ECSWorkshop: Building Containerized Swift Applications on Amazon ECS
Workshop: Building Containerized Swift Applications on Amazon ECSAmazon Web Services
 
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017Amazon Web Services
 
ActiveCampaign API Developer Talks - Motivating Sales with Code
ActiveCampaign API Developer Talks - Motivating Sales with CodeActiveCampaign API Developer Talks - Motivating Sales with Code
ActiveCampaign API Developer Talks - Motivating Sales with CodeJordan Skole
 

What's hot (20)

AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!AWS CDK: Your Infrastructure is Code!
AWS CDK: Your Infrastructure is Code!
 
Amazon EKS - Aws community day bengaluru 2019
Amazon EKS - Aws community day bengaluru 2019Amazon EKS - Aws community day bengaluru 2019
Amazon EKS - Aws community day bengaluru 2019
 
An introduction to Serverless
An introduction to ServerlessAn introduction to Serverless
An introduction to Serverless
 
Firebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile Apps
Firebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile AppsFirebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile Apps
Firebase vs MongoDB Stitch vs AWS Amplify vs Azure Mobile Apps
 
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
 
How to build and deploy serverless apps - AWS Summit Cape Town 2018
How to build and deploy serverless apps - AWS Summit Cape Town 2018How to build and deploy serverless apps - AWS Summit Cape Town 2018
How to build and deploy serverless apps - AWS Summit Cape Town 2018
 
AWS Lambda Documentation
AWS Lambda DocumentationAWS Lambda Documentation
AWS Lambda Documentation
 
Raleigh DevDay 2017: Building CICD pipelines for serverless applications
Raleigh DevDay 2017: Building CICD pipelines for serverless applicationsRaleigh DevDay 2017: Building CICD pipelines for serverless applications
Raleigh DevDay 2017: Building CICD pipelines for serverless applications
 
Serverless Computing, AWS Way: SourceFuse Technologies
Serverless Computing, AWS Way: SourceFuse Technologies Serverless Computing, AWS Way: SourceFuse Technologies
Serverless Computing, AWS Way: SourceFuse Technologies
 
基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅
 
Serverless computing
Serverless computingServerless computing
Serverless computing
 
Stop calling everything serverless!
Stop calling everything serverless!Stop calling everything serverless!
Stop calling everything serverless!
 
Netflix in the Cloud at SV Forum
Netflix in the Cloud at SV ForumNetflix in the Cloud at SV Forum
Netflix in the Cloud at SV Forum
 
Building Cloud-Aware Applications
Building Cloud-Aware ApplicationsBuilding Cloud-Aware Applications
Building Cloud-Aware Applications
 
AWS CDK Introduction
AWS CDK IntroductionAWS CDK Introduction
AWS CDK Introduction
 
AWS Amplify
AWS AmplifyAWS Amplify
AWS Amplify
 
Contruyendo tu primera aplicación con AWS
Contruyendo tu primera aplicación con AWSContruyendo tu primera aplicación con AWS
Contruyendo tu primera aplicación con AWS
 
Workshop: Building Containerized Swift Applications on Amazon ECS
Workshop: Building Containerized Swift Applications on Amazon ECSWorkshop: Building Containerized Swift Applications on Amazon ECS
Workshop: Building Containerized Swift Applications on Amazon ECS
 
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
Building CICD Pipelines for Serverless Applications - DevDay Austin 2017
 
ActiveCampaign API Developer Talks - Motivating Sales with Code
ActiveCampaign API Developer Talks - Motivating Sales with CodeActiveCampaign API Developer Talks - Motivating Sales with Code
ActiveCampaign API Developer Talks - Motivating Sales with Code
 

Similar to Building a CloudStack UI for the Enterprise

AdamVisserResume
AdamVisserResumeAdamVisserResume
AdamVisserResumeAdam Visser
 
Toronto node js_meetup
Toronto node js_meetupToronto node js_meetup
Toronto node js_meetupShubhra Kar
 
Cloud computing & Batch processing: potentiels & perspectives
Cloud computing & Batch processing:  potentiels & perspectives  Cloud computing & Batch processing:  potentiels & perspectives
Cloud computing & Batch processing: potentiels & perspectives Claude Riousset
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .NetRichard Banks
 
Cloud Has Become the New Normal: TCS
Cloud Has Become the New Normal: TCS Cloud Has Become the New Normal: TCS
Cloud Has Become the New Normal: TCS Amazon Web Services
 
Building your own calendly using amazon app sync
Building your own calendly using amazon app syncBuilding your own calendly using amazon app sync
Building your own calendly using amazon app syncDhaval Nagar
 
Node summit workshop
Node summit workshopNode summit workshop
Node summit workshopShubhra Kar
 
Making Networks More Agile, Open, and Application Centric - Cisco Insights
Making Networks More Agile, Open, and Application Centric - Cisco InsightsMaking Networks More Agile, Open, and Application Centric - Cisco Insights
Making Networks More Agile, Open, and Application Centric - Cisco InsightsCisco Service Provider
 
Hybrid Cloud DevOps with Apprenda and UrbanCode Deploy
Hybrid Cloud DevOps with Apprenda and UrbanCode DeployHybrid Cloud DevOps with Apprenda and UrbanCode Deploy
Hybrid Cloud DevOps with Apprenda and UrbanCode DeployClaudia Ring
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseAraf Karsh Hamid
 
AWS Partner Webcast - Data Center Migration to the AWS Cloud
AWS Partner Webcast - Data Center Migration to the AWS CloudAWS Partner Webcast - Data Center Migration to the AWS Cloud
AWS Partner Webcast - Data Center Migration to the AWS CloudAmazon Web Services
 
Data Center Migration to the AWS Cloud
Data Center Migration to the AWS CloudData Center Migration to the AWS Cloud
Data Center Migration to the AWS CloudTom Laszewski
 
Cloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- PivotalCloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- PivotalVMware Tanzu
 
Developing and Operating Microservice-based Applications on Modern Cloud Plat...
Developing and Operating Microservice-based Applications on Modern Cloud Plat...Developing and Operating Microservice-based Applications on Modern Cloud Plat...
Developing and Operating Microservice-based Applications on Modern Cloud Plat...Michael O'Sullivan
 
Introduction to cloud computing
Introduction to cloud computingIntroduction to cloud computing
Introduction to cloud computingsuraj bhandari
 
0430 toronto smac_meetup_worklight_intro_final
0430 toronto smac_meetup_worklight_intro_final0430 toronto smac_meetup_worklight_intro_final
0430 toronto smac_meetup_worklight_intro_finalRaul Chong
 
Spring into the Cloud - JDC2012 Cairo, Egypt
Spring into the Cloud - JDC2012 Cairo, EgyptSpring into the Cloud - JDC2012 Cairo, Egypt
Spring into the Cloud - JDC2012 Cairo, EgyptChris Richardson
 
Best of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentationBest of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentationLahav Savir
 
Resume new it_format
Resume new it_formatResume new it_format
Resume new it_formatRajiv Saini
 

Similar to Building a CloudStack UI for the Enterprise (20)

AdamVisserResume
AdamVisserResumeAdamVisserResume
AdamVisserResume
 
Toronto node js_meetup
Toronto node js_meetupToronto node js_meetup
Toronto node js_meetup
 
Cloud computing & Batch processing: potentiels & perspectives
Cloud computing & Batch processing:  potentiels & perspectives  Cloud computing & Batch processing:  potentiels & perspectives
Cloud computing & Batch processing: potentiels & perspectives
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .Net
 
Cloud Has Become the New Normal: TCS
Cloud Has Become the New Normal: TCS Cloud Has Become the New Normal: TCS
Cloud Has Become the New Normal: TCS
 
Building your own calendly using amazon app sync
Building your own calendly using amazon app syncBuilding your own calendly using amazon app sync
Building your own calendly using amazon app sync
 
Node summit workshop
Node summit workshopNode summit workshop
Node summit workshop
 
Making Networks More Agile, Open, and Application Centric - Cisco Insights
Making Networks More Agile, Open, and Application Centric - Cisco InsightsMaking Networks More Agile, Open, and Application Centric - Cisco Insights
Making Networks More Agile, Open, and Application Centric - Cisco Insights
 
Hybrid Cloud DevOps with Apprenda and UrbanCode Deploy
Hybrid Cloud DevOps with Apprenda and UrbanCode DeployHybrid Cloud DevOps with Apprenda and UrbanCode Deploy
Hybrid Cloud DevOps with Apprenda and UrbanCode Deploy
 
Cloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-PremiseCloud Architecture - Multi Cloud, Edge, On-Premise
Cloud Architecture - Multi Cloud, Edge, On-Premise
 
AWS Partner Webcast - Data Center Migration to the AWS Cloud
AWS Partner Webcast - Data Center Migration to the AWS CloudAWS Partner Webcast - Data Center Migration to the AWS Cloud
AWS Partner Webcast - Data Center Migration to the AWS Cloud
 
Data Center Migration to the AWS Cloud
Data Center Migration to the AWS CloudData Center Migration to the AWS Cloud
Data Center Migration to the AWS Cloud
 
Cloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- PivotalCloud-Native Workshop New York- Pivotal
Cloud-Native Workshop New York- Pivotal
 
Developing and Operating Microservice-based Applications on Modern Cloud Plat...
Developing and Operating Microservice-based Applications on Modern Cloud Plat...Developing and Operating Microservice-based Applications on Modern Cloud Plat...
Developing and Operating Microservice-based Applications on Modern Cloud Plat...
 
Introduction to cloud computing
Introduction to cloud computingIntroduction to cloud computing
Introduction to cloud computing
 
Trevor de Koekkoek resume
Trevor de Koekkoek resumeTrevor de Koekkoek resume
Trevor de Koekkoek resume
 
0430 toronto smac_meetup_worklight_intro_final
0430 toronto smac_meetup_worklight_intro_final0430 toronto smac_meetup_worklight_intro_final
0430 toronto smac_meetup_worklight_intro_final
 
Spring into the Cloud - JDC2012 Cairo, Egypt
Spring into the Cloud - JDC2012 Cairo, EgyptSpring into the Cloud - JDC2012 Cairo, Egypt
Spring into the Cloud - JDC2012 Cairo, Egypt
 
Best of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentationBest of re:Invent 2016 meetup presentation
Best of re:Invent 2016 meetup presentation
 
Resume new it_format
Resume new it_formatResume new it_format
Resume new it_format
 

Recently uploaded

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 

Recently uploaded (20)

Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 

Building a CloudStack UI for the Enterprise

  • 1. © 2014 Sungard AS. All rights reserved. Building a CloudStack UI for the Enterprise David Grizzanti, Bill Jones Sungard Availability Services CCCNA’14 - APRIL 10TH, 2014 - DENVER, CO
  • 2. Overview !   Who are we? –  David Grizzanti (Software Engineer @ Sungard AS) –  Bill Jones (Software Engineer @ Sungard AS) !   Cloud Engineering @ Sungard Availability Services –  Current Cloud Offering & why CloudStack is the future !   What’s unique about our UI –  Features –  Technologies we’re using !   Overall Architecture !   Integrating with CloudStack !   Demo !   Continuous Integration 2 CCCNA’14 - April 10th, 2014 - Denver, CO
  • 3. About Sungard Availability Services Sungard Availability Services provides IT Operations support to IT departments that need to ensure business viability by keeping mission critical information and applications up and running. Sungard AS provides tailored enterprise cloud services, as well as innovative solutions including: !   Disaster Recovery !   Managed Hosting !   Software !   Consulting As of March 31st, 2014 Sungard AS was split from Sungard and became a separate, independent company.
  • 4. Cloud Engineering at Sungard AS Current Cloud Platform !   Enterprise Cloud Services – we operate a shared, multi-tenant infrastructure !   We provide a fully managed “Virtual Data Center” environment for our customers !   Our customers get cloud economics and agility without needing to re-architect their applications !   We currently use traditional network isolation and security techniques !   We have developed our own orchestration platform for our fully automated service provisioning Issues with this approach !   Runs on complicated hardware !   Difficult to perform upgrades, general lifecycle issues !   Need for a self-service option 4CCCNA’14 - April 10th, 2014 - Denver, CO
  • 5. Cloud Engineering at Sungard AS Future/Choosing CloudStack !   We are growing, so scaling is a concern !   Customers want more flexibility and provide more customization !   Improve reliability of provisioning automation !   Provide more features to customers in an agile fashion !   Need for a “Public” cloud as well as enterprise offerings What UI do we offer our customers? 5CCCNA’14 - April 10th, 2014 - Denver, CO
  • 6. UI: Necessary Features Self Service !   Ability to enter credit card and spin up a VM within minutes Utility Billing !   Customer shouldn’t be blocked from adding more capacity Cost Control !   Customers can see projected spend and manage budgets across their entire company Make it straightforward and easy to use! 6CCCNA’14 - April 10th, 2014 - Denver, CO
  • 7. UI: What sets us apart Real Time Notifications to the UI !   Integrates with Event Bus/RabbitMQ Elevated Permissions on top of API !   Allow more than just ROOT Admin to administer accounts Roles !   Allow for multiple user Roles above what CloudStack provides Customer centric UI !   Workplace concept to integrate CloudStack resources and billing 7CCCNA’14 - April 10th, 2014 - Denver, CO
  • 8. Overall Architecture Unified Cloud Portal Web Single Sign On Bunny Ears Billing Integration API Hermes Client/Browser CloudPlatform SockJS
  • 9. Let’s talk about the tech! !   Ruby (Bunny Ears) –  Worker that’s reading from RabbitMQ !   Ruby on Rails –  Main web app (running under nginx + unicorn) ! Node.js (Hermes) –  Notifies client/browser of changes CloudStack resource state ! Backbone.js/Marionette.js + SockJS(WebSockets) –  Javascript frameworks used to drive UI changes in the browser –  Websockets keep connection open to Node.js for updating client’s browser ! Redis –  Storing information related to each async job –  User invites !   Bootstrap –  Responsive front-end framework 9CCCNA’14 - April 10th, 2014 - Denver, CO
  • 10. Working with the CloudStack API Benefits !   Fully featured API ! Async Jobs Job Management !   Storing request parameters + Job ID in Redis for retrieval and correlation Areas for improvement !   Better permissions model (this is already in progress) !   A Truly RESTful interface !   Consistency around responses for all requests (async and non-async) 10CCCNA’14 - April 10th, 2014 - Denver, CO Web
  • 12. Working with the Event Bus Benefits !   Real time notifications (async jobs results) !   No polling required Node.js + SockJS (Websockets) !   Worker process reads from RabbitMQ !   Queries CloudStack/Redis !   Sends events to Hermes -> Client’s browser Areas for improvement !   Multiple events types can sometimes be confusing !   Data spread across more than 1 event !   Incorrect information included in events 12CCCNA’14 - April 10th, 2014 - Denver, CO Hermes Bunny Ears Client/Browser
  • 13. Overall Architecture Unified Cloud Portal Web Single Sign On Bunny Ears Billing Integration API Hermes Client/Browser CloudPlatform SockJS
  • 14. Let’s see a Demo!
  • 18. Testing is Hard Try as hard as possible to TDD Tried to use VCR in the beginning… The rise and fall of Smokestack !   Built a replica of CloudStack for integration testing (well, almost) !   Became too much work to maintain !   Went with “simulator” (quicker on dev cycle) Test Coverage !   Code Climate !   Quality & security analysis for Ruby on Rails and Javascript 18CCCNA’14 - April 10th, 2014 - Denver, CO
  • 19. Continuous Integration with CloudStack Typical Flows !   Run master after each push !   Job in jenkins to build new projects for each new branch we push, auto-build on intial push or update !   Both master and “feature” branches run full unit and integration tests Run full test suite after every code push !   Challenge of trying to run “integration” tests on every push !   Using CloudStack Simulator for feature tests –  Pool of CloudStack instances –  Vagrant/VirtualBox + Rails app to handle resetting each instance after use 19CCCNA’14 - April 10th, 2014 - Denver, CO
  • 21. Next Steps Move to Docker? Docker CloudStack Simulator ! github.com/dgrizzanti/docker-cloudstack-simulator 21CCCNA’14 - April 10th, 2014 - Denver, CO
  • 22. Tools for sharing Built a fully featured ruby client for CloudStack (StackerBee) !   Exception handling !   Idiomatic Ruby formatting for names (snake_case vs mixedCase) !   Handling of map parameters !   Configurable API version !   CloudStack REPL !   Faraday – HTTP lib (configurable middleware) !   Exposes console access URL !   Tests! github.com/promptworks/stacker_bee Vagrant CloudStack Simulator ! github.com/promptworks/vagrant-cloudstack-simulator 22CCCNA’14 - April 10th, 2014 - Denver, CO
  • 23. Logging Tracing requests while testing !   Need a reliable way to trace a request all phases of the application !   UI -> CloudStack !   CloudStack -> RabbitMQ -> BunnyEars -> Hermes -> Client 23CCCNA’14 - April 10th, 2014 - Denver, CO