Serverless computing is a hot topic in software architecture. Is it just another overhyped tech-buzzword? Or maybe this newcomer in the IT world will bring some wind of change? We explain the concept and check to what extent can this technology improve your workflow.
To understand what serverless computing is, we need to take one step backward. Nowadays, we build large numbers of applications using a server that allows us to deal with business goals. By a server we mean the whole architecture with databases, payment systems, and of course a devops structure, whose aim is to provide for example container orchestration (the process of organising containers to keep the application scalable and ensuring that it has access to all necessary resources) and such essentials as security and performance.
On the other hand, there is a new kid on the block: building apps in serverless is one of the growing trends in the software development field. The important question is: how is it possible to use serverless technology if our application really needs a server? And how does it change the workflow and the whole development process?
This is the moment when we need to do two steps forward. We need to think about serverless technology taking into account two different, but overlapping, IT areas.
First of all, we use the term “serverless” to mean applications built and hosted in the cloud. It means that we use cloud providers such as Amazon, Google or Microsoft to build our business. We use the cloud ecosystem to translate business goals to the functions and services provided by the cloud. This offers an opportunity to develop a product in a fast and scalable way, and to only pay for features that we are currently using.
At the same time, serverless refers to a way of building applications by using FaaS (Functions as a Service). FaaS refers to cloud services that make serverless app development possible. Our application grows when we add new cloud functions to deal with application business logic, and which returns results or triggers another service. Thanks to such facilitation, we are able to obtain full control over development when it comes to adding a new feature to an existing application. Of course, we need to pay only for the resources that we use, i.e Lambda functions on AWS (Amazon Web Services). These functions allow us to run code without provisioning or managing servers. We pay only for the compute time we consume. Lambda provides resolvers for a business-application goals by allowing developers to convert an application’s requirements into special handlers with input or output behavior. In Lambda, we pay only for the requests and time that a service spends on calculations.
Now we understand clearly what serverless means. The best way of thinking about it is to split the two concepts described above. Serverless is a way of thinking about a product as a group of services: easy to scale, easy to maintain, and easy to build in continuous integration and delivery.
At this point, it is indispensable to outline and explain two concepts closely and inseparably connected with serverless computing: continuous integration (CI) and continuous delivery (CD). This is because of “serverless technology dualism”. What it means is that we need to keep in mind that code deployed to a repository needs to also be deployed in the cloud - and this is the moment where CI/CD shows shows its presence.
The majority of applications require code in different tools and platforms. It means that a team needs a mechanism to integrate and validate the changes. Continuous integration is a kind of approach that makes implementing small changes in the project possible by applying version control. It enables developers to deliver new features quickly and flawlessly.
Continuous delivery starts when continuous integration ends. To put it simply, it automates the delivery of applications to designated infrastructure environments. How does it work in practice? When a team works with multiple environments (such as a development and a testing environment), continuous delivery provides an automated way to implement code changes.
By using serverless, we can easily manage resources in the cloud and thus we are able to reduce costs considerably. Clouds like AWS, Google Cloud or Azure enable us to pay only for the features that we really use and, in most cases, you can use the free tier to build a fully working MVP.
Building applications in serverless technology, we can enjoy one more important benefit: work modularity in the developers' team. It means that we can assign small sub-modules of a task to a few developers, because the cloud and serverless give you independent cloud resources. As a result, it is possible to obtain a remarkably increased development speed by splitting big stories into small subtasks, and consequently to keep money in the pocket for further features, eliminating unnecessary resource usage.
Thanks to using serverless, we are able to give developers a set of tools to design a dedicated architecture in line with the application’s requirements.
Let’s consider one of the most crucial parts of developing a new project. At Netguru, we believe that continuous implementation and proper delivery are among the most important factors in terms of healthy business growth. In our opinion, the most valuable goal to achieve in product development is the ability to deploy new changes immediately. By using serverless technology, we are able to choose a few ways of applying continuous integration and continuous delivery. Each developer is able to work on dedicated cloud environment, hence there is no resource sharing between them. As a result, each piece of new functionality can easily get the green-light to be moved forward to the production (after testing, of course).
There are a few ways to add CI\CD to a project. One of them is a canary deployment, a great tool for providing a secure way of delivering new features. Step by step, percent after percent, we are able to shift our request from one version to another.
Moreover, by using serverless, we can easily use tools like CircleCI, an app that is one of the best solutions for providing new changes in a project in continuous mode. By providing even a basic circle config, we obtain fully working environments and it only depends on us how many environments we want to set up.
In a nutshell: the most important advantages of applying serverless technology are as follows:
How does it work in practice? Virtual machines need to be online 24/7 even if an application is inactive. It generates costs. Applying serverless technology enables managing resources in the cloud. Operating in clouds such as AWS, Google Cloud or Azure, we pay only for features that are currently used.
How does it work in practice?
The cloud ecosystem gives an opportunity to develop products in a fast and scalable way
Each developer is able to work in dedicated cloud environment, hence there is no need to share resources.
There are no bottlenecks in the process of implementing fixes - deploying code in different tools and platforms is not a problem thanks to the mechanism that easily integrates and validates changes.
Automated implementation of code changes enhances the workflow when a team works with multiple environments (such as a development and a testing environment).
Independent cloud resources enable work modularity cooperation model - assigning small sub-modules of a task to a few developers splits a big job into small subtasks. It increases the team’s productivity.
How does it work in practice? A flawless development process and an automated way of implementing changes results in cutting production time. You don’t have to wait long for your idea to be transformed into code and then into a product.
If you have more questions concerning serverless technology in your project, drop us a message. Our experts will be happy to help you.