As of fairly recently, Amazon.com kicked off a new software deployment on average every 11.6 seconds.
In one hour over 1000 new deployments were sent into the production environment.
They have load balancers on their side of the website just to deal with the volume of code changes coming from their developers.
And I say “fairly recently.” That stat is from 2011.
What has changed?
In a world in which software and the cloud are “eating the world”, your application is now your key business differentiator.
Your app is supported by the cloud, which lets businesses create and regulate communities of users, as well as coordinate information about their services, without having to deliver the services themselves.
What are the benefits of this?
Take Uber. They are the number one taxi company in the world because they have the best app. And your application is what makes your company the best in your market.
The rise of companies like Uber, Alibaba and Airbnb directly reflects fundamental changes in application delivery.
First and foremost: applications are no longer monolithic lumps of code.
They are divided up into different, smaller services. Each service performs just one task.
Different developers can work on different individual elements at the same time, releasing micro-updates without the necessity of a big code release. Because they’re hosted in the cloud, these elements can be put into production at any time and place.
This means that you can continuously update your application – continuously improve it. The application, remember, that is your business’s key differentiator.
But a downside of this is that developers are increasingly spending more time managing software deployments than actually writing the all-important software.
A container is a system for packaging up these services that lets you easily switch between environments. This reduces the friction between development, QA and production, meaning you can develop an app faster and it can run anywhere.
These developments are changing application deployment radically.
Applications are now lots of little applications that hang together cohesively and can be updated anytime, anywhere. This enables a staggering rate of change.
By 2020 large code releases every few months will be a thing of the past, replaced with near consistent development and release cycles.
So what should you do?
Infrastructure-as-a-Service enables one way of creating an environment conducive to near-constant deployment.
But it still requires a lot of skills to deploy and run your applications in these environments. To design, architect, transition, control, maintain and optimise workloads. Your team will still have to manage your application’s security, performance and availability, across an incredibly complex IT infrastructure. That is being updated and altered faster than ever before.
As one of our customers told us: “We’re great at deploying things, it’s just after that point things get difficult.”
A fast-growing solution to this problem is Platform-as-a-Service (Paas) – i.e. providing environments in which clients can deploy directly from code onto a platform that provides appropriate tooling and will scale underlying infrastructures as needed.
But not so fast. There could be proprietary issues here – with your app dependent on a particular platform.
So do you just go for microservices run from containers? Maybe implement more traditional IaaS? Deploy directly using PaaS but risk perhaps deploying code that is beholden to a given platform?
Either way, it is very clear that there is no one cloud solution to rule them all. Businesses will design and combine different IT infrastructures, not just one, in the delivery of solutions.
And the world of cloud was supposed to make this all easy wasn’t it?
Complex cloud solutions
So now you have to throw yourself into perfecting your application, whilst ensuring round-the-clock performance of your delightfully complex hybrid cloud infrastructure.
These goals are not easily reconcilable. Doing both well is tricky.
So leave the essential – but non-differentiating, non-value add – aspects of your IT in the hands of others. Hand the more tedious management of your cloud and application over to experts elsewhere.
Instead, concentrate your in-house resources and talent on working on the software that will see you rise above others in the market.
Find a partner who has the right cultural fit. Who is highly collaborative and innovative. Who can manage the crucial but non-differentiating aspects of your cloud setup.
Someone who can monitor your current solutions and design something that’s fit for purpose based on your business needs.
Someone who can help you do amazing things.
Talk to Claranet to find out how we can ease the burden on your IT department and help you do amazing things with your application