Raywon Kari - Published on December 19, 2020 - 7 min read
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:
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 :)
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.
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.
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.
That's basically what managed services are!
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.
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.
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.
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
In this model, the organization is making use of Infrastructure, as well as Platform as a service models offerred by the Cloud Platform Providers.
In this model, the organization is making use of Software as a service models offerred by the Cloud Platform Providers.
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.
Following are some tips and tricks:
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! :)