The new “Function” platforms are to microservices what microservices are to the monolithic application architectures. Microservices were invented to divide applications into small easily managed modules, fitting well with agile project management and deployment. The “Function” platforms (Amazon AWS Lambda, Microsoft Azure Functions, Google Cloud Functions, and IBM Cloud Functions) have us dividing applications into even smaller modules, making an even better fit with agile project management.
Also called “Serverless Computing”, the architecture is dependent on automated scaling infrastructure offered by the cloud computing vendors. The word Serverless is an obvious misnomer because obviously servers are involved. What’s different is the developer does not get involved with deployment and scaling, which the hosting infrastructure provider takes care of. With container-based (Docker/Kubernetes/etc) microservices, a DevOps team is required to handle scaling the application to meet demand. With this Serverless model, the developer writes their small function-sized module, the hosting provider implements bite-sized containers holding that code, automatically deploying containers when and where and how much is required. The developer simply writes their code and pays a bill at the end of each month.
Both microservice and serverless computing is a reaction to traditional monolithic application architecture. The idea is smaller modules are easier for a team to manage. The entire application results from connecting together all the modules via published well understood API’s. One potential gain is application reliability by all application modules respecting the published API of all other application modules, enforced by the module being in another service container.