The term of serverless computing becomes more and more frequently discussed. This serverless is not only a tech semantic (or we used to say buzzword) but in real-world really change how we develop and deploy products.
My background is a comp sci undergraduate with software engineering focus in my study. Yet those days of working with lines of codes did not become my main carrier right now. I am working under a Solution Integration company as a Solution Architect which more focus on Infrastructure and platform. So no more Java, Python, SQL Queries.. and welcome IOPS, Throughput, VMDK, and so on.
Yet right now with the introduction of new serverless approach it does change our approach a lot ( I mean it ). My “Solution-Architect” hat need to tell me that with this approach I need to see it from the point of view of the developer, which I think I need to “brainwash” myself to really look inside into my “Developer” hat.
So that goes, I go back to developer area which letting me to actually feel how the developer will utilize the resources that I may provide. And I found several things:
- Developer need to be creative, yet creativity will need resources — fast.
- Developer with their skillsets are a master in making something out of their codes & logic. But they are not necessarily understand about architecture and how to manage infrastructure. Its where DevOps actually become a trend.
- Development need to be fast, collaborative but all of those things need to be inside a budget.
Those three are the things that I found while I went back to learn coding which I try to catch up into several technologies that are not available back then. While my brain telling me to do something about it, Cloud approach actually enable me to have choices on my approach.
Disclaimer: On this writing are my experience only from my company partnership with AWS, so forgive me if its all about AWS. Maybe in the future I may write more things about GCP, Azure, and many other vendors.
Serverless in a nutshell is a service which AWS provide to their customer so that we “Developer” may actually use their service (cloud computing) without worry about need to understand the underlying infrastructure, even the OS parts. So what I need to do is basically focus on what I do the best — providing the code and then upload it to the AWS and voila its there. If it seems so magical, it is not actually but AWS make it so easy for us to code-develop-deploy and in my experience I could actually develop a working prototype of both Web Apps (Using React) and Mobile Apps (Using React-Native) under one hour, oh please take note that AWS have Free Tiers which I am using so my learning days are actually somehow free (I still need my laptop and internet though).
Some technology that I am using:
- AWS Api Gateway : this is the gateway on how user interact with my apps
- AWS Lambda : this is where my code goes — a microservice indeed
- AWS S3 : this is where I host my web & store files needed
- AWS Cognito : this is the user pool & authentication service
- AWS Amplify: this is the interesting library and toolchain to develop my app
- Github: as my free repository
- Node-JS — React: as my Web approach
- Node-JS — React-Native: as my Mobile approach
Some advantages that I see from serverless deployment:
- Serverless are so easy, especially we have Amplify and some other tools to use to deploy. I can just prepare my infra and directly deploy my code into it, and within minutes I can publish my apps to public.
- Microservices architecture enable me to actually decouple my apps, especially for my backend which have lots of services, so that I could manage it as I please without to build the entire apps. For example I create versioning on my api without have to worry any impact to my other function (or services).
- Cloud enable me to actually put my code so fast that I could actually host my development and production environment within minutes. And the bonus is that I actually pay only the resources that I use.
- This approach change how I deal with my costing, as the serverless calculate transaction rather than reservation of resources (notes: all the services in AWS have different charging matrix so please do have review beforehand or contact your consultant). Not to mention they have this free tier which are quite generous for early adopter.
I will not write so much in this first writing and as the next story I will go deeper for each unique traits of the serverless and some example that I do. If you have any input or comment please do not hesitate to do so.