The OpenStack Horizon project provides a web-based User Interface to OpenStack services. It is constructed in two parts: (1) a core set of libraries for implementing a Dashboard; (2) the dashboard implementation that uses the core set of libraries.
Horizon uses python django — server side technology
Django is a wonderful framework, but a little dated. Pre-dates the rise in client-side and single page applications.
Javascript is used for enhancing the user experience
In the time since Horizon was first architected, there have been major advances in the design, and best practices for web applications. In particular, the use of more sophisticated and robust client-side javascript frameworks like BackboneJS, AngularJS, MeteorJS, have come to the fore.
These applications provide a much more responsive user experience, much cleaner separation between the client and server, enable configuration driven interfaces, and facilitate more modular testing.
This in turn, results in shorter development cycles, more testable software, and above all, a better user experience.
In this presentation, we share some of our recent work in re-architecting parts of Horizon to take advantage of these new technologies. We discuss some of the technologies we use, our application architecture, and some of the pitfalls to avoid.
1 of 28
More Related Content
Client-side Rendering with AngularJS
1. Client-side Rendering with AngularJS
OpenStack Summit, Paris
David Lapsley
@devlaps, dlapsley@cisco.com
November 3, 2014
24. Advantages
● Clean split between server and client side
● Significantly cleaner, terser, easier to
understand client-side code
● Significant easier to improve UX
● Client- and server-side code can be
developed and tested independently
● Faster feature velocity
26. Thank You
David Lapsley
@devlaps, david.lapsley@metacloud.com
27. If this sounds interesting…
http://jobs.metacloud.com
We are hiring!
Editor's Notes
Server provides data over RESTful API – json data
Client responsible for rendering and presenting
Much more interactive, client can now take immediate action on data it knows about instead of round tripping to server
Faster feature velocity, server and client can be developed in parallel
Simpler code
Instrument each node with livestastd
Controllers and Hypervisors
Pull information about processes, network, disk, cpu
Updates every 5 seconds
Using the same client-side rendering pattern as before
Aggregating real-time data
Greatly increases visibility into platform..
Our customers also wanted to see more historical data.
We instrumented all of our nodes and push data into Graphite
Very high performance and flexiblie time series tool
Evolution of RRD Tool
Graphite provides data over RESTful API, so we just pull that data and use it to populate these charts..
Easy access for the user (simply click on controller or hypervisor row and chart will drop down)
Data from 1 hour range to 1 year range..
Add client-side…
Controls view logic
Collaborate, share our experience, find out if there are better ways of doing things