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