IT evolution in last years has gone from the basic migration of software applications to public and private cloud infrastructures to a big usage of cloud providers services.
It all started by replicating everything we had in our premises infrastructure into cloud resources. No matter if we had an LDAP, web servers and application servers, corporate DNS and many other elements that we can find typically in company infrastructure. This is known as IaaS (Infrastructure as a Service) and it’s the straight forward approach to the cloud migrations.
After that, cloud providers started to develop their own services begining with databases as service (so we don’t need to handle complex database clusters in our infrastructure to get high availability), load balancers where we only need to plug them in cloud resources and we will have load balancing without deep knowledge on the complexities a proper load balancing has. This is known as PaaS.
Many other services were added but we still needed to create our virtual machine, with knowledge about system administration, software development, networking and deep understanding about the architecture we wanted to build for our application/service.
What is FaaS?
The idea beneath FaaS is to make developer’s life easier decreasing the knowledge he has to master (or at least to understand) to deliver a working solution in a cloud provider.
As an example, let’s think about a typical web application. Usually, we think about it as three layers application, the browser as client side, the server where all the bussiness logic runs and finally the database where the persistence happens.
FaaS principles will try to abstract these three layers into components where only specific functions will run as part of the business logic. This will end up with many elements running only an small “function” and isolating itself from the rest of the system. This can be summarized as:
- Abstraction from servers away from developers.
- Event oriented applications
- Isolation between componetes
- Capability of scaling components individually
Applying serverless architecture paradigm may end up in an typical e-commerce application with the following elements:
- An authentication service
- An API gateway to drive business logic
- Functions for business logic as:
- Cancel orders
- Order Basket
- Databases per service
This is just an example about what FaaS is. There will be a new post comparing FaaS providers.