Warning: this post is forward looking and does not give easy answers.
Cloud computing continues to enable innovation in the way we develop and deploy software.
Service Oriented Architecture (or SOA) is a software development paradigm for breaking up large systems into more manageable independent components. This probably got off in the nineties. As a matter of fact I worked on the architecture of a travel information system along those lines at the time.
Then we moved into multi-tier client server architectures, where a farm of web servers talks to a farm of application and database servers.
These days micro-services are the rage, each implementing a specific API to enable event driven software for full responsiveness.
However, micro-services still need to be deployed on compute units. This is one of the reasons why containers such as Docker’s are becoming so popular: they are much quicker to scale than virtual machine instances.
Yet, you are still deploying on discrete compute units. And while being able to scale up your resources is key to the cloud computing benefits, scaling down below the level of a compute unit makes it possible to think in terms of lots of smaller micro services. Maybe we should call them nano services.
The notion of the server, even if it is a container, then disappears, and the minimum cost for running a service drops from a dollar a day or so to millicents.
AWS Lambda is a new platform that enables this serverless computation style. The basic unit of deployment is a piece of code that handles one API request that can last no longer than a few seconds. The AWS platform does the replication and scaling. And billing of course, you can trust Amazon to do that :-).
The idea is not entirely new. Google App Engine did something similar 5 years ago, when I started measuring the cloud. However, it was too far out, lacked certain features to make it easy to use and deploy. In the meantime, it has made big steps, and Google App Engine certainly remains an option in this space.
What is the strategic implication? This serverless computing style revolutionizes application architecture. We can now really start thinking in terms of service orientation and grid style computation, without being distracted by our target server architecture. At the same time, this requires significant reengineering of even the most advanced DevOps continuous deployment toolchains. And finally, security and risk management need to make some ‘adjustments’ in their thinking, to say the least.