What Serverless Means: Separating Fact From Fiction
There's a lot of talk about the serverless paradigm today, so what exactly is truth and what is fiction? We take a look.
Join the DZone community and get the full member experience.Join For Free
There are a number of myths about what "serverless" really means. We dive into the top four myths of serverless and explain what it really means for enterprise apps.
Serverless is a term that is being talked about a great deal lately, and with good reason. It's a new architectural pattern that has wide-ranging implications for the development of applications. Yet there is also a lot of misinformation regarding serverless, what it is, and what it means for enterprise apps. Here, we're going to take a look at some of the myths associated with serverless and separate the fact from the fiction.
Myth #1: Serverless Means "No Servers"
One question that I consistently hear when I discuss serverless with anyone new to the topic is, "But there has to be a server somewhere, right?" And the answer is, of course, there is. Servers are very much involved at some level in a serverless architecture, but their very existence is not exposed to the developer building an application.
Myth #2: Serverless Is Another Name for Functions as A Service (FaaS)
Many people, when hearing the term serverless, immediately think of Functions as a Service (FaaS). There's good reason for this. The introduction of serverless as a concept coincided with the introduction of FaaS, making them linked in a lot of people's minds. FaaS is the most prominent implementation of serverless and a great tool for building serverless apps, but it is not the only one.
Myth #3: Serverless Means I Can Get Rid of Operations (NoOps)
While serverless does indeed change the focus of DevOps, it doesn't remove the need for it. What it does do is change the focus of DevOps from the infrastructure to the app. With Serverless, DevOps is focused on deployment pipelines, CI/CD flows, monitoring of the application, etc. What is no longer necessary with Serverless is provisioning of hardware or cloud instances, OS-level tasks, and monitoring of resources.
Myth #4 Serverless is... (Docker/Kubernetes/Lambda/etc.)
Serverless isn't one specific technology. It isn't Docker, Kubernetes, Lambda, or any of the other technologies that are often talked about in serverless contexts. These are all technologies that enable serverless, but they are not, in and of themselves, serverless. Serverless is an architecture, a way of approaching apps that transcends any single technology.
So What is Serverless?
To put it simply, serverless is any cloud-native service for implementing application logic that allows the developer to focus on the app and not think about servers. Let's unpack this:
Serverless is Cloud-Native
For something to be truly serverless, it must exist in the cloud. It's not a solution that can be fully realized utilizing on-prem architectures, because, in order to be truly serverless and allow the developer to not think about servers, it can't exist within the limits of on-premise hardware. Installing a serverless platform on local hardware still requires some thought to be given about servers at some point. Even if such a platform were to be fairly over-provisioned, the resources available to the developers within the organization would still be finite.
With cloud solutions, resources can be provisioned on demand, are fully redundant and load balanced, and scale based on the needs of the application. In a serverless context, resources should not be limited by physical hardware, but rather should be perceived as limitless, and appear as instantly available to developers.
Serverless Is for Developing Application Logic
Without the idea of building application logic, serverless is just another buzzword. In building any client-facing app, some tasks always need resources beyond what the client can provide. Traditionally, this logic is offloaded to a server, and this is no different in a serverless architecture. Whether it is offloading complex functions that require scalability, services that a client may need such as access to a server-side data store, or some kind of messaging, serverless is meant to be a solution for application logic that doesn't execute on the client.
Serverless Is for Focusing on The App, Not Servers
Here the key difference between serverless and other architectures comes into focus. Serverless enables developers to focus their time and energy where it's most needed — on building the app —rather than thinking about resource needs and concerns. With serverless, there's no provisioning, no managing of server resources, no thought to high availability, and no concerns about scale. By removing the overhead of infrastructure and resources, developers can focus more on the particulars of the app. This both saves a substantial amount of time, and improves developer productivity by allowing greater focus on what's important.
What Serverless Means for Enterprise Apps
So what does serverless mean when it comes to building enterprise apps? Serverless for enterprise apps is all about delivering value and enabling developer productivity. You can watch this webinar recording to get a better sense of this.
By removing infrastructure and resource concerns, serverless allows developers to focus on value and user experience. Because there's no need to worry about resource and scaling needs, serverless allows developers to focus on what makes their app different and unique and spend more time on what provides value and less time on technical hurdles.
Serverless also enables developer productivity. Because there is no provisioning of resources, there is no waiting on IT/DevOps to build an app and deploy it. This removes a common bottleneck from developing applications and leads to shorter development cycles. Additionally, serverless encourages small, atomic units of code and configuration-based services that lend themselves to frequent, low-risk iterations. This makes serverless conducive for agile and lean methodologies.
A Serverless Platform
To reiterate, serverless is any cloud-native service for implementing application logic that allows the developer to focus on the app and not think about servers. Or, to put it another way, serverless allows application developers to focus on the application logic rather than what kind of resources are needed to run the application.
Published at DZone with permission of Michael Salinger, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.