
Build a serverless auction app with six lambda functions, an auction service, API gateway, DynamoDB, and S3 uploads. Secure with a JWT authorizer and enable notifications via a decoupled workflow.
Explore serverless architecture fundamentals, including pay-as-you-go models, fully managed services, auto scaling, and language-agnostic options, with practical use cases for APIs and data processing.
Explore the Cervalis framework, a free open source serverless platform for deploying and debugging functions across AWS, Google Cloud Platform, and Microsoft Azure using infrastructure as code.
Explore real-world serverless deployments with Cervalis on Amazon Web Services, including Coca-Cola's vending savings, Netflix's massive video streaming, iRobot's cloud robots, and Vogue's photovoltaic platform.
Discover more valuable content on full stack development, ai, career development, growth, startup life, and teaching style on my new free YouTube channel; subscribe for value.
Explore microservices architecture by contrasting monolithic design with domain-based services, API gateways, and independent scaling, deployment, and technology choices.
Discover the AWS free tier for new users. After the free tier, Lambda costs 60 cents per million invocations, and database reads at one dollar per million.
Install and verify Node.js and npm, ensure the latest LTS version, use npm to install dependencies for your project, and confirm with node --version before moving on.
Install the latest AWS CLI (v2) on your machine to use this framework efficiently, then verify by typing aws in a terminal.
Install the Serverless Framework CLI via npm for easy installation, management, and upgrades; then verify the setup with the version command and consult the getting started docs.
Configure the AWS CLI by creating a new IAM user with programmatic and console access, attach administrator policy, capture access keys, and sign in using the Ireland region.
Learn to set up AWS budgets and alerts to prevent unexpected charges by using the billing dashboard, create a monthly budget, and configure alerts for actual and forecasted costs.
Learn to use Posman to send requests that trigger lambdas for testing, store endpoints and tokens in variables, and manage development to production environments with Bowsman and collections.
Connect with the serverless framework bootcamp instructor on Twitter and LinkedIn to access free videos and coupon codes for courses, and meet up at workshops or meetups.
Set up a dedicated course folder and create your serverless project with Cervalis create using a template, then name it auction service and run npm install.
Explore the service project structure in yaml, covering service metadata, provider settings, functions, events, and plugins, with a focus on bundle and custom parameters, indentation, and stage variables for deployment.
Deploy your application for the first time using Cervalis Seelie with AWS credentials and a defined region; view the resulting CloudFormation stack, S3 bucket, Lambda, and API Gateway endpoints.
Learn how to remove your serverless stack with the srs remove command, and use dashty for more details to stop paying for unused resources.
Rename the hello function to create auction and expose it as a handler for a POST /auction through API gateway. Understand event and context, stringify responses, and deploy with serverless.
Create an auction object from the request body by extracting the title, setting status to open, and recording created at as the ISO string; redeploy the lambda function and test.
Explore how DynamoDB, a fully managed AWS NoSQL database, uses partition and sort keys, secondary indexes, and on-demand or provisioned capacity to deliver fast, durable performance.
Create a DynamoDB auctions table using infrastructure as code in the serverless YAML with the Cervalis framework, using CloudFormation syntax to define attributes and a partition key id, then deploy.
Learn to insert an auction into a DynamoDB document client table by generating a UUID v4, using the AWS SDK put operation, and testing via Postman.
Define IAM role statements to grant lambdas only the DynamoDB actions they need, using Serverless Framework, region and account ID pseudo parameters, and deploy to fix access denied errors.
Organize serverless.yml by moving iam statements and resources into separate yaml files under a resources/iam directory for easier multi-environment management and import them with the serverless framework.
Define environment-specific DynamoDB tables by embedding the stage into the name with serverless.yml custom variables and intrinsic functions. Expose the name via environment variables for seamless multi-environment deployment.
Avoid Cervalis offline for most development, as local emulation with Express and API gateway mismatches real cloud behavior. Instead, embrace Cervalis and redeploy only changed functions to stay productive.
Learn to use Middy to compose middleware for AWS Lambda, including http json body parsing, event normalization, and declarative error handling for auction service CRUD.
Develop a get auctions endpoint to return all auctions from the DynamoDB table using a scan, with a new handler and plans to switch to querying.
Implement a get auction by id operation in a serverless Node.js AWS project, using a path parameter id to query the auctions DynamoDB table and return the item.
Create a common middleware in a serverless node.js project by wrapping handlers with a reusable library, allowing shared middleware across endpoints and easy per-handler customization.
Place a bid on an auction using a patch endpoint that updates the highest bid with the bid amount, while laying groundwork for future authentication.
Fix bid placement by fetching the auction by id to confirm it exists and that the bid exceeds the highest bid; reuse get auction by id logic and handle errors.
Create a lambda function process auctions triggered by an event bridge schedule to run every minute. Deploy it and monitor cloud watch logs for real-time feedback on auction processing.
Create a global secondary index on DynamoDB using status and endingAt to query open auctions by end date, enabling automated closure after one hour and cost-efficient queries.
Identify ended auctions by querying the secondary index for auctions with ending date in the past, then update their status to close in a subsequent step.
Close auctions by updating their status to closed in a document client with a close auction function, handling reserved words and performing parallel updates in a serverless Node.js AWS workflow.
Implement validation to prevent bidding on closed auctions, returning a forbidden error when auction status is not open. Redeploy to enforce the rule in the place bid function.
Modify the get auctions endpoint to filter by status using a query parameter and a DynamoDB global secondary index on status and date for faster, cheaper queries.
Validate get auctions status with a json schema, define status as an enum with a default, and apply a validator middleware to enforce the schema for query string parameters.
Implement schema validation for the auction lambda to require a title string in the request body, using a nested json schema and the validator middleware.
Apply schema validation to the place bid lambda by ensuring the request body contains an amount; create a place bid schema, import it, and validate inputs before testing.
Enable authentication and authorization for a microservices setup by signing in with username/password or social providers, issuing JWTs, and validating them via an API gateway authorizer for auction operations.
Deploy an authentication service with Auth0 to authorize users for an auction service and future apps, hosting data in the EU to align with the EU data protection act.
Create an Auth0 application as a single-page web app, and configure localhost callback. Set allowed web origins, enable password grant, and use single sign-on with Google or Facebook for production.
Create a test user and obtain a JSON Web Token with curl to authenticate against the auction service, then store the token in an environment variable for testing.
Deploy the auth service from a repository template, configure a lambda authorizer in API gateway, manage secrets and region, and verify authorization by testing private endpoints with tokens and claims.
Protect the auction service endpoints by configuring a lambda authorizer using stage, region, and account id from parameters. Test authorization with a token in Postman and save the endpoints.
Assign the seller email as sellerEmail when creating an auction by extracting claims from the json web token in the authorizer context, then redeploy and test with valid tokens.
Learn to specify bidder identity and implement validation to prevent self-bids and double bids in a serverless auction app.
Set up a notification service using the service-based template from GitHub in the same directory as the auction and auth services, install npm dependencies, and configure the West region.
verify an email address in aws ses to enable sending emails, then confirm the inbox receipt and see the status change to verified, allowing future emails from that address.
Rename the existing function to sendmail and define it to send emails using recipient address, name, title, and body, then invoke manually for testing and deploy the iam role.
Set up AWS SDK client, configure destination, body, subject, and sender; deploy and send test email, then explore a message queue approach for sending emails in the next lecture.
Learn how Amazon Simple Queue Service (SQS) decouples microservices with scalable message queues, enabling multiple producers and consumers, standard and fifo queues, dead-letter handling, and usage-based pricing.
Provision an AWS SQS mail queue via CloudFormation, expose the queue ARN with GetAtt, grant IAM permissions, wire a one-at-a-time Lambda trigger, deploy, and test.
Learn to manually send an SQS message to trigger a serverless email workflow, verify the sendmail lambda logs, and confirm the message is queued and processed by the notification service.
Export the mail queue URL via cloud formation outputs to enable the auction service to post messages, while gating production deployments on the notification service.
Import cloud formation outputs into the auction service with serverless framework variables, set environment values for the mail queue, add IAM role statements, redeploy, and prepare to send emails.
Learn how to notify seller and bidder when an auction closes using the serverless framework with node.js and AWS, building and deploying email notifications.
Handle the no bids case when an auction closes by notifying the seller and avoiding bidder alerts.
Uncomment the events for the EventBridge trigger in the process auctions, and redeploy your application so the front end works with the lunda function that runs every minute.
Set up an s3 bucket and lambda function to upload auction pictures, configure bucket policy for public read, and deploy the end-to-end image upload flow.
Learn to configure Amazon S3 lifecycle rules to auto delete uploaded pictures after one day, reducing storage costs by updating the auctions bucket YAML and redeploying.
Upload an auction image to Amazon S3 by validating the auction ID, decoding base64 to a buffer, and saving it with an auction ID based key.
Wrap the image upload with middleware and a try/catch, log errors, and throw an internal server error back to the caller.
Create a dedicated function to set an auction's picture URL in DynamoDB by updating the item with a document client, supporting testability, and return the updated auction.
Validate auction ownership by comparing the uploader’s email from the JWT authorizer with the auction seller, returning a forbidden error when they don’t match.
Learn to validate a base64 request body using a JSON schema and medium validator middleware, handling empty bodies and edge cases with regex and practical testing.
Explore a front-end demo of an open-source auction app, with login or signup, bidding, creating auctions, email notifications, and a countdown timer backed by an auctions API.
Enable cross-origin resource sharing for the auction service by configuring api gateway options and applying plug-and-play middleware in lambda handlers to allow cross-origin requests; restrict origins in production.
Clone auctions front-end repository, install dependencies, configure variables in a .env file (refresh rate, auction endpoint, domain, client ID), then start the React app on port 3000 to view auctions.
Ever felt like you would like to build a back-end application that can handle millions of users, but you were terrified by the idea of managing (or learning how to manage) the infrastructure behind it?
Ever felt like you would like to focus on delivering valuable features, rather than making sure your services are up and running?
Ever felt like you are paying more than you should be?
Good news!
Serverless Architecture takes the pain of site reliability off your shoulders. With Serverless Architecture, you and your team can focus on feature development. Your application will scale effortlessly, serving users reliably. You do not need to be an infrastructure expert to serve an application at scale. With Serverless, you only pay for what you use.
Serverless Framework revolutionizes the way we develop Serverless applications, by providing a developer-friendly API that supports dozens of cloud providers including Amazon Web Services, Google Cloud Platform, Microsoft Azure, and more.
More than that, Serverless Framework intelligently helps you manage your infrastructure as code (IaC), which eliminates the chance of paying for services that are not in use.
With an active community and a rich ecosystem of plugins, you can get things done at lightspeed and without boilerplate code.
Serverless Framework is language-agnostic, which means you can use the language and runtime of your choice (Node.js, Ruby, Python, Go, C#, Java, etc).
With over 450,000 downloads per week and x5 growth over the past two years, demand for Serverless experts is on the rise. It is one of the most in-demand skills in the market.
___
In this course, you will learn how to develop reliable and scalable Serverless applications, following the microservices architecture. This course will be 100% hands-on, and you will be developing a real-world application;
REST API and CRUD endpoints (AWS Lambda, API Gateway)
Data persistence (AWS DynamoDB)
Message Queues for cross-service communication (AWS SQS)
Scheduled event triggers (AWS EventBridge)
Cloud stack management (AWS CloudFormation)
Object storage on the cloud (AWS S3)
Email notifications (AWS SES)
Middleware
Authentication and Authorization (Lambda Authorizer)
Data validation and error handling
... much more
Besides that, you will get hands-on experience with some of the most popular and useful services on the AWS platform. Demand for AWS experts is continuously on the rise, as AWS holds the biggest stake amongst all cloud providers.
If you are a hobbyist or professional developer with basic back-end development knowledge and want to dive into Serverless or Microservices architecture, this course is for you. Basic JavasScript/Node.js background is recommended, but not mandatory.
Join me today to learn one of the hottest skills in 2020.