The Product Manager's Guide to Cloud & Serverless Computing 101Aug 31, 2023
The first step to building software applications is deciding how to architect the system. Infrastructure decisions are a big piece of this puzzle—where do we “host” the app? How do we scale it? What’s easiest to implement and maintain? These are just a few of the questions your engineering team must answer as part of building that new feature or product you’re asking for as the product manager.
Luckily, computing trends and software infrastructure solutions have come a long way in the past two decades. Along with these changes came a whole new suite of solutions for how we host, scale, architect, build, and maintain software. Specifically, this new suite of solutions come in the form of cloud and serverless computing.
So why this topic and why is it important for you as a product manager? For many reasons, one of which is that computing trends are an important part of software development, especially modern software development, and you want to be able to converse on the topic and understand its core concepts.
In this article, we’ll explore the historical computing trends starting with “on-premise” hosting, moving into cloud computing and finally serverless computing. I’ll explain what the differences are between them and how these trends have changed the way we build software in modern times.
Note: This article requires some basic technical acumen though I’ll do my best to explain technical concepts and lingo as we go. Consider enrolling in the Skiplevel program if you’re serious about leveling up your technical skills and knowledge.
All software are hosted on physical machines called “servers”. Early internet companies hosted their websites on servers located on-site, hence the term “on-premise” hosting. The companies were responsible for maintaining and managing these machines. This meant not only were they responsible for building the website and what goes inside of it (i.e. operating system), they were also responsible for the hardware and physical internet infrastructure. Managing hardware is costly in a myriad of ways including financially, time, physical effort, and complexity. Imagine having to manually install and uninstall machines whenever traffic goes up and down so the company can save on costs since keeping servers running can be expensive!
Hence you can imagine what a big hamper to scaling managing physical infrastructure is. It wasn’t until the advent of cloud computing that the internet really exploded and we see the rich web experiences that we see today.
The first big shift in computing is cloud computing.
Cloud computing can be a confusing term but at its core, cloud computing just means instead of managing physical infrastructure yourself, someone else—namely cloud providers—manage your servers and the computing needs of your application for you.
Gone are the days of having to manually scale physical machines. Cloud providers like Amazon Web Services, Google Cloud, and Microsoft Azure can automatically detect shifts in your application’s traffic needs and within minutes “provision” (set up or make available) new hosts to serve your app. Cloud computing also offer many security protocols that otherwise is difficult to set up and maintain.
This is a turning point for the internet because it means companies no longer need to manage and maintain physical infrastructure! This frees resources up to innovate and develop the beautiful applications and interfaces we enjoy today.
Cloud companies offer a myriad of tools and solutions for companies. Terms like “AWS Cloud” or “Oracle Cloud Infrastructure” refer to Amazon Web Services’ (AWS) collection of data warehouses and special tools they offer to host, run, deploy, and scale their application. The same goes for Oracle Cloud Infrastructure and the many cloud providers out there.
Here are some popular cloud products your engineering team may be using:
- AWS EC2:
- Heroku Dynos
- Google Compute Engine
- Digital Ocean App Platform
- Azure Virtual Machines
Challenge: Leave a comment with which cloud provider you use (or ask an engineer on your team if you’re not sure!)
The second big shift in computing is serverless computing.
Serverless computing is actually a type of cloud computing since they both remove the need to manage hardware. But serverless takes the automation trend of cloud computing a few steps further by allowing teams to build and run applications without having to provision servers on the cloud. Serverless computing is a method of providing backend services on an as-used basis. The term serverless is a bit of a misnomer since servers are still used, but a company that gets backend services from a serverless provider is charged based on usage, not a fixed amount of bandwidth or number of servers.
In traditional non-serverless software development, engineers write core function code (like APIs) along with files and dependencies needed for “runtime” (time when the app is being executed). Serverless computing allows development teams to focus solely on developing core function code and not worry about infrastructure or runtime related code.
Serverless computing first became popular when Amazon Web Services introduced AWS Lambda and API Gateway. API Gateway is what we call a “proxy” which sits between frontend applications and backend services, specifically APIs. AWS Lambda allows us to set up and run processes through what are call “functions”, which basically act as APIs. API Gateway is often used in conjunction with AWS Lambda to deliver serverless computing.
AWS Lambda makes it easy for developers to build applications without provisioning or managing servers which meant that developers no longer needed to create whole codebases with infrastructure or runtime related code or set up cloud servers. Engineers set up functions by configuring some desired settings, uploading core functionality code, testing, and publishing the Lambda function. These Lambda functions can be integrated with other serverless technologies offered from AWS like databases (DynamoDB), storage (S3), monitoring (CloudWatch), permissioning (IAM), and more!
Here are some popular serverless technologies:
- AWS API Gateway
- AWS Lambda
- Google Cloud Functions
- Microsoft Azure Functions
- IBM Cloud Code Engine
What do I need to know as a PM?
Engineering discussions more often than not center around architectural decisions and their trade-offs while taking product requirements into consideration. Since infrastructure is an integral part of system architecture design, you should at the very least know the foundational concepts and most often used terminologies in order to confidently be a part of architectural discussions. This should include having a mental understanding of the technical trade-offs and benefits of the Cloud and Serverless computing and scaling.
For example, while serverless computing offers more flexibility, scalability, cost savings, and lower barrier to implementation compared to traditional cloud computing, it is also more complicated to debug since it’s hard to replicate a serverless environment. Serverless computing is also not a good fit for every use case. Serverless computing is designed for short and simple processes that don’t require a lot of processing time or complicated algorithms.
Scalability is also an important topic, especially if your app is already serving many users, or you’re a startup that is growing quickly. Scalability is the property of a system to continue to function properly when met with sudden surges in demand. There are many techniques and solutions the industry has come up with to improve scalability including horizontal and vertical scaling, virtualization and containerization technologies, and auto-scaling. These are all topics that you should be well-versed to discuss about and they’re covered in the Skiplevel program.
If you want to level up your technical skills and your ability to communicate and collaborate with engineers, enroll in the Skiplevel program. The Skiplevel program is a comprehensive, on-demand course + community that helps you become more technical without learning how to code.
Sign up for the Skiplevel newsletter to get more content like this straight to your inbox.
If you like what you read, make sure to ❤ it, share it, and leave any thoughts in the comments!
Follow and subscribe for more technical tips!
Want to feel more confident in your technical skills?
Skiplevel is a program that helps product managers and teams become more technical without learning how to code.
Become more technical without learning to code with the Skiplevel program.
The Skiplevel program is specially designed for the non-engineering professional to give you the strong technical foundation you need to feel more confident in your technical abilities in your day-to-day role and during interviews.