Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building a CloudStack UI for the Enterprise

Building a CloudStack UI for the Enterprise

David Grizzanti

April 10, 2014
Tweet

More Decks by David Grizzanti

Other Decks in Technology

Transcript

  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. Introduction !   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 !   Integrating with the 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 State !   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 !   Provisions network end-to-end !   Runs on complicated hardware !   Difficult to perform upgrades, generally lifecycle 4 CCCNA’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? 5 CCCNA’14 - April 10th, 2014 - Denver, CO
  6. UI: Necessary Features Self Service !   Ability to enter

    credit card and spin up a VM within minutes Pay-as-you-go !   Customer shouldn’t be blocked from adding more capacity Billing Integration !   Customers can see projected spend and manage budgets across their entire company Make it straightforward and easy to use! 6 CCCNA’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 7 CCCNA’14 - April 10th, 2014 - Denver, CO
  8. Overall Architecture SunGard Cloud Portal Web Single Sign On Bunny

    Ears Billing Integration API Hermes Client/Browser CloudPlatform SockJS
  9. Let’s talk about the tech! !   Ruby –  Worker

    that’s reading from RabbitMQ !   Ruby on Rails –  Main web app (running under nginx) ! Node.js –  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 9 CCCNA’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) 10 CCCNA’14 - April 10th, 2014 - Denver, CO Web
  11. 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 11 CCCNA’14 - April 10th, 2014 - Denver, CO Hermes Bunny Ears Client/Browser
  12. Testing is Hard Try as hard as possible to TDD

    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” (less responsive, but quicker on dev cycle) Logging & Tracing !   Need a reliable way to trace a request through UI -> CloudStack -> BunnyEars -> Hermes -> Client 13 CCCNA’14 - April 10th, 2014 - Denver, CO
  13. Continuous Integration with CloudStack 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 + Rails app to handle resetting each instance after use Move to Docker? 14 CCCNA’14 - April 10th, 2014 - Denver, CO
  14. Tools for sharing Built a fully featured ruby client for

    CloudStack (StackerBee) ! github.com/promptworks/stacker_bee Vagrant CloudStack Simulator ! github.com/promptworks/vagrant-cloudstack-simulator Docker CloudStack Simulator ! github.com/dgrizzanti/docker-cloudstack-simulator 15 CCCNA’14 - April 10th, 2014 - Denver, CO