Serverless: is this the new revolution for network hosting?
While cloud computing has become an essential aspect for both companies and IT freelancers, a new development model is increasingly being discussed among those in the industry. Serverless computing – or in other words, computing without a server – is a type of cloud-native framework which allows developers to design, test, run and maintain their applications without having to worry about server management. So, how exactly does this system architecture function without depending on a server? Are “serverless” networks the new revolution in hosting? Find out by reading this article.
How does serverless computing actually work?
A server without a server
Despite what its name suggests, the serverless architecture still depends on using a server in one form or another. Where exactly is the novelty in this case? It lies deep within its management which is completely isolated from application development – programmers no longer have to worry about supplies, network traffic adjustments, as well as patches and updates to software, etc. Developers have released the burden of having the responsibility for maintaining such environments. But who exactly takes care of such task management if it is not up to the developers? Those would be cloud providers. The serverless network is in fact structured on the concept of cloud computing.
Amazon Web Services (AWS) first proposed this server-free network architecture with AWS Lambda in 2014. Today, almost all cloud providers offer a server-free platform. Examples include Microsoft with Azure functions, Google Cloud Functions, or IBM with Cloud Functions. Within these provided platforms, cloud providers dynamically allocate the resources needed to calculate and store the code which is sent – an example of this would be when an event triggers the execution of part of a program’s script.
It is also possible to develop applications which are fully serverless. In this case, it is the cloud provider who controls the full operation of the application by automating adjustments for allocating necessary resources to the software. This is commonly known as autoscaling (automatic scaling). The two major serverless network structures are FaaS (Function as a Service) and BaaS (Backend as a service).
Serverless computing: FaaS and BaaS
FaaS is a cloud computing service which facilitates the management of microservice cloud applications. With this model, physical resources as well as web server software and virtual machine operating systems are all managed automatically. FaaS can therefore be confused with a serverless network. It actually only represents a subset of it.
The Serverless architecture covers all service categories: it includes storage, calculation, database management, APIs etc. The FaaS, on the other hand, focuses more centrally on the model of event computing. When using these functions as a service, server-side logic remains the responsibility of the developer. On the other hand, it is executed in “stateless” and ephemeral containers – stateless meaning that the container does not store data or references to past transactions.
BaaS can also be considered as a subset of the serverless network: this model enables developers to outsource the back-end of a web application, allowing them to centrally focus on business logic and the front-end of the application. This model is widely used in the design and development of mobile applications, which uses a particular version of BaaS known as MBaaS – Mobile Backend as a Service.
BaaS providers offer pre-designed software in order to manage server activities such as:
Updates and maintenance.
Push notifications – particularly the case for mobile applications.
Authentication and user permissions
In the BaaS approach, serverless functions are most commonly used across APIs and SDKs as well as with devkit (software development kit).
The advantages and drawbacks of serverless computing
Flexibility, performance and efficiency
Enables developers to focus on business logic and code, without needing to worry about infrastructure.
Gives programmers high visibility over system performance/times.
Is almost always charged at runtime – hence the customer will only pay for the resources which are actually used.
Is often faster than other structure designs, thanks to cloud capabilities. Provisioning time is usually a few milliseconds.
Encourages DevOps approaches. Developers are able to easily implement the infrastructure in their projects since it does not explicitly require maintenance.
Has high availability and disaster recovery.
Encourages resource efficiency.
“Server-free” resources are never inactive because they are only activated on demand by the system.
Less management means less control
Some of the benefits of the serverless network architecture can also however, be the source of many issues, including:
Security risks – a cloud server that performs functions for many clients will naturally increase the number of vulnerabilities and flaws in the system.
There is a dependency on cloud provider technologies, meaning that certain providers may impose certain restrictions on components, which will consequently limit the level of customisation of customer systems.
A “server lock-in” issue may arise – this is a well-known term in the field of cloud computing, which means that customers may have to pay for a change in cloud provider. For example, they may have to pay for an upgrade for their systems to be compatible with those of the new provider.
Fixes – debugging a serverless application/system can be more complex than it seems. Since a new version of the instance is created during each run of the debugging process, it is difficult to perform in-depth error and performance analysis.
While a serverless network has many advantages by using cloud computing, it is not necessarily a new revolution for the industry of hosting. For example, it is quite possible for developers to use the FaaS without needing a serverless network. For IT professionals who mostly deal with independent, short-term tasks, computing without a server is seemingly a peculiar network architecture for them to use. On the other hand, for companies who use open systems which perform multiple, in-depth and long-term calculations and analysis, it would be better to turn to more traditional hosting types where servers can be directly managed.
So, what’s your take on serverless computing? Why not leave us your thoughts on the IT forum!
Sources and useful links:
AWS Lambda presentation: https://aws.amazon.com/fr/lambda/
The top 10 security risks linked to serverless computing: https://www.zdnet.com/article/the-top-10-risks-for-apps-on-serverless-architectures/
Article on how businesses are using serverless computing: https://www.bmc.com/blogs/state-of-serverless/