Xi Group Ltd. is involved in operational and DevOps activities for several years now and during that period several lessons became clear:
- Not all architectures are cloud-friendly;
- You need to know your data flows to benefit from the cloud services;
- Many companies use theCloud only as easy provisioning technology;
- Elasticity is hard to implement!
Lets leave the former two for another blog posts and concentrate on the the latter.
Many companies use theCloud only as easy provisioning technology
… and it is natural when you come from a static infrastructure world. However, this is not what theCloud is all about. Yes, you can use it for that, in same way you can use a steam roller to iron your shirts. Yes, there are other arguments why you may want to put something in theCloud, but just copying your infrastructure in theCloud and stating that this makes it resilient of fault-tolerant is plain stupid! AWS had outages, by extension Heroku had outages, Joyent had outages … you need to design for reliability to achieve reliability. “Easy provisioning” is good, but if it’s your main reason, stick with the physical infrastructure. It is probably cheaper in the long run. However, if you want to fully utilize this technology, keep reading!
Elasticity is hard to implement!
Many workloads are elastic in nature, from website traffic to batch processing. The elastic nature of the workload may look like a sine wave or like a spike, the logic is the same. You’d generally want to adjust the amount of resources you allocate so that it’s enough to cover the workload, but also minimize the price you pay. And for any practical problem it is damn hard to do so! Why?! We identified the following reasons:
- Software environment is chaotic;
- Software deployment is non-trivial task;
- Tightly-coupled architectures;
- Data store functionality misaligned with the nature of the data;
- Data stores inherently rigid;
- Lack of operational information;
- Monitoring wrong resources;
- Monitoring returns unusable information;
- There is no ‘control plane’ in the system;
- ‘Control plane’ depends on infrastructure stability;
- … and many, many others …
Those helped identify the following “pillars” as the foundation for large-scale elastic deployments:
- Build & Deployment Automation
- Full-stack Application Monitoring
- Data-driven Control Plane
Aggressive DevOps is the process of implementing the pillars in a business environment!
It is our company mission to develop and provide the tooling, the services and the know-how for others to implement large-elastic deployments.
Over a series of blog posts we will go into further details about each of Aggressive DevOps pillars. Stay tuned!