AWS vs Azure - Which Cloud Technology is the Best for Your Business?
Cloud computing is quickly gaining prevalence on the market. That’s hardly surprising - cloud infrastructures have revolutionized the way we manage...
Serverless architecture, i.e., supplying the backend infrastructure, is one of the public cloud services that shows the highest growth. But what is serverless architecture exactly, and why are companies increasingly tempted to invest in serverless solutions?
Serverless architecture is a member of the cloud computing family. That family consists of:
… and many variations of these solutions. What’s important to remember is that serverless isn’t synonymous with cloud computing—rather, it’s an architectural paradigm where the serverless vendor executes the code.
Serverless architecture (or computing) means provisioning and managing servers. In other words, the developers’ code runs on servers managed by the vendors—the developers don’t have to configure or overlook how the servers work. In turn, they can focus more on an app’s business features and reduced delivery time coming from less workload spent on managing the server infrastructure.
Because serverless architecture eliminates a huge chunk of overhead for companies, the technology is gaining momentum. As Amazon CTO Werner Vogels put it in his AWS re:Invent 2018 keynote, “The whole notion of only having to build business logic and not think about anything else really drives the evolution of serverless.”
Big enterprises, as well as startups, are eagerly embracing this technology. The usage rose by 12% from 2018 to 2019, according to a report by Flexera, becoming the highest growing service among other cloud-based solutions.
A web application is made of two elements: the backend and the frontend. As the name implies, the frontend is responsible for what you see and can interact with. On the other hand, the backend is charged with the result of those interactions, e.g., returning appropriate information taken from a database.
When you use serverless architecture, it’s the vendor responsible for the backend part of a web app by delivering the server infrastructure necessary for the backend to work. In the serverless setup, developers can optionally use services and server tasks provided by the vendor (e.g., database management, user authentication, storage, etc.), a back-end-as-a-service solution (BaaS). Choosing the server-side functionality delivered by the BaaS vendor often happens with simple apps without complicated business logic.
A newer approach to serverless uses custom-built parts of code for server-side tasks—function-as-a-Service (FaaS). FaaS lets developers deploy code with pieces of business logic that execute upon interaction—event-driven computing—and build functionalities beyond those provided by the serverless vendor.
Popular serverless architecture vendors with FaaS:
Because the vendor manages the server infrastructure, developers can direct their focus on developing purely business features.
Deploying the code and managing the servers consumes considerable resources and takes lots of time. With the FaaS approach to serverless architecture, it’s easier to introduce new features, fix, or update separate functions. Compared to monolithic architectures, where the deploy process is time-consuming and cumbersome, this is an unparalleled improvement.
Since the server management and administration are taken out of the developer equation, the team can concentrate on innovation and customer-centric features. More time can be devoted to improving the user experience via functionalities enriching an app.
Because the developers don’t have to work on the server infrastructure, the IT teams are smaller: HR and hiring costs are reduced.
Serverless architecture and FaaS scale conveniently—additional server resources are added per traffic needs. This decreases the overhead of developing contingencies in case of heavy loads. The vendor handles all spikes in traffic. On the flip side, if there’s slow traffic, you don’t pay for idle resources as in the traditional cloud-based model or in-house server infrastructure.
The serverless model is based on a pay-as-you-go basis, meaning the client pays only for the actual computation, not upfront allocation of resources, which can be costly when there’s no traffic.
Moreover, there’s no need to rent or buy hardware and software necessary to manage and upkeep server infrastructure. It’s an especially alluring option for startups/MVPs—during the initial phase, the costs of introducing the product to the market are kept to a minimum.
Judging by the report from Flexera and the increasing use of serverless architecture, we can risk a statement that the serverless approach is the future solution. Still, serverless architecture isn’t devoid of challenges and drawbacks.
One of the biggest drawbacks associated with serverless architecture is a relatively large attack surface for hackers. The serverless ecosystem is made up of many components, which potentially raises the risk of data breaches.
Also, it’s the vendor that holds the backend and everything that’s on it. This often makes it difficult to assess the level of security offered. In the case of apps that store personal data, the lack of proper security evaluation may pose compliance issues. Because we’re renting out storage from a third-party provider, issues around data ownership can further complicate matters.
In the serverless paradigm, businesses don’t own the servers: the vendor assigns the number of resources, which means that multiple customers can be using the same server. If there are any misconfigured servers in that setup, they can lead to data exposure and performance drop.
Of course, reliable serverless vendors have mitigating solutions introduced—sandbox functions to test and run applications and robust infrastructure to withhold traffic demands.
Using a single ecosystem from one provider can result in vendor lock-in—overreliance on the vendor’s services. In case you want to change the provider, you may need to introduce significant changes to your application, which can incur migration costs.
FaaS architecture is especially prone to migration difficulties because different serverless vendors can have specific workflows and features that might be incompatible.
The functions that make up a serverless app are initialized only when called for—the pieces of serverless code that aren’t used often take a while to start returning results. This is called a “cold start.” On the other hand, parts of the code that are used frequently show no drops in performance.
While those brief lags can impact user experience, some serverless vendors employ technological solutions that quickly boot up the unused code pieces, significantly decreasing the perceived delay.
Serverless architecture works well when you need to build lightweight, scalable apps in a timely fashion. This architectural model is beneficial for apps with inconsistent usage—you pay only for the actual computation.
Recommended use cases:
Large apps with the known workload and few spikes in traffic may be better off using traditional server architecture, which can also be less expensive in that case. Such apps can still be in the cloud but using a solution with pre-allocated resources.
The costs of migrating legacy apps with established workflows might be too great to consider serverless architecture. For example, a monolith application would have to be split into microservices to be deployed to the cloud and adapted to FaaS.
In some cases choosing serverless architecture will be the best possible pick, and we can expect businesses with perfect serverless conditions to be increasingly embracing this technology. The growing serverless adoption holds especially true for startup companies with low initial traffic. Still, enterprises such as Netflix, AOL, or T-Mobile have already recognized the potential of serverless architecture and are using it in production.
Considering that serverless computing is a relatively new technology, there’s still a lot of room for improvement. As the technology and its tooling mature, we can see the rise of open-source projects, serverless frameworks simplifying development, and refinement of best practices.
Cloud computing is quickly gaining prevalence on the market. That’s hardly surprising - cloud infrastructures have revolutionized the way we manage...
With great tools such as Amazon Web Services (AWS), the cloud reduces overall costs of IT and labour, limiting human error...
Code reviews can be performed by other fellow developers within the organization, or code review services can be obtained. These code...