Adopting serverless into an organisation brings with it several benefits and challenges. These benefits and challenges hold different weights for different types of organisations. A large enterprise’s primary driver for embracing serverless will probably be different from a bootstrapped SaaS startup’s. Similarly, the main challenges to adoption in both companies will be different.
In this article, I’ll focus specifically on the value proposition of adopting serverless to software development agencies.
Agency business models
The main revenue stream of development agencies comes from building custom applications for their clients. The agency itself doesn’t own the final application nor (in most cases) can they profit from its use. Instead, they usually get paid in one of 2 ways:
- Fixed scope project — client is given a price to deliver a pre-defined set of user stories or features.
- Fixed time project — client is given a price for a fixed period of time with access to a fixed set of agency staff. The agency will attempt to deliver as many features as they can within that timebox.
Starting up new projects
Unlike with more product-oriented companies, starting new projects is a frequent occurrence for your development agency. This phase is part of your critical profitability path so you need to do it well and efficiently. Here are several areas where serverless architectures surpass traditional ones at this phase:
- Much easier to automate resource provisioning (using Infrastructure as Code frameworks).
- No real up-front billing costs to provisioning resources for development and test environments.
- No up-front capacity planning required.
- A full Continuous Deployment pipeline is easier to set up for a serverless architecture, whereas in traditional server-based apps there was often only time to set up Continuous Integration (if at all) on a transient client project.
As your agency delivers more serverless projects for your clients, you will get faster over time as learnings accumulate. Re-usable infrastructure, architectural patterns and code components will emerge that you can roll forward into their next project.
Post go-live operations
Most support agreements between agencies and client organisations operate on a fixed recurring fee, with potentially extra charges for non-standard activities. While you always want to do the best by your client, it’s in your financial interest to minimise the amount of time your team spends on supporting the client’s app. Time spent patching servers, fixing network issues, handling load-related crashes and the raft of other operational concerns that serverless takes away is time that your developers can now spend on more profitable (and enjoyable) activities.
In addition to the savings in terms of staff time spent, the ongoing billing cost (typically passed on to the client) will also be much less. If your client is a small startup with a tiny initial userbase, they will pay next-to-nothing for their cloud bill. The barrier to entry is much lower for small startups getting started.
Scaling high-growth client applications
At the other end of the spectrum, one of your client applications may go viral with a spiralling userbase. In the past, this is where you would need to hire an expensive expert to come in and tune or re-architect your app to cope with the demand. But while you still need to give good consideration to designing a scalable architecture at the outset, using serverless components that automatically scale themselves without you needing to explicitly do anything removes a large burden from your support team.
The architectural differences between a low-usage and high-usage serverless application are much fewer than those of equivalent server-based applications.
Serverless as an innovation enabler
This one is a less tangible benefit than the time and billing savings that I’ve mentioned above, but it can bring a high impact.
Developers are creative thinkers and problem solvers but this creative power is a finite resource. They could burn it up spending a large portion of their day debugging a tricky infrastructure issue and then when it comes to building out their user stories they’re lost for inspiration. They get the work done, but it’s not always their best work.
But if these distractions are taken away, the developer is freed up to fully focus on delivering the best solution for the client. This is when the magic can happen.
Next up: the challenges for dev agencies adopting serverless
In this article, I’ve covered the primary value drivers for development agencies adopting serverless. In my next article, I’ll cover the primary challenges that they are likely to encounter along the way.
Over to you
Do you work in (or own) a software development agency? Are you already using serverless in your organisation? Or considering adopting it? If so, I’d love to know what are the 2 or 3 most important benefits that you want it to bring to your organisation. Just hit reply and let me know!