Are you looking to learn Serverless but need a little help in where to start? One of the best ways to get your head around a new technology is to dive in and build some example projects. But what are some nice and simple serverless beginner projects?
In todayâs article weâll go through three different simple examples of serverless functions you can build using AWS Lambda for your first trial with serverless.
By the end of this article you should have an overview of three serverless beginner projects, the steps youâd need to create them, and some ways that you can later extend them to learn more.
Before we jump in I should note that this article will be specific to AWS and AWS Lambda. The ideas can be taken across to other cloud providers but Iâll focus mainly on AWS specific terminology for simplicities sake.
For each project iâll give you the ideas, steps and a little inspiration, but the goal is not to give an in-depth tutorial of Serverless (thatâd take a lot more than one article). But donât fear, at the end of the article iâll reference some resources and how-toâs so that you can turn the ideas into reality.
Project 1: Build An Operations Function
The first project for you to learn serverless is for internal operations work. Now I know what you might be thinking: âWait what? Operations? Surely an API or Microservice is the best project to start with?â So let me explain why operations makes a lot of sense as a starting place for serverlessâŚ
Serverless is used heavily for operations to provide services within AWS that either donât exist as current AWS features, or are quite specific for your use case. For instance you can use a lambda function to schedule shutting down old or stopped EC2 instances or for cleaning up AWS untagged resources according to your companies guidelines.
That said, regardless of the popularity of serverless in operations the main reason operations is a good place to start as a beginner is: you donât need to string together lots of AWS services. Because on the flip-side, public-facing services such as APIâs need to configure something like an ALB to be exposed publically necessarily.
But of course you might be reading this and thinking âbut I donât work in a company that needs operations functionsâ. So it might be hard for you to imagine what operations functions might look like, let alone build one.
So letâs go through the details of an operations function you could build as your first lambda functionâŚ
EC2 Ops Lambda Diagram
*Project Description: * Build an AWS Lambda function that uses the built-in AWS-SDK, which comes pre-installed on all AWS Lambdaâs, to list all your EC2 instances, view the tags of the EC2 instances and terminate any resources that donât meet your companies tagging standards (real or imagined).
*Steps: *
- Setup a generic Lambda function
- Access the native SDK within AWS Lambda
- List all EC2 instances
- Terminate EC2 instances that donât meet your criteria
- Set the Lambda to run on a schedule
Extensions:
- Add CloudWatch Logs.
- Add CloudWatch Alarms.
- Add SNS integration to send email on termination.
When it comes to setting up your CloudWatch using schedule events, check out: How To Setup AWS Lambda Scheduled Events with Terraform for more details.
Project 2: An HTML Website
Okay, so maybe operations Lambda functions donât get you excited, I get that. So letâs take a look at an example thatâs slightly more complicated but more âreal-worldâ useful⌠and thatâs a serverless function that returns raw HTML.
Or in simple terms: a website.
Lambdaâs arenât often first to mind when it comes to building HTML websites. The reason is probably because there are better options for websites like using a straight-forward S3 bucket. That said, weâre in the business of serverless beginner projects, not building the most low-latency, cost-effective, uber-scale website.
But as I alluded to when we discussed operation functions, the reason I didnât suggest a public function, like an API, as the first project is because it requires some other AWS components. Why? Because Lambda functions on their own donât have public endpoints that you can access. Which means that if we want our website to be viewable we have a couple of optionsâŚ
- Attach an API gateway â The API Gateway is usually the go-to solution for exposes a Lambda function publically due to itâs heavy amount of features set.
- Attach an ALB â My preferred way to expose Lambdaâs publically is using an ALB, which has slightly fewer features but I prefer the simplicity.
- Some other hack⌠â There are other ways to trigger lambda publically, such as through the AWS SDK but invoking lambda via the CLI so requires credentials that we canât store publically (which is not going to work in our scenario).
But apart from attaching our public-facing component like an ALB or API Gateway, what are the steps weâll need to take?
Lambda S3 Website
Project Description: Build a Lambda that returns HTML to be used as a static site, such as a personal portfolio or for hosting documentation.
Steps:
- Setup a generic Lambda function.
- Setup an ALB that invokes the Lambda
- Respond with HTML from the Lambda.
- Attach a Route53 domain name to your ALB.
Extensions:
Project 3: A JSON API
Lambda DynamoDB
And our final project example for today is using AWS Lambda to build a web API. Building an API project is similar to a static website that we discussed in the last project. The only real difference is that the Lambda will respond with a machine-readable format like JSON, rather than HTML.
One way that you can extend your API example would be to also use a database like DynamoDB. But thatâs up to you whether you have the capacity to take on that complexity. I recommend DynamoDB because itâs popular with Lambda mainly due to itâs ability to scale incredibly well.
*Project Description: *
Setup a Lambda to return a JSON payload as a web API. To do this youâll need to setup a Lambda and also attach an ALB load balancer.
Steps
- Setup a generic Lambda function.
- Setup an ALB that invokes the Lambda
- Respond with JSON from the Lambda.
- Attach a Route53 domain name to your ALB.
Ways You Could Extend The Project
Get Building Serverless
Thatâs all folks!
That concludes our run through of the three different serverless beginner projects that should get you up and running with Serverless on AWS Lambda.
Iâm hoping that gave you some ideas and thoughts on where to start on your first serverless project. But before you do go dive into your code editor, here are some more articles that I think might be helpful for you when you embark on your serverless journey.
- Where (And How) to Start Learning AWS as a Beginner
- Master the AWS Lambda Console: A Comprehensive Walkthrough.
- 5 Important Reasons To Learn Terraform Before Cloud Computing.
- Serverless: An Ultimate Guide
Speak soon Cloud Native friend!
What did you (or will you) build as your first serverless project?
The post 3 Serverless Beginner Projects Ideas appeared first on The Dev Coach.
Lou is the editor of The Cloud Native Software Engineering Newsletter a Newsletter dedicated to making Cloud Software Engineering more accessible and easy to understand. Every 2 weeks youâll get a digest of the best content for Cloud Native Software Engineers right in your inbox.