Cost of Cloud Computing: Virtual Server vs Serverless Model
Cloud computing refers to the practice of using a network of remote servers (rather than a local server or personal computer) to host, manage, and process data. The cloud offers numerous benefits from reliability to operational agility to cost effectiveness. About a year ago we expounded on some of the top reasons to choose cloud computing, speaking at a high level of the reasons why many businesses opt to utilize cloud services.
Since that time, clients have asked us for more details about the cost of cloud computing. A valid question, but challenging to answer since “the cloud” isn’t a single entity or type of service, despite what the name suggests. In the same way physical clouds come in different forms (stratus, cumulus, cirrus, to name a few), cloud computing is often broken into different services: IaaS (Infrastructure-as-a-Service), PaaS (Platform-as-a-Service), and SaaS (Software-as-a-Service). And a few years ago, the Functions-as-a-Service (also known as “Serverless”) model entered the scene.
As a result, in order to give insights on the cost of cloud computing, we need to more specifically select a type of service. Due to the relevance to our industry, we decided to compare IaaS costs to Serverless costs in this post. These services are commonly available, and all of the big three cloud providers (Amazon Web Service (AWS), Microsoft Azure, and Google Cloud Platform) offer them.
We have been asked, “Does a virtual server mean there’s no actual hardware? And no physical server?” The answer to that question is no. A virtual server runs on an actual, physical server. That physical server, however, is not the one that you have to maintain or pay for in its entirety. The cloud provider is responsible for making sure the physical server is up and running at all times.
Instead, in the virtual cloud server model, you maintain the virtual server as if it were you own piece of equipment. It runs an operating system, and contains database software, a web server, and other applications to deliver your site or services to your customers. You maintain the virtual server by connecting to it remotely over a network. Once connected, the administrator updates software and performs other software maintenance tasks as if the virtual server were a dedicated physical server. Keep in mind that the relationship between the physical server and the virtual server is not one-to-one. A single physical server can run hundreds of virtual servers.
In much the same way that costs vary if you purchase your own physical server, the price of the virtual server depends on its storage capacity and the speed of its processors. You pay more for extra data storage and additional processing speed.
For virtual servers, your provider will charge you for every hour the server is running, even if it never receives a request from a customer. If it were a physical computer, imagine that you are paying so long as it is plugged in, even if it isn’t doing much. There is a minimum you will pay each month because the virtual server is reserved for you.
Let’s look at a simple example for what a virtual cloud server could cost per month. Using today’s prices for cloud services from AWS, a virtual server capable of serving a million web page requests per month would cost just under 5 cents per hour. The total per month would be about $34. In this example, you’ve reserved that space on the virtual server expecting about a million hits on your page in a month…all for $34.
Another relevant model of cloud computing is the Serverless model. The folks at devops.com explain this well, stating “’Serverless’ denotes a special kind of software architecture in which application logic is executed in an environment without visible processes, operating systems, servers or virtual machines. It’s worth mentioning that such an environment is actually running on the top of an operating system and uses physical servers or virtual machines, but the responsibility for provisioning and managing the infrastructure belongs entirely to the service provider.”
As a result, developers simply write small, focused bits of independent code to accomplish a single task – like handling a login form, or completing a search. The service provider then runs the developer’s piece of code just when a user makes a request for that service. The service provider will automatically allow the appropriate number of these independent tasks to run simultaneously to meet demand. Efficiencies are gained because the provider is free to decide how to best utilize its infrastructure to serve requests from all of its clients. For a more detailed and technical explanation of the serverless model, check out this article from Network World.
In the serverless model, you pay based on the amount of time that your independent pieces of code run. You are charged by the second of computing power that you use, instead of how much memory and storage space used (as in the virtual cloud server model). As mentioned above, if there is no activity on your virtual server, there is still a monthly “rental” fee because the server is reserved for you whether you use it or not. In contrast, since the serverless service is charged based on its running time, if there is no activity, there is no charge.
Let’s look at a simple example for what a serverless server could cost per month using today’s prices from Google Cloud Platform. Let’s say you add a function (independent piece of code) that takes 1 second to run (like a search on your website) and transfers a modest amount of data back to the user (about 1/10 of a MB). That function runs 1 million times in a month due to user requests. The charge for that month would be just under $11.
Serverless services are often better for very large scale applications where you want to put the responsibility for meeting demand for your services in the hands of Amazon, Microsoft, Google, or whoever you choose as your cloud provider. With a serverless model, the services provided can scale globally without any action on your part. Your provider does all the work as your business grows. Further, it may be more affordable for some large scale applications. In our simple example above, the monthly price difference between the two models is under $25, but with a large scale application that $25 would be multiplied many times based on user activity.
With the virtual server model, you can still expand and scale as your business grows, but it requires you to maintain the virtual server. You have to consciously increase the storage capacity and tell it how to handle the increased volume. It is, though, a good solution if you have long tasks running on the server, as they can become expensive in the serverless model. Likewise, since a service provider may run software for several different customers on the same physical server, there can be challenges with bugs from “neighbors” impacting the availability or performance of you application. This can be a problem if you are working with sensitive data.
It’s hard to evaluate any service in general terms, which is why it’s so important to work with an app developer who understands the options and can provide salient advice. If you have an idea you’re considering, we’d love to help you think through it. Please get in touch.