Are you new to serverless? Did you spend all your time working with containers or some legacy application on-prem? Did you read or hear about serverless but have no idea how to start? Do you have no connections in the serverless world? This blog post will help you to begin your journey.
I started using serverless services many years ago when it was a new toy. There was not so much documentation or examples. I remember spending a lot of time with colleagues experimenting with CloudFormation to find the correct configuration.
Luckily for all of us, this is not the case anymore, AWS documentation improved, and there are many examples and frameworks to use. Still, there are many of us that, for work-related reasons, are still working on container-based applications or even in some legacy applications on-premises. There is nothing wrong with that. In the end, this is what put food on our table, but sometimes I got asked, "I would like to try out serverless, but how can I start with?"
Let's start with the best resource people:
The global AWS Heroes program recognises individuals who are prominent leaders in local tech communities. Heroes help others learn about AWS by sharing knowledge via blog posts, presentations, social media, and open-source projects; or by organising events, Meetups, and workshops. You can find the list with their super-power here.
The AWS Community Builders program offers AWS technical enthusiasts technical resources, mentorship, networking opportunities, and emerging technologies thought leaders who are passionate about sharing knowledge and connecting with the technical community. You can find the list of people here.
One way to keep up to date with news, events or announcements is to follow them on Twitter.
There are many of them but a good starting point is to follow the Serverless DA team:
You will easily find the connections to serverless Heroes and Community builders from there.
There are so many of them for all levels and I think the main as reference are:
From two AWS Hero Yan Cui and Jeremy Daly, a podcast where you can hear other people's experiences in the serverless topics and more.
Usually, some specialised people help the team deploy the infrastructure in container-based applications. However, the move to serverless could be challenging for many, especially the concept of "you build it, you run it".
Many frameworks will help you deploy your infrastructure quickly. The most famous for AWS are:
- AWS Serverless Application Model (AWS SAM)
- AWS Cloud Development Kit (AWS CDK)
- Serverless Framework
- many others
They all provide shorthand syntax to generate your infrastructure generating Cloud Formation templates. If for some reason, the framework does not support a service or a specific feature, it is always possible to use plain Cloud Formation.
You can integrate them with your preferred CI/CD workflow like GitHub, GitLab etc.
Regarding monitoring and observability, AWS services are integrated with:
- Amazon CloudWatch - collect logs, metrics and events, and you can visualise them with a custom dashboard.
- AWS X-Ray - helps developers analyse distributed applications.
AWS X-Ray is not the best tool out there. You still need to write code to instrument your service, and because all code is a liability, you want to avoid it. There are many options out there, and my advice is to avoid all the services that are fancy CloudWatch systems that require writing code to instrument services. Many of them do not show the input or the output of the services out of the box. Sometimes, they cannot collect data when you integrate multi-services, making it impossible to debug and/or find the cause of a production issue (fancy CloudWatch).
In my personal opinion, the best are:
When we talk about Serverless, there are many services to mention and talk about it. Serverless is about using various services and techniques to solve a problem. Still, because this blog post is about starting, I guess the most famous service is the AWS Lambda, the event-driven, pay-as-you-go compute service that lets you run code without provisioning or managing servers.
Lambda supports multiple languages through the use of runtimes like to mention a few:
Whatever is the language, the infrastructure is always the same, and for this, there is the best website ever with many examples that present integration with two or more AWS services.
You can filter by:
- Frameworks (AWS SAM, AWS CDK, Serverless Framework, etc.)
- Language (Rust, Node.js, Python, TypeScript, etc.)
- Services (Lambda, S3, SNS, SQS, APIGW, etc.)
ServerlessLand is an excellent resource because aggregates, not just examples that are helpful to experience first-hand what is possible with serverless, but also videos and articles and much more, making your serverless journey smoother.
In the past years, I have realised that Serverless is not difficult for experienced people because it is our job to grasp continuously new concepts like Event-driven architectures, microservices, DI, DDD, etc. What I saw as a recurrent problem is the how to start, hands-on examples and people to follow.
I hope I have helped you join the AWS Serverless community with this post. You are not alone. There are many people to follow, and also a weekly newsletter maintained by AWS Hero Jeremy Daly to stay up to date on using serverless, get insights and much more from experts and builders in the serverless community. Another one is The Serverless Mindset a weekly newsletter where Marco Troisi shares easy tips and strategies for getting the most out of serverless.