Unless you’re hunting vampires, it is probably best not to believe in silver bullets.
That’s especially true when you’re building tech and SaaS products. There will be new technologies and services every year that promise you the world. Lower costs, improved performance, faster deployment … the list is endless.
But the reality is, these “silver bullets” are never really a solution to every problem. Instead, you need to think in terms of trade-offs. By choosing one solution, you will gain one thing but lose something else. So you will need to understand what is essential and what can be sacrificed.
This is definitely the case when it comes to thinking about serverless technology. To decide if serverless is for you (and cloud computing more generally), you need to weigh up many different factors.
I headed up a team of software developers and devops focused on adopting serverless technologies. Now I am at Fullreach, where (at the moment) all of our products are serverless. So I have been through the process of deciding whether to go serverless a few times.
And I wanted to share 4 questions you should ask yourself if you’re also making this decision. But first, I’ll quickly clarify exactly what serverless technology is for anyone who’s not sure.
What is serverless technology?
As the name suggests, serverless technology is where you develop software with no server. The traditional set up is to have a server somewhere. This could be physically on site, or more likely in a data center or in the cloud.
With serverless, it is the next step on from the cloud. That is because you no longer have to think about computers at all, you just think about resources. You do still need to do the calculations of how much computing power you will need, but you don’t need to think about where that calculation happens.
How does serverless technology work?
With serverless, cloud providers give you the resources you need via a kind of abstraction layer. In our case we mainly work with AWS – Amazon Web Services. AWS is by far the largest cloud services provider in the world, and they are pioneering serverless, and many other technologies as well.
So, they provide this abstraction, which means that we as users don’t need to think about the servers or the hardware. On these abstraction layers we can do calculations and run applications.
So essentially, the cloud provider is just providing resources. These might include:
- a CPU (central processing unit) for making calculations.
- storage space for data storage.
But the important point is that you never have to think about the hard drives or servers themselves.
4 questions to ask yourself when considering going serverless
So, that’s what serverless technology is and how it works. Now, it’s time to think about whether it is right for you or not.
As I mentioned in the intro, no technology is a silver bullet. And this is definitely the case with serverless technology. It has big benefits, like increased flexibility, but also has downsides, such as potentially higher costs.
The best way to understand if it’s right for you is to answer these four questions. (By the way, quite a few of these points will also apply to the broader decision of whether you should switch to the cloud in general. So, when I’m talking about serverless, many of these points apply to cloud computing too. It is just that serverless technology takes these points even further. So, for example, both the cloud and serverless give you flexibility – but serverless is even more flexible than traditional cloud computing.)
OK, let’s get into the four questions.
1. Is your traffic predictable?
If you have constant requests coming in on one of your applications, and your traffic is fairly predictable, serverless may not be right for you. That’s because it will probably end up being more expensive than regular cloud computing or data center storage. This also applies if you do not need to react immediately to requests and can schedule them instead.
On the other hand, if your traffic is unpredictable and can suddenly spike, serverless is a better option. These spikes could come from, for example, running a TV ad and anticipating a jump in traffic to your app directly afterwards.
With traditional cloud computing you get some flexibility, but you would need to have sufficient resources available at all times (and you would need to pay for them) in order to be prepared for these spikes. This can be inefficient and costly.
With serverless, you can have the resources ready but idle. Then you just spin them up as and when you need them. Imagine, for example, that you operate a monitoring system. You know there is an action that happens once a week and you will need to react. But you don’t know when it will be. Serverless is perfect for this scenario, because you don’t need to pay for the capacity for a whole week just to cover that one instance. Instead, you can have everything prepared – the source code and integrations – but lying idle. Then it just spins up and does the job when required, and you only pay for the resources you used for this action.
In summary, if you have traffic and requests that are more or less constant, serverless will be too expensive. However, if you only have sporadic requests, and these are unpredictable, you will save money and resources by going serverless.
2. How much of your system needs to be up at any one time?
Another great question to consider is whether you use all of your system all of the time. You should think about this because serverless gives you the option to shut down parts of your system if you’re not using them.
So, if there are some parts of your system that are necessary to have but which you don’t need constantly, serverless enables you to shut that part down when it is not in use. Naturally, this saves on resources and costs, and can help to optimize the system’s performance.
3. How quickly do you need transactions to be completed?
This one is really straightforward. Using serverless, you won’t get instant transaction times. So, if a few seconds is too long for a transaction to be completed, serverless is not for you.
If your transactions don’t need to be instant, then it will suit you just fine. In the end, we’re only talking about a matter of seconds here so it’s not a huge difference. But if speed is critical for you, serverless is not going to be the best option.
4. Does your team have the right competences?
Finally, it’s important to remember that there are some specific skills your team will need in order to manage cloud computing and serverless technology. On the other hand, there are also certain competencies that won’t be important any more.
The biggest point is dealing with servers versus dealing with abstractions. With a traditional set up, you will need people in your team who can take care of servers. Unsurprisingly, with cloud and serverless this is no longer that important.
But what is important is the ability to understand and configure the abstractions that you’ll be working on. So, if you’re planning to shift to cloud or serverless, you’ll need to audit your team’s competencies and then do some hiring or retraining to make sure you have everything covered.
Choosing serverless – the takeaways
To sum up, the key advantage you’ll gain from cloud computing in general, and serverless in particular, is the ability to innovate and react fast. You can activate or deactivate different parts of your system, and have actions sitting idle until you need them. Most importantly, you only pay for the resources you actually use.
In the case of Fullreach, we’re developing multiple products and solutions at the same time. What’s more, we’re developing these products iteratively (more on that in a future article). This makes serverless the ideal set up for us. We can add and remove features, test out different set ups, and handle significant variations in traffic as we develop our products.
In the future, once we have done a lot of the initial development, our needs are likely to change and serverless may become less attractive. As I said, it isn’t a silver bullet that will work for every tech company at every stage of development. But, for now, it is the ideal set up for a rapidly growing startup like ours.