news image

Immutable environments, that are easier to re-deploy than repair

17 Apr 2018

Over the past 5-10 years, some dramatic changes in the way software apps are created and managed have led to the immeasurable shift in the business environment, goals, and requirements.

Over the past 5-10 years, some dramatic changes in the way software apps are created and managed have led to the immeasurable shift in the business environment, goals, and requirements.

 

The need of constant innovation, shorter development cycle, and efficiency brought the rise of many technology solutions and practices (such as immutable infrastructure and DevOps) to make app delivery quicker, more reliable, and error-free.

 

What is immutable infrastructure?

 

Immutable infrastructure contains immutable components that are designed to be replaced for each deployment, instead of being changed.

 

In other words, in the immutable development environment, once you create an instance, you never change it. Instead, when you want to update, you just create a new version of the instance and destroy the old one (or new servers are created, old ones are thrown down).

 

For example, think of your car: over the time, its parts wear out and break. You can buy a new engine (updating existing environment) but the age will still show when the parts begin to rot. Using immutable infrastructure is like replacing the car with a brand new identical car every time you make a repair or buy a new part, but without the cost and stress of buying a real car!

 

What are the benefits of the immutable infrastructure?

 

In the development aspect, immutable infrastructure involves version control, automated testing, and continuous integration. They lead to:

 

  • Simplicity and integrity of deployment

 

Immutable infrastructure works with fully automated deployment methods and pipelines. Setting upstaging systems and managing instances is easy since there is no need to track changes. This leads to simplicity and integrity.

 

  • Predictability and reliability

 

Immutable infrastructure behaves in much more repeatable and predictable ways since it works with the exact same product that is tested in the production system. Moreover, the deployment doesn’t depend on server status. This results in fewer non-planned consequences of code changes and fewer errors.

 

  • Proven quick recovery

 

Typically, immutable systems are backed by regularly used automation processes. It practically means there is disaster recovery built-in. As the immutable infrastructure is disposable, you can recreate environments quickly and very easily.

 

To maintain an immutable infrastructure some key things are required. We need cloud infrastructure with an API as well as automation frameworks and provisioning tools (such as Ansible, Chef, Puppet) that let us treat infrastructure as code.

 

Simply put, Ansible, Chef, and Puppet are the most popular automation tools with a rich ecosystem of modules for provisioning cloud infrastructure.

 

How Upnetix utilizes immutable environment benefits to build better apps?

 

Using immutable infrastructure as an approach to deployment and configuration management, Upnetix can overcome today's biggest challenges of building an infrastructure - scalability, predictability, and automated recovery.

 

Moreover, it helps us build high-quality, reliable solutions and apps that can be changed easily at any time.

Here is how we achieve this:

 

  • Speed and deployment simplicity through continuous integration 

 

As in the immutable infrastructure, almost everything is disposable, it can be deployed again in minutes. Even a complete integration cycle of re-deployment takes us just a few minutes. No time-consuming and tedious process, no setup of multiple servers, and no manual interventions to go to a production environment. In addition, with the use of provisioning tools such as Ansible and Puppet, introducing new environment or a new node to a cluster is a push of a button process.

 

  • Fewer deployment failures and close to zero downtimes

 

Ansible makes it easy for us to scale automation and to handle complex deployments. This helps us to make much more reliable deployments as well as to ensure that every state and version are always known. This way implementing rolling releases is easy with close to zero downtimes.

 

  • Ability to recover quickly and deeper understanding of applications

 

Environments and apps are constantly changing nowadays. When a recovery situation comes, we want to be sure that we will have no trouble recreating the systems, regardless of the changes.

 

By constantly redeploy of our environment, the immutable infrastructure helps us to be really good at doing it. In addition, by attempting to automate deployments, we are working through different assumptions and thus we gain a deep insight into the components of the app and how they interact.

 

Through using immutability as a core concept of our infrastructure and combining the full advantages of it, we are able to focus on what matters to the success of your app and to deliver high-quality, world-class solutions.