Serverless computing is a hot topic in software architecture – but is it just another overhyped tech-buzzword?
Or maybe this newcomer in the IT world is bringing with it a world of change.
In this article we explain ‘serverless’ and answer the most important questions:
- What does serverless really mean?
- How does serverless resolve the most common app development problems? - How can I increase development speed and divide big ideas into small tasks?
- How do we use continuous integration and continuous delivery at Netguru? - - Why go serverless?
To understand what serverless computing is we need to look to the past – to the days when a lot of on-site servers were needed in order to reach business technology goals.
And by servers, we mean the whole architecture along with databases – but systems using DevOps bring a whole new format to this structure, whose aim is to provide container orchestration, which is the process of organising containers to keep an application scalable. More on that later.
It also ensures that the system has access to all necessary resources such as security and performance. These two things are just a part of what make up DevOps.
DevOps and going serverless essentially means putting your infrastructure into the ‘cloud’ – this process means your systems can scale by themselves and react to demand in a more precise way – saving you time and money.
But how does going serverless effect the app development process? Let’s take a closer look:
This is the moment where we jump to the future – when thinking about serverless technology we must take into account two different, but overlapping, IT areas.
Serverless really means that you don’t need to think about the server, just run the code- this is normally backed up by cloud providers such as Amazon, Google or Microsoft to build a business.
You can utilize the cloud ecosystem to translate business goals into functions and services provided by the cloud – this lets you develop a product in a fast and scalable way while only paying for the features you are currently using.
Think of it like having a menu for your system – need to scale automatically? It’s ready for you instantly and delivered through the cloud.
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 – your application scales when you add new cloud functions to deal with application business logic, and which returns results will trigger another service.
Thanks to this possibility you are able to have full control over development when it comes to adding a new feature to an existing application. Of course, you only need to pay for the resources that you use, as seen with Lambda functions on AWS (Amazon Web Services).
These functions allow you to run code without provisioning or managing servers – you only pay for the computing time used.
Lambda provides resolvers for business-application goals by allowing developers to convert an application’s requirements into special handlers with input or output behaviour. Using Lambda means only paying for the requests and time that a service spends on calculations.
Managing data and computing costs is a constantly growing challenge:
Now we should have a clear understanding of ‘serverless’ – which 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.
Let’s go into more detail:
First, let’s explain two concepts closely and inseparably connected with serverless computing: continuous integration (CI) and continuous delivery (CD) – they create the dualism in serverless technology.
We need to keep in mind that code deployed to a repository also needs to be deployed in the cloud – and this is the moment where CI/CD comes into play.
Most applications require code for different tools and platforms – it means that your team needs a mechanism to integrate and validate changes.
Continuous integration is the kind of approach that makes implementing small changes in the project possible by applying ‘version control’. It enables your developers to deliver new features quickly and flawlessly.
Continuous delivery starts where continuous integration ends – to put it simply, it automates the delivery of applications to designated infrastructure environments.
How does that work in practice? When a team works with multiple environments (such as a development and testing environment), continuous delivery provides an automated way to implement code changes.
Since deployments occur much more frequently it makes isolating bugs much easier letting you pin-point the problem.
With serverless you can easily manage resources in the cloud and reduce costs considerably.
Clouds like AWS, Google Cloud or Azure enable you to pay only for features you really use and, in most cases, you can use a free plan option to build a fully working MVP.
Building applications in serverless gets you another important benefit – work modularity for your developers.
It means that you can assign small sub-modules of a task to a few developers because the cloud and serverless options give you independent cloud resources. As a result, it’s possible to rapidly improve development speed by splitting big issues into small subtasks – keeping money in your pocket and preventing unnecessary usage.
Serverless lets us give our developers a set of tools to quickly design dedicated architecture in line with the application’s requirements.
We consider continuous implementation and proper delivery some of the most important factors in terms of healthy business growth. In fact, we’ve seen it make or break our clients success.
Changes can be deployed immediately with many options – each of your developers is able to use the cloud environment making resource sharing extremely efficient. This means new functions can quickly get the ‘green light’ after testing and be put on production.
There are a few ways to add CI\CD to your project – let’s break them down below:
Canary deployment – a great tool for securely delivering new features. Step-by-step and ‘percent by percent’ you can shift your request easily from one version to another.
CircleCI – one of the best apps for pushing changes to a project using continuous delivery. It provides a basic circle configuration letting you obtain fully working environments and choose how many to set up.
The cloud lets you develop products quickly that scale automatically – your developers can share resources much faster than before.
Changes are easily integrated and validated – no more bottlenecks.
Automated code changes – make the steps between testing and deployment in multiple environments even shorter.
Automated implementation of code changes enhances the workflow when a team works with multiple environments (such as a development and a testing environment).
Split big jobs into smaller tasks – increase your teams productivity massively using the ‘modularity cooperation model’.
As more companies move to the cloud we can only expect the trend to grow – let us know your thoughts or questions in the comments below.
For more info on how to get started with serverless contact our DevOps team today.