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.