In this article:
- Defining Infrastructure as Product (IaP): what it is and the functions it must perform to fit the definition
- Using IaP to solve issues of time-to-delivery and time-to-value
- Benefits and challenges of service mesh
- Most common scenarios of IaP
As technology leaders, we are always looking for ways to build applications faster. Speed to market is imperative in this particular category, and many times it is the differentiating factor between the winners and losers. But trying to accelerate application building and speeding up your development while the world in the cloud becomes increasingly more complex proves challenging. How do you prioritize speed while maintaining quality with your cloud development? Infrastructure as Product offers solutions to Engineering leaders who need to prioritize speed in the cloud.
IaP defined
Infrastructure as Product can be defined as infrastructure configured as part of a platform required to support specific applications. IaP takes common scenarios and builds out a fully automated infrastructure so development teams can focus on their application. The specific attributes of an IaP include:
- Runs out of the box – a single command can deploy an entire scenario infrastructure using default values with no modifications.
- Easily customizable – naming conventions, asset tags, resource sizing, etc are all easily customizable before running the code.
- Adheres to cloud provider best practices – AWS well architected Framework or Azure Well Architected framework, for example.
- Multiple environments supported automatically – IaP solutions can be configured and deployed in multiple environments using the same base code with different values for variables.
- Embeds the knowledge of engineers who have “been there done that” and built this application type multiple times before. Simply put, it provides the foundation for a rock-solid, secure application infrastructure.
The problem IaP Solves
IaP mainly solves issues of time-to-delivery and time-to-value. Embedded within each of those areas are other solutions including adherence to security and the architecture and patterns/best practices for that cloud provider.
Why does infrastructure take so long? As Yevgeniy Brikman points out in “Terraform Up and Running”, below are the estimated timelines for certain application profiles to get ready for production:
- Fully managed app running MySQL in AWS Relational Database Service – 2 weeks
- Stateless web app using auto scaling groups and RDS – 2-4 weeks
- Custom stateful distributed app – 2-4 months
- Entire architecture buildout – app, data stores, load balancers, networking, logging, security (service mesh) – 6-36 months.
When we drill down into what exactly the reasons are for those long times, it comes down to the following:
- Infrastructure isn’t easy. Having skilled resources in all aspects of infrastructure is almost impossible and requires a lot of staff. Availability, Scalability, Performance, logging, networking, disaster recovery and security are the main aspects that need to be addressed.
- Required expertise in Cloud and DevOps is hard to find, and comes at a premium if you do.
- Security and Disaster Recovery are often afterthoughts that require significant time, and in many cases refactoring of application code.
A look at the Service Mesh
As microservices continue to be a favored implementation approach, a critical piece to cloud applications these days is referred to as a service mesh. The service mesh refers to all of those components that are required for your app to run well in a production environment and are stitched together in a secure and performant manner. Specific mesh components in the world of microservices include logging, visualization, service discovery, tracing and persistence. All of these need to be configured and managed in a way that gives your team the confidence that these will be in place as the application demands it. But the mesh can also create a mess of questions. Choosing components in each of these categories is hard – do you go with open source solutions or lock in with a particular cloud provider? Do you consider off the shelf commercial solutions that require a license? And how do you get all of these things working together seamlessly when you are dealing with multiple versions and compatibility issues between them?
It’s one thing to get a proof of concept application demonstrable for an internal audience. It’s another to have a scalable, production-ready application that can meet the needs in many areas––availability, security, performance. The keywords here are “production-ready”. IaP provides a quick start by having those aspects of the application (infrastructure and mesh) already handled for you.
IaP Common Scenarios
Many times in my career I have built similar applications, as have my colleagues in other companies. There’s really only a handful of application profiles that most dev teams are building. Some of the most popular ones include:
- Highly scalable web app. This could be a serverless first approach or one based on containers: a back end application driven by API asynchronous end points providing for that robust web or mobile application.
- Data Ingestion system. Taking streaming data, saving it, and transforming it into something insightful is a very common application scenario.
- Load test server farm. For those public facing applications that cannot afford an outage, building the load test infrastructure to find the failure point (and fix it) is a very popular scenario.
IaP Delivery Mechanism
Any time we’re talking about infrastructure, infrastructure-as-code (IaC) is the center of the conversation. IaC gives us the ability to automate everything and make it repeatable. Cloud infrastructure objects are not created through graphical web-based consoles, but are instead provisioned just like application code and in many ways are even more critical.
While most cloud providers have their own IaC capability, the cloud agnostic one is Terraform from HashiCorp. Terraform is the IaC tool of choice in delivering IaP solutions.
Summary
Before you begin developing that next game-changing application, check out the portfolio of IaP solutions on the market in order to help speed up your development. Regardless of whether you have a AAA caliber DevOps team or are just getting going, IaP can be the catalyst in getting your product to market quicker and beating your competition.