In this article I'll be talking about how to become great Serverless developer specially working on AWS.
📋 Note: This article is high-level, where I try to show the different perspectives to improve your kick-off with AWS Serverless services. If you want deep-dive ones I have written many other articles.
Serverless is going viral 🚀, most of the companies they are either fully adapting it in their architectures, or they have a big part being used as hybrid.
Let's talk first what is Serverless? Well Serverless means their are no servers, but is this the case? Okay, so where are our code? or application running? hmm.. let's clear things up; there are servers behind the scenes but the idea is you're not managing or doing anything to them, you don't have any related work with the servers or duty to keep them up and running. Whereas all this is taken care by your cloud provider (AWS in our case).
So let's get back to our topic, "How to become a Serverless Ninja" (Term Ninja stands for as expert 😃). I will split the process into multiple points. Without further ado lets kick-off with the main part.
Here are some of the points that helped me in becoming a good Serverless Engineer. Some of the points might be a general ones but at the end of the day they should work well, specially when you want to work with AWS Serverless Services.
- Get familiar with the AWS Services 📝
- Use Frameworks (Serverless, SAM) 🧳
- Read Documentations "a lot" 🕵🏼♂️
- Build small POCs 📐
- Think like Serverless 🛸
- Migrate, Update & Refactor 🎢
Get familiar with the AWS Services 📝
Always start high level, read about AWS Services, learn them, understand as much as possible before any hands-on. In this step all you have to do is watch videos, buy some courses and start learning all the AWS Serverless offerings. (They are a lot 😅)
Once you are familiear with some of the Services that allow you to start building a simple running applications, now it's time to build something simple. Let's say you got familiar with Lambda, Api Gateway and S3 bucket, build a simple application. You can build a simple API that takes file type and triggers a Lambda where you will upload the file to S3 Bucket. This is a simple example which allows you to build in a nice way.
Use Frameworks (Serverless, SAM) 🧳
Start uisng frameworks and libraries, whenever you see yourself stable to start diving deeper after building our first simple application, its time to build something using Frameworks. Serverless and SAM are very useful frameworks that can be used. Since most of the companies use frameworks in their daily routine its very important to have very good knowledge with their best practices and patterns.
Read Documentations "a lot" 🕵🏼♂️
Read a lot, always reading technical articles related to what you are working is a good way to wider your knowledge and see things in different perspectives. Start reading open source code and documentations, there are a lot of articles online that are just away from you by a click of button.
Build small POCs 📐
My favorite point, start building Proof of Concepts. After having a deep knowledge and hands-on using different frameworks. Now its time to start building some advanced working application using all Serverless techniques. I will mention some of the AWS Services that can be useful in this part.
Start using EventBridge, Step Functions & SQS. These are nice way to start seeing how Messaging in Serverless works, how different components connect and communicate with each other. Feel free to start reading my Series of blog posts to have a deeper knowledge in this specific point. (Messaging with Serverless)
Think like Serverless 🛸
It's time to start thinking how things need to be done in the serverless way. After having good experience with the AWS Serverless services its time to start finding solutions and alternatives on how to build features by using different types of serverless services.
Migrate, Update & Refactor 🎢
Last but not least, since now you have joined the Serverless club, its time to start migrating and switching anything that can be done in a better way using serverless architecture.
Don't migrate all in once, try to find solutions at first for small parts, then build concepts to deliver the features using serverless approach.
Conclusion:
I tried to divide the process of becoming an AWS Serverless "Ninja" to some short points, that could help you to become or even be inspired to add Serverless to your skill set.
Finally, I believe Serverless is the future, more and more services are being released everyday that make us working complex features easier and straight forward.
Thank you for reading this article 🙌
Are you interested to get more content like this? Well here is my LinkedIn profile, feel free to connect with me or even ask anything you need to know more about AWS Serverless Architecture.
Top comments (10)
Using AWS for serverless applications is so....2017 dude.
Serverless isn't the future. It's been here for at least 5-10 years.
Sorry, not a fan of this article. It broadly mentions a few things, hypes AWS a lot, but in the end, anyone wanting to understand serverless , reading this article doesn't help them get there at all.
You didn't even explain a serverless stack in AWS, or what steps to set one up.
If you're going to write about AWS, you should know AWS.
You should be able to say
For a small serverless application you can easily run a build locally and deploy the files on S3 and use it to host a static site that way.
Or if the site requires data from your database, then you can setup an EC2 with a MySQL server and use that as the backend endpoint for the S3 files to load from.
If the site is larger, maybe you'd use AWS Lambda with API gateway for an seo friendly url so you can load the data through there as it supports scaling of requests.
OR perhaps it's enterprise level and you need to use RDS for the databases, or Cloudsearch, and integrate these with a fully load balanced system and again with Lambda/API Gateway so your "serverless" endpoints.
Or you're nuts working with AWS so you implement cubernetes and their yaml nonsense and have it auto implement a dozen services and tools you have no idea how to manage.
Yea...that's how i'd approach writing about using Serverless with AWS.
In reality though...screw all that. Use algolia.com for your database, and deploy your static frontend using Digital Ocean apps, Github pages, netlify, heroku, hell anything other than AWS's massively bloated systems.
The main idea of this article is to show on how to become good engineer specially when working with serverless services on AWS. If you want to go deep on some of the services I have several articles where I explain with good examples and deep dives. And serverless is here and will remain :) if you're not using it, but for sure there are a lot of startups are using. And like I said this article is high-level just giving the best approach to start working with serverless services 😃
You literally wrote an article here sir - I mean the version I would have loved to see.
Thanks a lot.
Just followed you. Mind if we connect better sir? Prolly via Linkedin or Twitter.
Kube is not AWS matey ❤️
I think SAM is a better approach in some cases than CDK, but how about neither. For my friends in Typescript & AWS, try SST and thank me later.
It's Vercel, but on your own AWS stack.
💯 Serverless isn't best when you have millions on traffic
But when you're startup or just some side project Serveless is your best bet,
it is cost effective, can scale to thousands or millions, easy to deploy & manage
They only ditched it for one specific project where serverless made no sense (tossing video frames across buckets and lambdas).
More details on the frameworks would be great - that's something I've never got on with, as we just bash out some python and run it :)
Yes sure,
Here are some of the links:
SAM: aws.amazon.com/serverless/sam/
Serverless: serverless.com/
I have written several articles where I cover some wide range of services, like SQS, Step functions, SES, EventBridge and many more, using the Serverless framework, feel free to give a look to those as well :)