Serverless architecture: The uprising
Serverless architecture, while being technically wrong because actually there are servers involved its not just ours, anyway this term has got a lot of hype recently, so we thought we should dive into this and have a look of what is going on in here, and we would have to admit that we found pretty interesting things, so as always we will be giving you our insights as follows in very simple human language without those alien technical words.
Just imagine for a moment that on one instance you got this great idea to create an awesome software system. So you go to this website where you can buy different pieces of
software systems like Security, User management, authentication, logging, testing, etc. So you bought different pieces of the software and put your piece(software code) in it and BOOM ! you got your awesome software running live, ready to size up virtually up to any scale(up to the limits of the provider).
Are you serious ?
Yes, its no imagination any more companies like Google, Amazon, IBM, Microsoft, Twillio, etc have products with the help of which this is now made possible. While it is not as easy as buying a cake, but the combination of services offered by these companies can make it possible although you would need to configure them. But its bound to get the way we imagined in the near future.
Following is the list of such products / services offered by these companies in case you want to get your hands dirty.
Google Cloud Functions from Google
AWS Lambda from Amazon
IBM Cloud Functions from IBM
Twilio Functions from Twilio
Serverless Auth from OAuth
(and many more....)
So, What is it ?
Its a design followed in software development where the main concern is development of the core of the system/product, without worrying about the servers, the operating system, size of the system in terms of how much it can handle (scalability), etc.
Ok, so now you got the general idea, but millions of questions would be circling around your head, but before that if we want to know where we are we should first know where we came from i.e time for some history lesson
Long time ago if we wanted to create a software system live on the internet, everything was done by ourselves, it was a DIY era i.e we would buy server hardware, setup operating system, required softwares, etc. Also after they are setup management was required on ongoing basis, hardware and software upgrades. So it was a lot of work to do for making a software system live.
Then came the era of Cloud and in conjunction with virtualisation they took over a lot of heavy lifting to their shoulders. We are no longer required to buy actual hardware to setup servers, we could buy virtual servers which were managed by the providers, so no maintenance, no upgrades no nothing, everything was done for us by the providers of this infrastructure - so the term "Infrastructure as a service(Iaas)". But still there were a lot of things to do other than focusing on our core product/system like setting up of OS, required software dependencies, authentication, logs, monitoring the system in case of failure and ton of other headaches.
Then came our today's hero: Serverless architecture, it is another step in evolution, moving our focus more towards the core of the product / system rather than worrying about the usual requirements.
Now that sounds interesting! tell me more.
So, does that sounds interesting already !, here is some more of it.
When the systems are designed this way they are robust and fault tolerant and that is natural, as experts are in charge of handling them.
In traditional cloud systems after we buy servers and other stuff, weather they are used or not we have to pay for them, but this is not the case in Serverless Architecture, here we only pay for the time our software code runs so that results in substantial savings of cost, energy and resources.
Also this kinds systems can virtually handle any amount of load, i.e it can scale in size whenever required. Why ? because they are not inside any container(server) - well actually they are, but its just that these servers are huge !.
Using this architecture with the latest technologies of today like SPA's(click here for more details), Android and IOS apps, removes the need for an always on component i.e server that was a requirement in traditional software systems.
But, its not all sunshine and rainbows, there are some dark areas too like,
As things are separated and not run while idle, it takes up a tiny bit more time than it would take in a tradition always on server architecture.
Its difficult for the system to remember some frequently used things. In traditional always on server architecture, as the server is always on they can store these frequently required things in their memory, but in serverless architecture, well there are no servers (that are dedicated and always on), so how do you remember ? Certainly there are ways around them and they are improving.
But, How does this all works ?
Well, that is a whole another topic to discuss, lets keep it for some other day.
That's it for today !
We came to know about a lot of things today, lets take a deep breath and allow it to sink in.
Please leave a comment below if you have something wandering around your head, may it be something crazy. Also please let us know if you like this post and anything we need to improve upon and what kind of blogs would you be interested in future. You can also leave a message in the chat box.
We cannot fix a purpose to life, that's the beauty of it ! Yes there can be certain things that have to be done.