Function-as-a-Service (FaaS): the vanishing trick for your infrastructure
In a DevOps approach, through which developers and users can collaborate on software or an application from the very beginning, the architecture takes non-functional requirements (such as security and scalability) into account from the outset. We are increasingly dividing the functional side into separate blocks, or even individual 'functions'. Containers – a recent trend in the field of infrastructures – support the division of an application into many smaller components called microservices. This allows you to optimise the performance of each component. But FaaS (Function-as-a-service) goes one step further, so that you no longer have to worry about the infrastructure at all.
From microservices to ‘serverless’
Fine-tuning the infrastructure parameters for each component of your software application? That sounds really interesting. Because if you want to optimise performance and prepare for future growth, it is very useful to be able to continuously scale up your infrastructure. Thanks to the evolution from hardware hosting to virtual servers and to containers, this can also realistically be done on a large scale. You scale your infrastructure exactly to the right size – not too big and not too small.
When you develop applications for the cloud era, you step into a new paradigm. The traditional approach was once an ICT application forming one entity, with all kinds of dependencies within its own programming and with all layers of the underlying operating system. Each version upgrade required a new deployment of the entire stack. Scaling up was mainly a matter of adding hardware. And when the number of users suddenly became four, ten or one hundred times larger, this approach quickly reached its limits.
Fast-forward to today... In a microservices architecture, it is much easier to have individual components of the application evolve independently. Libraries, PHP versions, and even the programming language behind the different services may differ. In order to avoid bottlenecks, you can start scaling up in a very targeted way. If you add a cluster with multiple nodes or pods to each microservice, the impact will be much smaller in case of problems. Because you will just have to restart the failed node, while the others will take over its tasks for a while.
So… nothing but benefits? First of all, working with containers and orchestration requires extensive expertise. In addition, when developing your application, the question is whether you also want to think about all the details of your infrastructure. Although this is very recent technology, Combell specialists are ready to assist you with these matters. Through 'Function-as-a-Service' comes yet another benefit: each functional component of your application can run separately, whether or not it is linked to a Database-as-a-Service solution.
FaaS is what comes next to our IaaS (infrastructure as a service) and CaaS (containers as a service) solutions. You can read more about the other possible 'as a Service' solutions in our earlier article ‘What is cloud computing?’.
The power of the network
Containers and serverless computing are similar solutions that can be used to deploy code for components of your application. Containers are easy to duplicate and scale up, while serverless computing eliminates the notion of 'server' altogether. In order to execute a function, all you have to do is call an API (Application Programming Interface) somewhere on the Internet. Hence the new Function-as-a-Service solution. This can be a standardised function that you have written yourself, or that you use from another provider within the ‘API economy’.
Some say that using FaaS is a way to further increase the performance of your applications, because they are broken down into multiple functional components, which can then run in full parallel. Autoscaling provides enough computing power for each component. Some also see FaaS as a way to ensure fast access times due to the fact that data centre processing is closer to end users. Lastly, FaaS allows functions to be called only when needed in specific circumstances, as components of an event-driven architecture.
FaaS is actually completing the circle. From monolithic software development in which the code, the underlying hardware and everything in between are tightly connected, things have developed, via virtualisation and containers, into Function-as-a-Service – code that you can simply call via an API. From programming for specific hardware, things have developed into infrastructures that adapt to the needs of the application, and that eventually become invisible.
Tip: If you combine this service with a Database-as-a-Service solution provided by Combell, you will benefit from an SLA guarantee on your database and we will take care of all security and stability issues for you.
Some benefits of Function-as-a-Service
Just upload the source code and you are done. That is, in a nutshell, how serverless works. This approach was first implemented by major cloud providers such as Amazon and Google. But today, FaaS can be implemented via several cloud providers (including Combell) on, for example, managed servers or managed Kubernetes. Now, why is this interesting?
- The focus is on development: FaaS or 'serverless' allows you to leave all the thinking about your infrastructure to your provider. Combell's specialists are available to guide you in your choice.
- Elastic scalability: When you go for serverless computing, your cloud provider ensures that you can scale up seamlessly and automatically – obviously within the limits of the entire cloud infrastructure. This allows you to process a lot of requests within a short period of time, as is the case with ticket sales or online auctions. Conversely, you can scale to zero when you know you will not be using the feature for a while.
- Security: Your cloud provider takes care of the security of your FaaS component. A reliable provider such as Combell does this in compliance with the best security standards. However, keep in mind that all components of your application – including the ones you might manage yourself – must be properly secured (authentication, write protection, system permissions…). As a general rule, applications that consist of multiple functions or services are more complex to secure.
Tip: Combell allows you to add FaaS to your managed servers or managed Kubernetes environment for free.
Are there any restrictions? This technology is very recent and requires appropriate knowledge. You can use popular programming languages such as Java, Node.JS, C#, Python, Ruby and Golang, but some features are somewhat limited. Whereas you can often have a full microservice in a container, FaaS code is limited to one single function.
If you apply this philosophy to software development, FaaS can help you fully go for simplicity. Combell will gladly complete the package with reliable service and advice. Feel free to discuss this matter with our specialists.