Ensemble principles

Ahmed Kamal kim0 at ubuntu.com
Wed May 25 14:56:11 UTC 2011

Hi everyone,

I would like to start adding more information to the Ensemble website. 
Starting with the front page, I think it should answer the questions 
"What is ensemble, and why should I care". As such, I'm trying to define 
and portray the main principles (selling points if you will) that define 
Ensemble. Think of it as a slightly longer version of an elevator pitch. 
I came up with the following list, of course feedback is most welcome! 
While the current wording is definitely crude, at this stage I'm mostly 
interested in ideas that you think should be stressed upon.


- Built for the cloud: Ensemble assumes cloud deployment is the norm, 
rapid and repeatable configuration is a necessity. <Cloud is not the 
only deployment target though>. Ensemble completely embraces devOps and 
Infrastructure as code principles <needs some nice wording>
- Holistic Service Management: Core to the Ensemble vision, is managing 
"services" without worrying about the underlying machines. Getting a 
multi-machine deployment (such as a complex LAMP stack) requires lots of 
configuration information to be discovered and shared across the 
different machines. It also requires the actions to be orchestrated 
across nodes that are all collaborating for the creation of the service. 
Ensemble provides the framework to make that work seamlessly and 
transparently. Just like APT relieved us from worrying about package 
dependencies, and installation order, Ensemble reliefs from installing 
the correct packages on certain nodes, copying configuration information 
back and forth, and tying everything together.
- Scaling is built in: Ensemble's elegant approach of modeling a service 
deployment into formulas ensure that scaling up a deployed service is in 
no way different than the initial deployment. With a single command you 
can add more resources to the pool of machines being orchestrated, the 
machines added grab needed configuration information from the shared set 
of configurations, they push any new configuration information, hooks 
are triggered appropriately to configure the newly added machines and to 
configure the initial pool of machines to make use of new resources. 
With well written formulas, scaling out a service deployment, is 
magically easy
- Encourages Sharing and Code Reuse: Ensemble provides a rich 
orchestration framework that you can make use of by writing "formulas". 
Ensemble formulas are a way to encapsulate systems knowledge and 
expertise. Deploying services using Ensemble formulas, ensures a 
standardized and repeatable deployment. Naturally, sharing formulas 
within the community helps everyone by making the formulas work better. 
The Ensemble project makes it very easy to write and share formulas. 
Once shared, a formula is reviewed and later integrated into an official 
Ensemble formula repo. This benefits everyone by making sure formulas 
are well maintained and of high quality
- Works the way you do: Ensemble does not force you into modeling your 
infrastructure in a specific way. There is no domain specific language 
(DSL) that you must be using, nor are you forced to use a specific 
programming language. With Ensemble you write the code representing your 
infrastructure in your preferred programming or scripting language. 
Ensemble only cares about finding executables that it can run in 
response to certain events. Ensemble mainly communicates with your code 
through command line tools or environment variables.

Bright future: Ensemble is well maintained young project, that is 
rapidly growing. The roadmap for Ensemble includes lots of interesting 
features, be sure to connect to the Ensemble community at ... <mention 
access points here>

More information about the Ensemble mailing list