Serverless architecture is a trending topic, and with all of the various services it has to offer, it can be a very powerful tool empowering software engineering teams. However, depending on a product or team’s goals and restrictions, it might not always be the right tool to employ.
This blog post is for coding newbies with little or no experience with serverless architecture to get a general understanding of serverless, when to use it, and how to get started. If this sounds like something you're interested in, welcome aboard!
How do we define serverless? One obvious (although inaccurate) interpretation could be that it allows developers to use servers less. However, the term “serverless” is widely acknowledged as a misnomer. According to Microsoft MVP and serverless enthusiast, Marc Duiker, rather than “having fewer servers”, a better way to make sense of it is to “worry about servers less” or interacting with servers less. The key point to remember is with serverless architecture, developers still make use of servers, but not directly.
Computers have limited compute power and storage space. Even with physical servers, there’s a limit to how many servers one can manage physically, financially, and emotionally. Just over 15 years ago, developers worked directly with hardware servers (dealing with various tools and configurations), making the setup process lengthy and inefficient, even to get the most basic product functionality.
To overcome this limitation, developers can rent capacity from data centers around the world. The cloud is a term assigned to the computers and servers at those data centers. Cloud providers (such as AWS and Microsoft Azure) take the full responsibility of managing and running microservices on servers, allowing developers to shift their focus to serving business value, writing code, and building products more efficiently.
Developers access serverless architecture by writing serverless functions, which are hosted on servers maintained by cloud providers.
Most commonly, serverless architecture refers to the pay-as-you-go model where while the product is running on serverless architecture, how much a developer pays for server management directly correlates with the product’s usage. This means that the more people click on their website and use it, the more they pay. As soon as no one is on their website, those serverless functions are not running, so they’re not paying anything. Serverless databases provide data storage, where they only pay for the storage they need to use, combined with being able to effectively query and manage their data.
Serverless architecture is applied in most if not all industries, and is relatively popular in finance, e-commerce, and communication services.
Is Serverless For You?
In general, serverless is ideal when developers need flexibility in scaling, specifically:
- when there are a lot of small events involved (e.g. an e-commerce website with many different ways for users to interact and make various transactions)
- when the workload fluctuates over time (e.g. having more users on interact with your website in the day than at night)
For new developers, the serverless model is a lot easier to learn. For developers used to building products from before serverless times, getting started now involves rethinking the entire application architecture; instead of one big web server with complete functionality, there are microservices or function apps with more dedicated functionality.
The downside of serverless is that it greatly lowers the amount of control a developer has over a product’s infrastructure. Some products have extensive security requirements, specific needs for large amounts of storage, a lot of memory or extra CPU power, and in such cases relying on serverless architecture could have negative impacts on the developers’ efficiency or ability to deliver on their expectations.
There’s no specific “yes” or “no” for making this decision, however weighing out the pros and cons for the team’s skills, requirements, priorities, and goals will lead you to your answer.
Get Started Now
There are various ways to get started with learning the fundamentals of serverless and building your first serverless project. Bit Project offers a free coding bootcamp called “Serverless Camp” where students can receive 1:1 mentorship from serverless experts like Marc Duiker, build awesome independent projects, and present their final projects at the annual “Serverless Days: Student Edition” conference.
You can also learn more from Marc Duiker’s self-paced series, “Azure Functions University”:
Top comments (0)