
Explore what microservices are and how to build a full web app in AWS, focusing on practical concepts, tools, and deployment of microservices.
Explore microservices by breaking a monolith into independently deployed components, compare AWS Lambda and AWS SAM with containers, and build a full web app.
Set up a cross-platform development environment with PowerShell core, VS Code, and Chrome. Script tasks with PowerShell, deploy to AWS, and build Vue.js front ends using Chrome DevTools.
Learn Git basics; code examples will be committed to GitHub for you to follow later, as we approach Docker and Linux style endings.
Learn how Node serves as a runtime for JavaScript to power web and cloud apps, and manage multiple Node versions with NVM, plus Python utilities and SDKs for tasks.
Learn to create an AWS account, secure it with MFA, set up IAM users, and install and configure the AWS CLI and SAM CLI for deploying resources, mindful of costs.
Explore how containers power microservices with Docker, install Docker Desktop, create a Docker Hub account, and run your first container via the command line.
Use Vue to develop front ends, install the Vue CLI to set up the framework and scaffold an app, and verify the installation with vue --version.
Explore building a simple message read app that sends input from a front end to a back end, logs messages, and compares two different back-end architectures across the course.
Learn how serverless computing with AWS Lambda uses event-driven triggers and consumption-based billing to scale automatically, replacing constantly running virtual machines with fast startup and cost efficiency.
Create and deploy your first AWS Lambda function in node 18, then configure an API gateway trigger to call it, and test using browser or curl or invoke web request.
Deploy lambda-backed services behind an API gateway to build a scalable microservices app. Use SAM to define and deploy resources as code, infrastructure as code, enabling consistent configurations with CloudFormation.
Explore defining a CloudFormation and SAM template to deploy a serverless lambda function, configure API events, organize code, and test locally with sam local start-api.
Deploy serverless apps with sam deploy and guided setup, learn to review changes, save config, and deploy to a cloudformation stack in ohio, using lambda, api gateway, and iam roles.
Define two AWS SAM Lambda functions behind the same API gateway—a hello and a message function—using post requests and event.body, with local testing via SAM local start api.
Create and run a view app locally to test a lambda-backed backend with API gateway, logging messages and returning responses, then extend to S3 and CloudFront frontend.
Understand front end and back end concepts, and see how single page apps with ajax and Vue deliver fast, async client interactions using HTML, CSS, and JavaScript.
Bootstrapping a Vue app with bootstrap Vue lets you install packages, configure main.js, and build forms using v-model and bootstrap utilities like w-50 and mx-auto.
Bind a text box to a data property in a Vue component and prepare to add a button that sends the message to the back end using the model value.
Learn to send back-end requests from the frontend using Axios by building a generic API.js with makeApiCall, parameterize verb, root, route, and data, and use window.location.origin for the base URL.
Set up a local full-stack: back end port 3000, front end port 8080; proxy API calls to SAM and implement the make API call with async handling.
Learn how to set up webpack aliases in a vue project to simplify imports and scale your app, using path.resolve and a utils alias for reusable utilities.
Learn to set up and run front-end and back-end microservices locally using npm scripts, streamline with package.json start commands, and prepare deployment to AWS.
Deploy the backend with sam deploy and CloudFormation, leveraging idempotency to add the new message function alongside the existing hello function behind the API gateway.
Explore how content delivery networks like CloudFront reduce latency by caching content at edge locations, using S3 as an origin, and supporting multiple origins to avoid cross-domain Ajax issues.
Configure a CloudFront distribution with an S3 static bucket and an API Gateway origin using CloudFormation, with a focus on origins and cache behaviors.
Deploy cloudfront resources in AWS by updating templates and replacing the automatically created API gateway with an explicit one, then update outputs and prepare the S3 bucket for frontend deployment.
Build the Vue front end, generate a dist folder, and deploy it to an AWS S3 static bucket using the AWS S3 sync command, then verify the site via CloudFront.
Test the message route app with a CloudFront distribution, origins, and a deployed Vue frontend. Review CloudWatch logs and network previews to confirm end-to-end messaging.
Explore how asynchronous JavaScript uses non-blocking I/O and the event loop in Node.js to handle multiple requests efficiently, contrasting threads, callbacks, and microservices design.
Compare callbacks and promises in asynchronous JavaScript, starting with a callback-based multiply example and moving to promise-based flows with await. Learn to chain API calls cleanly and avoid nested callbacks.
Trace the roots of computation from the Church-Turing thesis to lambda calculus and functional programming, and see how JavaScript blends functional and imperative styles with map, filter, reduce, and promises.
Compare async and sync functions using await and promises, showing how errors are caught or propagated, and how error propagation simplifies code and improves logging in library calls.
See how Promise.all speeds up multiple API calls by running them in parallel, mapping inputs to promises, and awaiting all results in one go.
Employ dynamodb local via docker to emulate DynamoDB on your machine, create orders, products, and shipments tables, load sample data, and run the backend API locally.
Master querying DynamoDB with PartiQL using the AWS CLI, hitting a local DynamoDB container via endpoint localhost:8000, and extracting table names and data with simple select statements.
Explore how DynamoDB marshalled data uses type markers to store and parse JSON, and use scripts to marshal and unmarshal between DynamoDB JSON and regular JSON.
Preview the architecture of our inventory and order management app built with AWS microservices. See how DynamoDB, API gateway, Lambda, CloudFront, S3, and Cognito enable catalog, cart, orders, and inventory.
Add aws serverless products and orders functions to the crm app, define api products and api orders routes with get, post, delete, and root parameters, organized in separate folders.
Add the DynamoDB SDKs to the common layer, create a DynamoDB client and a statement function, and export it for lambda use.
Update the products function to import the statement function, execute a DynamoDB query like select star from products, and map and unmarshal each item to plain JSON for the frontend.
Explore two product routes, api products for listing and api products/:id for a single item. Learn to select specific fields and handle optional id parameters with conditional logic.
Learn how prepared statements in DynamoDB handle parameters with question marks, marshalled and unmarshalled values, and safely execute statements using a parameters array.
Learn to document library code with Jsdoc headers, detailing function parameters and returns, using VSCode hover hints and clear TypeScript annotations for DynamoDB-related Lambda code.
Implement a reusable promise handler to convert promises into lambda responses with then and catch, enabling centralized error handling and reducing duplication across DynamoDB-backed endpoints.
Learn how Vuex centralizes state management in front-end MVC architecture, enabling components to pull and push data to a single store via a REST API, aligning view, controller, and model.
Learn to integrate Vuex into the front end by creating a products module, wiring state with map state, and binding it to the products view for dynamic UI.
Explains the anatomy of vuex modules, including state, actions, and mutations, and how async actions commit mutations to update state and load data from APIs.
Render a list of products in Vue using v-for, with dynamic names and unique keys, and style them with Bootstrap cards and custom css for a centered, responsive grid.
Implement a reusable loading spinner in a Vue app by managing a Vuex loading state and a setLoading mutation, and render it with v-if during data fetch.
What are Microservices?
Microservices have become one of biggest waves in cloud computing innovation. But answering exactly what they are can be pretty challenging. Throughout this course, we'll explore how to answer that question and many more as we build a web app that runs on AWS.
Instead of diving into the details of any specific microservices framework, tool or pattern, we'll look at an unbiased view of the general concepts that make a microservice architecture so great. Throughout this course, we'll touch upon some of the foundational details of the following concepts. We'll focus on how these concepts relate to each other and how we combine them to make a complete web application running on microservices hosted in AWS. This course will prepare you to further research and master any of these tools and concepts, all while knowing how they fit into an overall cloud architecture.
In this course we'll learn the basics of the following tools and concepts:
Learn Single Page Applications:
We'll build a web app with a VueJS front end and discover all the benefits of a Single Page Application (SPA) framework in a web system. We'll use Vuex to store front end state to enable a stateless backend API. We'll also work with Bootstrap and add BootstrapVue components into our front end as we build a feature rich, responsive and modern UI.
Learn Infrastructure as Code:
We'll be working with many AWS resources and we'll be defining them in an AWS CloudFormation template. We'll also be working with the AWS Serverless Application Model (SAM) to define microservices as serverless resources.
Learn CloudFront and S3:
We'll be using AWS CloudFront and AWS Simple Storage Service (S3) to serve and host our front end static content. On top of S3, we'll learn how to set our backend APIs as CloudFront origins to tie our application under one domain name.
Learn DynamoDB
Many microservice applications share a common database between all backend components, and ours will as well. We'll add AWS DynamoDB tables to our application to store all our information. This will include provisioning tables, IAM permissions and working with the AWS SDKs for Javascript to interact with DynamoDB.
Learn Asynchronous JavaScript
Often in microservice based applications, our backend components will need to interact through network requests. Javascript has a rich set of features to create and maintain these asynchronous requests. We'll dive deep into how to do this, and how to write clean, manageable and efficient async code.
Learn ReST APIs
ReST is one of the most popular standards for backend APIs. We'll dive deep into the concepts of ReST. We'll develop a backend ReSTful API using microservices. We'll also explore tools like Amazon API Gateway and Express.js to do so.
Learn Docker
Docker has become the industry standard toolset for developing containers. As we explore container based services, we'll build an understanding of the basics of working with this tool. We'll also work work Amazon Elastic Container Registry (ECR) to store our container images.
Learn Kubernetes
As we develop container based services, we'll need a way to orchestrate multiple services in one system. Kubernetes has become the industry standard tool to orchestrate multiple container based services. As we explore Kubernetes as a method of hosting microservices, we'll use Amazon Elastic Kubernetes Service (EKS).
This course will cover some basic concepts of getting an application running in Kubernetes. By the end of this course you will be prepared to take a more in depth course on Kubernetes Application Development. You'll be able to enter such a course with a real world perspective on how developers use Kubernetes in their overall application architecture.
Learn Cloud Based Auth:
While this course is not focused on security or AuthN/Z best practices, we will add authentication into our web app. We'll use Amazon Cognito as a directory service and as an authentication server in OAuth 2 authentication flows.
This course will cover how Auth fits into overall cloud architecture and some of the basics of the OAuth 2 standard. By the end of this course, you'll be prepared to take more in depth course Auth mechanisms and their best practices. You'll be able to enter such a course with a real world perspective on how developers use auth and federated identities in their overall application architecture.
Learn AWS Basics:
The code examples of this course will leverage a wide array of AWS services. Through practice, we'll develop a foundational understanding of how to work with AWS basics such as the AWS Console, AWS CLI and AWS IAM.