MFS401

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)

1
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

2
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

3
Setting up the development environment

In this lesson, we set up the development environments, including the editor, showcasing minimal Git commands.

Coming Soon

XP

4
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)

5
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

6
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

7
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)

8
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

9
Structuring a React project

We provide an opinionated view on how to structure a React project in a codebase.

Coming Soon

XP

10
Function components in React

We introduce functional components — the modern way to build React apps.

Coming Soon

XP

11
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

12
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)

13
Introduction to Hooks in React

We introduce modern React principles, starting with React hooks and side effects.

Coming Soon

XP

14
Rules of Hooks

We define the two most important rules for React hooks.

Coming Soon

XP

15
Custom Hooks in React

In this lesson, we describe — with examples — how to define custom hooks.

Coming Soon

XP

16
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

17
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)

18
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

19
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

20
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)

21
Introduction to the Serverless paradigm

We introduce Serverless — a new paradigm of computing with function-as-a-service.

Coming Soon

XP

22
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

23
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

24
The serverless framework

In this lesson, we introduce the Serverless Framework, a popular tool facilitating deploying Serverless functions a breeze.

Coming Soon

XP

25
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

26
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

27
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)

28
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

29
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

30
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

31
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)

32
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

33
Introducing DynamoDB

As a prime example of a managed, NoSQL database, we introduce Amazon DynamoDB.

Coming Soon

XP

34
Core concepts of DynamoDB

We start with the core concepts of DynamoDB as a database.

Coming Soon

XP

35
AWS SDK with DynamoDB

The AWS SDK can be used as a tool to interact with a DynamoDB database within JavaScript.

Coming Soon

XP

36
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)

37
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

38
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)

39
The power of the begins_with and between operators

We discuss two key operators in DynamoDB — begins_with and between.

Coming Soon

XP

40
Sorting in DynamoDB

DynamoDB allows different ways to sort data lexiographically. We discuss how to leverage them for different use cases.

Coming Soon

XP

41
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

42
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

43
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)

44
Basic concepts of AuthN/Z

We detail what role authorization and authentication play in application development.

Coming Soon

XP

45
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

46
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)

47
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

48
Performance profiling for React apps

We discuss how to profile performance for React apps with the React Developer Tools.

Coming Soon

XP

49
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)

50
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

51
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

52
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

53
Data Model for SweetumsCenter backend API

In this lesson, we define the data model for the SweetumsCenter application.

Coming Soon

XP

54
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)

55
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

56
Creating the machines route for the SweetumsCenter frontend

We implement the machines route for the SweetumsCenter application.

Coming Soon

XP

57
Creating the machine route for the SweetumsCenter frontend

We implement the individual machine route for the SweetumsCenter application.

Coming Soon

XP

58
Creating the products route for the SweetumsCenter frontend

We implement the products route for the SweetumsCenter application.

Coming Soon

XP

59
Creating the product route for the SweetumsCenter frontend

We implement the individual product route for the SweetumsCenter application.

Coming Soon

XP

60
Creating the cities route for the SweetumsCenter frontend

We implement the cities route for the SweetumsCenter application.

Coming Soon

XP

61
Creating the city route for the SweetumsCenter frontend

We implement the individual city route for the SweetumsCenter application.

Coming Soon

XP

62
Creating the zone route for the SweetumsCenter frontend

We implement the individual zone route for the SweetumsCenter application.

Coming Soon

XP

63
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)

64
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

65
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

66
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

67
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

68
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

69
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

70
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)

71
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

72
Securing SweetumsCenter with Amazon Cognito

We use Amazon Cognito for user management and securing the SweetumsCenter application.

Coming Soon

XP

73
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

74
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

75
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

76
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

77
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)

78
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

79
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

80
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)

81
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)

82
Usage assumptions for SweetumsCenter

We start with the basic usage assumptions for the cost analysis of the entire SweetumsCenter product.

Coming Soon

XP

83
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)

84
Conclusion

Finally, we conclude MFS401 by recounting what we learned in each chapter.

Coming Soon

XP