Radical Change in Thinking for Infrastructure Engineers
In this article, Ramesh Subramanian explains why infrastructure engineers should start thinking like software developers.
Several years ago I started my career as a C++ programmer but to be relevant as a software engineer today would require many more software engineering skills. The same logic holds for Infrastructure engineers.
About 94% of enterprises (and 50% of Governments) use some form of cloud (private/public) today. And as per an estimate from Forbes, 83% of workloads will be in the cloud by the end of this year. These stats imply that infrastructure teams should be ready to:
Meet expectations of faster release cycles, with several releases per day becoming the norm
Provide application access at scale (millions of concurrent sessions, potentially across the globe) with 24×7 availability
However, only 30% of all infrastructure teams are using DevOp. This is even lower at 12% for Financial Services firms. Since there is never a ‘one-size fits all’ approach to Infrastructure and Operations, the picture below illustrates a way to think about this issue:
No alt text provided for this image
Broadly, we can group all applications in an enterprise to be either business enabling (e.g. security, email, communications, ERP systems) or business critical (transaction processing, online channels, websites).
Infrastructure teams that support business enabling applications and use scripting (cli, perl) solely should consider adopting a more programmatic approach (e.g. Python). This can help in two ways: a) minimize the proliferation of one-off/ad-hoc scripts and b) make the team less reactive to change requests and incidents as a programmatic approach will build in greater flexibility.
Infrastructure teams that support business critical applications should consider a more transformative approach through DevOps and Infrastructure as Code methods to closely align with the needs of their Development counterparts. To do so will require, at a minimum, a good understanding of some basic principles of good software development:
Source code versioning: Using a code repository like GitHub where everyone can contribute and merge changes into a single version.
Designing for testability: Building in tests for recovery and resiliency at the very beginning instead of being an after thought.
Key points include:
- Understanding DevOps
- Pair programming
- Modular design principles
Read the full article, Why Infrastructure engineers should start thinking like software developers, on LinkedIn.