post-background

What is Serverless?

Views on Serverless from an (ex-)Serverfull person.

Raywon Kari - Published on December 19, 2020 - 7 min read



Background


Last 4+ years in the software industry, I have been working with infrastructure, containers, automation, architecture, servers etc, thanks to Sinch and Fortum, until I joined MatHem.se where I have been exposed to running Serverless workloads.

Coming from working fully on the server side, and then working on serverless platforms, this change has opened up new thoughts and ways to see the pace of innovation and how these diverse set of technologies can help people build ground breaking platforms.

In this blog post, I am going to share few of my learnings, experiences, and the differences I learnt between these two high level ways of using Technology. Such as:

  • What are managed services?
  • What is Serverless?
  • Holistic view on running Serverless vs Serverfull workloads
  • How to get started with Serverless?

Serverless is a buzzword in recent times, which basically means no servers, and on a lighter note, to get a better context awareness, I took the other side as Serverfull :)



Managed Services


Back in the days, when consulting companies were on the boom, many of the product developers used to outsource the tough parts of product development, such as maintaing data centers, configuring servers, deploying & operating the applicaitons and so on.

When Virtualization was invented and bought into lime light, it turned out be a great platform to enable running servers in more user friendly manner, without the need to spend hours and hours of time with wiring the servers, organizing cables etc. This was a great deal to the consulting companies, so they could run the data centers more efficiently in a cost effective manner.

If we fast forward to 2020, the companies which are in boom right now are the Cloud Computing Platforms, such as Amazon Web Services, Microsoft Azure, Google Cloud Platform etc, being the major stakeholders among all.


"Cloud Platform"


If we do a head-to-head comparison, the consulting companies back in the days, are now these Cloud Computing Platforms, which are doing the heavy lifting by providing services to the Product developers. The differences are that, Cloud Computing Platforms are API driven, meaning product developers can build and run their own services using these APIs and back in the days it was people who used to take in requirements and used to work them independently.


"Back in the days"


Let's take an example to better understand the workflows. Back in the days, if I was the product developer, I used to ask for a bunch of servers with a particular configuration, and used to hand over my product for deployment and the consulting company will do the configuration and run it. Right now, I do pretty much the same thing, but instead of handing over to a person, I do that via an API i.e., simply calling an API and saying this is my application, configure it this way and run it this way. Its not that easy as it sounds, but you understand the workflow.


"CurrentTrends"


That's basically what managed services are!



Serverless


After the Cloud Computing Platforms were on the boom, a new paradigm shift has been observed, i.e., Serverless a.k.a Software as a Service (at least I say it ;))!

If you, as an organization are only using Software as a Service, then its Serverless!

From our earlier examples, Cloud Computing Platforms were offering Infrastructure as a Service and Platform as a Service business models. This new paradigm shift is often called Software as a Service.


"Layers"


The key difference with SaaS is that, the end user only needs to look at what he/she wants to use. Everything else is taken care by the provider, which involces lot of the heavy lifting such as monitoring, patching, updates, security etc.

More information on different cloud computing service models can be found on wikipedia.



Holistic view


In this section, I will try to describe a very high level overview of the thought process and workflow differences if we were to run our own platform versus if we were to run only a serverless platform. Later in the section, we will also look at some of the PROs and CONs of the embracing a serverless platform.

Conway's Law

Before diving into those, let's first take a quick look on Conway's Law. On a high level, the law states that, an organization building a software platform, will resemble its organizational structure. The explanation is that, in order for a function to work, multiple authors must communicate with each other and share feedback. Therefore, the whole of the platform, which is basically a collection of such modules, is a result of the various teams working together and hence, the platform resembles its structure. More details info can be found on wikipedia

Serverfull Platforms

In this model, the organization is making use of Infrastructure, as well as Platform as a service models offerred by the Cloud Platform Providers.

"Serverfull"


Serverless Platforms

In this model, the organization is making use of Software as a service models offerred by the Cloud Platform Providers.

"Serverless"


If we correlate Conway's Law with both Serverfull and Serverless platforms, we can easily imagine the number of reduced interfaces. That's the way to go forward to reach market quickly.

PROs of Serverless Platforms:
  • Most important of all, you have an idea, the only thing can happen next is, building it. No discussions, approvals, waiting for some one else to deliver something else, fire fighting, frustrations etc.
  • Second of all, Developer experience. Its great and satisfying, I have been there.
  • Third of all, couldn't ask for a better methodology to embrace you build it, you run it ideology.
  • The pace at which we can deliver products to the market.
  • Quick feedback loops between customers and developers.
  • Ability and speed to fix/rollback in case of production issues.
  • Everyone is a developer. No differentiation in terms of roles.
CONs of Serverless Platforms:
  • Learning curve can be steap.
  • Its still growing, so knowledge base is limited.
  • Limited ability to influence cloud platform providers over feature development priorities. They own the platform, we are end users.
  • Hard to move to other platforms.


Getting started with Serverless


Following are some tips and tricks:

  • Stop thinking about vendor lock in! Even if you run the whole platform yourselves, you merely can change anything / move out to some other architecture. The benefits of going serverless all-in are immense. In fact, its easy to move out to some other architectures if you are in Serverless.
  • Start believing that you are going to Serverless all-in!
  • Start communicating with your Cloud platform provider about your idea to go Serverless. They will help you!
  • Start abstracting your architecture into modules and establish a plan of action of migrating these individual modules to Serverless one by one.
  • Start investing in serverless tools.
  • Start embracing open source software. Its immense and very helpful!

Being a serverfull person, these were my thoughts of few months of experience with serverless. I will evaluate these concepts in future to see if my thought process still remains the same! Stay tuned! :)



Raywon's Blog © 2020 - 2021

Built with Gatsby & React