Scalable Cloud-native Product Development with Serverless, DynamoDB, GraphQL, React, and More
Chapters (20)
Chapter 1
4 XP
Introduction to the Course
Chapter Progress
Start to track progress
LESSONS (4)
Overview of the course
We discuss the overview of the MFS401 course. We also talk about the principles for lean product development and the tech stack used in the course.
Coming Soon
XP
A complete product: SweetumsCenter
As part of the MFS401 course, we develop a large, hands-on project called SweetumsCenter. We discuss the product specifications as well as the development process we follow.
Coming Soon
XP
Setting up the development environment
In this lesson, we set up the development environments, including the editor, showcasing minimal Git commands.
Coming Soon
XP
Setting up Amazon Web Services (AWS)
We discuss how to create an Amazon Web Services account and set it up locally. We also how to start with basic AWS security.
Coming Soon
XP
Chapter 2
3 XP
TypeScript: Javascript + Type = ♥️
Chapter Progress
Start to track progress
LESSONS (3)
Introduction to TypeScript
We introduce type systems and why they matter. We also discuss type inferences, and then how to install TypeScript to a project.
Coming Soon
XP
Basic types, interfaces, and more
We discuss the core types in TypeScript. We also discuss how to handle unknown types with any and unknown. We then discuss structural typing and generics.
Coming Soon
XP
TypeScript: Tips and patterns
In this lesson, we go through 9 tips and patterns for TypeScript to build real-world applications.
Coming Soon
XP
Chapter 3
5 XP
Building Frontend Applications with React
Chapter Progress
Start to track progress
LESSONS (5)
Introduction to React
We introduce React — one of the most in-demand frontend frameworks. We also peek under the hood and discuss how React works with virtual DOMs. Then, we discuss how to set up Create React App.
Coming Soon
XP
Structuring a React project
We provide an opinionated view on how to structure a React project in a codebase.
Coming Soon
XP
Function components in React
We introduce functional components — the modern way to build React apps.
Coming Soon
XP
Styling React apps
We describe different ways to style React applications. We provide an opinionated recommendation for styling mid-sized React apps.
Coming Soon
XP
Deploying React apps
In this lesson, we discuss different managed services for deploying React apps. We compare some of the popular options, including Netlify, Vercel, and AWS Amplify.
Coming Soon
XP
Chapter 4
5 XP
State Management with React Hooks
Chapter Progress
Start to track progress
LESSONS (5)
Introduction to Hooks in React
We introduce modern React principles, starting with React hooks and side effects.
Coming Soon
XP
Rules of Hooks
We define the two most important rules for React hooks.
Coming Soon
XP
Custom Hooks in React
In this lesson, we describe — with examples — how to define custom hooks.
Coming Soon
XP
Context in React
For sharing states across components, the Context API is key in React. We detail how to implement context with unstated-next, a lightweight library.
Coming Soon
XP
State of state management in React
There are several alternatives for state management in React. We provide opinionated recommendations on how to choose among them.
Coming Soon
XP
Chapter 5
3 XP
Introducing GraphQL: Building Your Backend API
Chapter Progress
Start to track progress
LESSONS (3)
Introducing GraphQL
We introduce GraphQL — a modern take on building APIs. We also discuss why GraphQL can be appropriate for a project.
Coming Soon
XP
GraphQL schema and resolvers
Schema and resolvers are at the heart of GraphQL development. We describe how to define typed schema and resolvers in a GraphQL API.
Coming Soon
XP
Setting up the GraphQL server
In this lesson, we describe how to set up a GraphQL server with Apollo.
Coming Soon
XP
Chapter 6
7 XP
Serverless: The New King of Computing
Chapter Progress
Start to track progress
LESSONS (7)
Introduction to the Serverless paradigm
We introduce Serverless — a new paradigm of computing with function-as-a-service.
Coming Soon
XP
Asynchronous programming in JavaScript
In this lesson, we take a slight detour going deep into a vital subject in JavaScript: asynchronous programming. We detail how the event loop works with JavaScript and Node.js runtime.
Coming Soon
XP
Introducing AWS Lambda
We introduce AWS Lambda, arguably the most popular managed service for deploying Serverless functions. We describe how to create a Lambda, the anatomy of a Lambda function, and some core concepts of Lambda.
Coming Soon
XP
The serverless framework
In this lesson, we introduce the Serverless Framework, a popular tool facilitating deploying Serverless functions a breeze.
Coming Soon
XP
Anatomy of serverless.yml
TThe Serverless Framework enables infrastructure-as-code — the serverless.yml file is at the heart of it. We describe how to read and structure a serverless.yml file.
Coming Soon
XP
Building GraphQL API with Serverless
The Serverless paradigm and GraphQL play nice together. In this lesson, we describe how to build a GraphQL API with the Serverless framework.
Coming Soon
XP
Deploying GraphQL API with Serverless
Finally, in this lesson, we describe how to deploy GraphQL APIs with the Serverless framework.
Coming Soon
XP
Chapter 7
4 XP
Advanced Patterns in API Development
Chapter Progress
Start to track progress
LESSONS (4)
Pagination in GraphQL
We discuss pagination in API development, focusing on cursor-based pagination. Then, we discuss how to implmenent pagination with GraphQL.
Coming Soon
XP
API versioning in GraphQL
In this lesson, we discuss semantic versioning for APIs. We also discuss how GraphQL APIs can be versionless and yet support use cases for version control.
Coming Soon
XP
Queuing with Amazon Simple Queue Service (SQS)
Queuing is a crucial tool in cloud development. In this lesson, we discuss how to design, develop, and deploy queues with Amazon Simple Queue Service (SQS).
Coming Soon
XP
Storing secrets and more in the AWS parameter store
Instead of using local files to store secrets, we discuss how we can use AWS parameter store for storing, retrieving, and recycling secrets from a centralized place.
Coming Soon
XP
Chapter 8
5 XP
Introduction to NoSQL and DynamoDB
Chapter Progress
Start to track progress
LESSONS (5)
Why and when NoSQL
In this lesson, we describe how NoSQL is different and useful for hyper-scalable and user-facing applications.
Coming Soon
XP
Introducing DynamoDB
As a prime example of a managed, NoSQL database, we introduce Amazon DynamoDB.
Coming Soon
XP
Core concepts of DynamoDB
We start with the core concepts of DynamoDB as a database.
Coming Soon
XP
AWS SDK with DynamoDB
The AWS SDK can be used as a tool to interact with a DynamoDB database within JavaScript.
Coming Soon
XP
Getting, updating, and deleting with DynamoDB
We discuss the basic operations of DynamoDB with AWS SDK.
Coming Soon
XP
Chapter 9
2 XP
Advanced DynamoDB Design Patterns I
Chapter Progress
Start to track progress
LESSONS (2)
Access patterns-first design
To model data in DynamoDB, a crucial design philosophy is called access patterns-first design. We discuss how we can use a single table and carefully orchestrated access pattern implementations to model complex data relationships in DynamoDB.
Coming Soon
XP
DynamoDB with Serverless and GraphQL
DynamoDB pairs well with Serverless and GraphQL. In this lesson, we describe how to connect DynamoDB with GraphQL.
Coming Soon
XP
Chapter 10
5 XP
Advanced DynamoDB Design Patterns II
Chapter Progress
Start to track progress
LESSONS (5)
The power of the begins_with and between operators
We discuss two key operators in DynamoDB — begins_with and between.
Coming Soon
XP
Sorting in DynamoDB
DynamoDB allows different ways to sort data lexiographically. We discuss how to leverage them for different use cases.
Coming Soon
XP
Pagination of query results
DynamoDB has a hard limit for the size of returned data. We discuss the pagination mechanism for the query results in DynamoDB.
Coming Soon
XP
Shortening attribute names
Like other NoSQL databases, optimizing storage is important in DynamoDB. We discuss a key trick for achieving optimal storage utilization from early on in the design and development.
Coming Soon
XP
DynamoDB streams
Watching changes in a DynamoDB table is easy. We discuss how to use DynamoDB streams to watch for all changes in a DynamoDB table.
Coming Soon
XP
Chapter 11
3 XP
Authentication and Authorization (authN/Z)
Chapter Progress
Start to track progress
LESSONS (3)
Basic concepts of AuthN/Z
We detail what role authorization and authentication play in application development.
Coming Soon
XP
AuthN/Z strategies
In this lesson, we discuss different strategies for authorization and authentication, including session-based and token-based authN/Z. We then discuss how to implement token-based authN/Z.
Coming Soon
XP
Managed services for AuthN/Z
We list and compare the popular managed services for implementing authorization and authentication.
Coming Soon
XP
Chapter 12
3 XP
Performance Profiling for Fullstack Applications
Chapter Progress
Start to track progress
LESSONS (3)
Performance: Why, what, and how
We start with why performance matters, the key metrics to watch out for, and the performance tools to use for profiling performance.
Coming Soon
XP
Performance profiling for React apps
We discuss how to profile performance for React apps with the React Developer Tools.
Coming Soon
XP
Optimizing React apps
In this lesson, we discuss different strategies for optimizing React applications — including memoization, fragments, and more.
Coming Soon
XP
Chapter 13
5 XP
The Design and Planning: Hands-on Building SweetumsCenter
Chapter Progress
Start to track progress
LESSONS (5)
Introduction to the SweetumsCenter development
We start with introducing the development process for SweetumsCenter — the hands-on project we build as part of the MFS401 course.
Coming Soon
XP
Low-fidelity prototype for the SweetumsCenter frontend
In this lesson, we design the low-fidelity prototype for all screens in the SweetumsCenter application.
Coming Soon
XP
The user experience for SweetumsCenter backend API
We design the GraphQL API for the SweetumsCenter backend. Note that we use dummy content for the API.
Coming Soon
XP
Data Model for SweetumsCenter backend API
In this lesson, we define the data model for the SweetumsCenter application.
Coming Soon
XP
Database access patterns for SweetumsCenter backend
We define the access patterns required to support the SweetumsCenter backend.
Coming Soon
XP
Chapter 14
9 XP
The Functional Product with Dummy Content (frontend): Hands-on Building SweetumsCenter
Chapter Progress
Start to track progress
LESSONS (9)
Initiating the implementation of the SweetumsCenter frontend
We start setting up for the SweetumsCenter backend with Create React App and SASS. We set up the basic routs for the application. In next lessons, we implement each route one by one.
Coming Soon
XP
Creating the machines route for the SweetumsCenter frontend
We implement the machines route for the SweetumsCenter application.
Coming Soon
XP
Creating the machine route for the SweetumsCenter frontend
We implement the individual machine route for the SweetumsCenter application.
Coming Soon
XP
Creating the products route for the SweetumsCenter frontend
We implement the products route for the SweetumsCenter application.
Coming Soon
XP
Creating the product route for the SweetumsCenter frontend
We implement the individual product route for the SweetumsCenter application.
Coming Soon
XP
Creating the cities route for the SweetumsCenter frontend
We implement the cities route for the SweetumsCenter application.
Coming Soon
XP
Creating the city route for the SweetumsCenter frontend
We implement the individual city route for the SweetumsCenter application.
Coming Soon
XP
Creating the zone route for the SweetumsCenter frontend
We implement the individual zone route for the SweetumsCenter application.
Coming Soon
XP
Creating the authenticated routes for the SweetumsCenter frontend
We implement the routes for authenticated services for the SweetumsCenter application.
Coming Soon
XP
Chapter 15
7 XP
The Functional Product with Dummy Content (Backend): Hands-on Building SweetumsCenter
Chapter Progress
Start to track progress
LESSONS (7)
Initiating the implementation of the SweetumsCenter backend API
We start implementing the SweetumsCenter backend by initiating the project and then setting up the Serverless Framework, and GraphQL server.
Coming Soon
XP
Implementing queries and mutations for machines with dummy data
We implement the corresponding queries and mutations designed for the machines component. Note that this is implemented with dummy data.
Coming Soon
XP
Implementing the custom scalars
We implement the custom scalars needed for the backend, starting with a custom DateTime implementation in the GraphQL schema.
Coming Soon
XP
Implementing queries and mutations for products with dummy data
We implement the corresponding queries and mutations designed for the products component. Note that this is implemented with dummy data.
Coming Soon
XP
Implementing queries and mutations for cities with dummy data
We implement the corresponding queries and mutations designed for the cities component. Note that this is implemented with dummy data.
Coming Soon
XP
Implementing queries and mutations for zones with dummy data
We implement the corresponding queries and mutations designed for the zones component. Note that this is implemented with dummy data.
Coming Soon
XP
Implementing mutations for sales with dummy data
We implement the corresponding queries and mutations designed for the sales component. Note that this is implemented with dummy data.
Coming Soon
XP
Chapter 16
7 XP
The Functional Product with Real Content: Hands-on Building SweetumsCenter
Chapter Progress
Start to track progress
LESSONS (7)
Integrating the SweetumsCenter backend API with frontend
In this lesson, we connect the frontend with the backend that we developed in the last two chapters. We use urql as the GraphQL client.
Coming Soon
XP
Securing SweetumsCenter with Amazon Cognito
We use Amazon Cognito for user management and securing the SweetumsCenter application.
Coming Soon
XP
Setting up for implementing the database access patterns for SweetumsCenter
We now set up the Serverless Framework with details of the DynamoDB table and add some dummy data to test the whole flow.
Coming Soon
XP
Implementing database access patterns for machines in SweetumsCenter
In this lesson, we implement the database access patterns designed earlier for the machines component.
Coming Soon
XP
Implementing database access patterns for products in SweetumsCenter
In this lesson, we implement the database access patterns designed earlier for the products component.
Coming Soon
XP
Implementing database access patterns for cities and zones in SweetumsCenter
In this lesson, we implement the database access patterns designed earlier for the cities and zones components.
Coming Soon
XP
Implementing database access patterns for sales in SweetumsCenter
In this lesson, we implement the database access patterns designed earlier for the sales component.
Coming Soon
XP
Chapter 17
3 XP
Quality Assurance (QA) Testing: Hands-on Building SweetumsCenter
Chapter Progress
Start to track progress
LESSONS (3)
Setting up Quality Assurance (QA) and testing for SweetumsCenter
We set up the development stages for the SweetumsCenter application and gear towards Quality Assurance (QA) and testing.
Coming Soon
XP
Quality Assurance (QA) testing for SweetumsCenter backend API
In this lesson, we go through how to do thorough Quality Assurance (QA) tests for the GraphQL API backend for the SweetumsCenter.
Coming Soon
XP
Quality Assurance (QA) check for SweetumsCenter frontend
In this lesson, we go through how to do thorough Quality Assurance (QA) tests for the frontend application for the SweetumsCenter.
Coming Soon
XP
Chapter 18
1 XP
Performance Profiling: Hands-on Building SweetumsCenter
Chapter Progress
Start to track progress
LESSONS (1)
Performance profiling the SweetumsCenter frontend
In this lesson, we go through performance profiling for the SweetumsCenter frontend.
Coming Soon
XP
Chapter 19
2 XP
Operational Cost Analysis: Hands-on Building SweetumsCenter
Chapter Progress
Start to track progress
LESSONS (2)
Usage assumptions for SweetumsCenter
We start with the basic usage assumptions for the cost analysis of the entire SweetumsCenter product.
Coming Soon
XP
Operational cost of SweetumsCenter infrastructure
We now calculate the total operational costs for SweetumsCenter infrastructure based on the usage assumptions made in the earlier lesson.
Coming Soon
XP
Chapter 20
1 XP
Conclusion and Next Steps
Chapter Progress
Start to track progress
LESSONS (1)
Conclusion
Finally, we conclude MFS401 by recounting what we learned in each chapter.
Coming Soon
XP