As we talk to enterprise decision makers wanting to modernize their IT to compete in today’s market, one key message we push hard is about keeping the flexibility to innovate. Once you lock yourself in architecturally, you cannot change rapidly. The key to continuous innovation lies in the flexibility you retain to change to meet the needs of business at a speed they want. This was driven by the threat of disruption not just by a competitor in the same vertical but from anyone who is technologically savvy to out-innovate any organization.
The need to bring composability across the entire stack
The need to make the application composable is already in vogue and the resulting loosely coupled domain specific architecture is well known in the industry as Microservices. The industry focus is largely on the application side with a very limited focus on the underlying application infrastructure. I would say that Amazon Web Services (AWS) has taken that approach for the most part but it didn’t push the idea of composability to the industry conscience. It is important for us to consider the idea of composability and layering starting with infrastructure all the way to application architectures.
The idea of composable infrastructure and platforms has many advantages:
- It helps organizations retain the flexibility to innovate rapidly. Even though Microservices architecture is supposed to provide the necessary flexibility to change to meet the demands of business, the organization’s investment in a monolithic platform might limit this flexibility. This makes it desirable to have a more composable platform underneath
- Composability gives way to programmability. If you want to treat infrastructure as code or platform as code or, even, cloud as code (in a multi-cloud scenario), it is important to make the underlying platform and infrastructure programmable. Without programmable layers underneath, the cost of disposable infrastructure becomes high. Without a disposable (or at least malleable) platform on top of the infrastructure, the architectural lock-in is tighter and flexibility to change is more difficult. Having the ability to programmatically manage both the layers of the application platform and the underlying infrastructure is critical
- Technical depth underneath the infrastructure or platforms is the biggest inhibitor of innovation. By retaining the composability, it is easy to get rid of technical debt as technology evolves
The idea of a layered stack is essential to maintain the flexibility to minimize architectural lock-ins at the application level.
So the idea of PaaS and Serverless is dead right?
Not really. The higher level abstraction provided by packaged platforms has its own efficiencies and that is one of the reasons they are popular. The key to using packaged platforms lies in how the platform is packaged. Is it a monolith with a rest interface or is it packaged with standardized components that can be used either with the Platform API or with the APIs provided by the individual components (say Kubernetes for container orchestration). The role of packaged platforms comes in the form of added operational efficiency and a seamless developer experience.
With regards to “serverless”, it is a bit different. You can architect your applications to directly work with the cloud providers’ service endpoint, in which case, you are having at tighter architectural coupling which limits the flexibility. This is perfectly ok as long as the cost of tearing down the application and rebuilding a new version elsewhere or on the same service is low. If this is not the case, we recommend that you take a more layered approach and treat the “serverless” services provided by cloud providers as the base infrastructure and use an abstraction (see our previous post about portable APIs) like the Serverless Framework or various serverless frameworks that run on top of containers as the way to maintain composability and retain flexibility.
In other words, packaged platforms and “serverless” offerings are part of the philosophy of composability and it requires a careful layering to maintain the flexibility to innovate fast. If you are using your own datacenters or colocation for your infrastructure, a composable layered approach is the critical first step to maintain better ROI and agility.
I would like to hear your comments on this and I am even more interested in hearing arguments against this idea.