Why abstracting your IT infrastructure is worth

Introduction

Are you still running snowflake servers in your private datacenter?

You’re not alone of course. And so am I.

But what a significant part of your servers are still like that? Even if you virtualized most of them? Or, what if you’re still building servers in this way in the cloud too?

Well, then there’re lots of opportunities that can give benefit both to resilience and velocity, moving away from the configuration drift risks and limits.

IT Infrastructure Abstraction

Abstraction is a key concept in software engineering. Brought into the IT infrastructure domain, it leads to different patterns.

Infrastructure As Code Abstraction

This pattern aims to transform the way you build, evolve and destroy your infrastructure by using software configurations and processes, thus leveraging software engineering capabilities; keys are the capabilities to describe the desired configuration via software, build immutable infrastructure in minutes, also leveraging the elasticity that cloud and modern technologies offer.

There are several advantages here:

  • resilience, as centralized configuration knowledge makes it possible to observe your infrastructure and take quick actions in case of production issues(for instance, reverting a change, apply a fix to build new nodes on demand);
  • velocity, as infrastructure can be built with automation, leveraging CI/CD capabilities.
  • security: security configuration, including secrets management, and compliance testing can be described as code, leveraging standardization, ease of correction in case of gaps, and faster keeping up with the evolving challenges on this domain.

Immutability of Infrastructure, which means the same configurations move for all steps from DEV to Production environments and that the “upgrade pattern” is replaced by the “destroy and rebuild” one, represents a great enhancement, but it also comes with trade-offs (for instance dealing with applications’ state).

The increasing maturity of tools (Chef, Puppet, Terraform just to mention a few), public cloud capabilities and on-prem technologies (for instance VMware Cloud) are bringing lots of opportunities to modernize how your infrastructure and applications can be managed.

Workloads Orchestration

Docker and Kubernetes brought a huge change in how application wokloads can be managed, in hybrid and multi-cloud landscapes.

This approach brings a further abstraction of the IT infrastructure, as applications are embedded in containers and communications rules among services can be managed thourgh service meshing at higher ISO/OSI levels. Here, servers, storage and networks (on-prem and the equivalente services in the cloud) still play a fundamental role and need to offer “automation capabilities” in order to be effectively consumed.

In this landscape, it is worth to mention HashiCorp Nomad and Chef Habitat approaches.

Serverless Abstraction

Serverless pattern makes servers invisible, meaning you dont’t even need to consider server configuration at all. One way of achieving serverless computing is through the FaaS pattern.

Service Model Abstraction

This area deals with the service model rather than key technologies and processes changes. I already discussed this topic in a previous post.

All the above abstraction patterns should stimulate a strategy on how the IT department sees itself in terms of how much internal vs external supported management should be put in place, also considering the build vs buy choices (e.g. adopting Saas services), especially in a hybrid / multi-cloud scenario.

Conclusions

IT Infrastructure teams should not work in isolation in the modernization journey:

  • DevOps practices, architectural and application modernization strategies inputs should converge;
  • Service model transformation has to be taken into account too;
  • Investments in people are essential, both in skills (engineering is the top priority for me) and in organizational models evolution.

Challenges are enormous, but in my opinion, that’s what makes a CTO role interesting especially nowadays. A pragmatic approach, with cost sustainability and a service excellence mindset, the willingness to face organizational changes and investment in people, are all key aspects to succeed.

That’s the path I started myself a few years ago, and it’s still also a great professional and personal growth experience, which constitutes a further reward for all the efforts I’m putting in place.

(Photo on top by Markus Spiske on Unsplash)