Microservices with Node JS and React
0% Completed
01 – Fundamental Ideas Around Microservices
Download Attachment
Reading
Lesson 001 How to Get Help
Video - 00:00:56 mins
Lesson 003 What Is a Microservice
Video - 00:3:19 mins
Lesson 004 Data in Microservices
Video - 00:7:34 mins
Lesson 006 Big Problems with Data
Video - 00:5:8 mins
Lesson 007 Sync Communication Between Services
Video - 00:6:53 mins
Lesson 008 Event-Based Communication
Video - 00:5:19 mins
Lesson 009 A Crazy Way of Storing Data
Video - 00:9:49 mins
Lesson 010 Pros and Cons of Async Communication
Video - 00:6:15 mins
02 – A Mini-Microservices App
Download Attachment
Reading
Lesson 002 App Overview
Video - 00:5:44 mins
Lesson 003 Project Setup
Video - 00:4:57 mins
Lesson 004 Posts Service Creation
Video - 00:8:18 mins
Lesson 005 Testing the Posts Service
Video - 00:4:5 mins
Lesson 006 Implementing a Comments Service
Video - 00:8:22 mins
Lesson 007 Quick Comments Test
Video - 00:3:57 mins
Lesson 010 React Project Setup
Video - 00:5:00 mins
Lesson 011 Building Post Submission
Video - 00:9:54 mins
Lesson 012 Handling CORS Errors
Video - 00:4:9 mins
Lesson 013 Fetching and Rendering Posts
Video - 00:10:4 mins
Lesson 014 Creating Comments
Video - 00:8:9 mins
Lesson 015 Displaying Comments
Video - 00:7:23 mins
Lesson 017 Request Minimization Strategies
Video - 00:4:54 mins
Lesson 018 An Async Solution
Video - 00:7:16 mins
Lesson 019 Common Questions Around Async Events
Video - 00:4:14 mins
Lesson 020 Event Bus Overview
Video - 00:5:14 mins
Lesson 022 A Basic Event Bus Implementation
Video - 00:5:22 mins
Lesson 023 Emitting Events
Video - 00:5:18 mins
Lesson 024 Emitting Comment Creation Events
Video - 00:3:45 mins
Lesson 025 Receiving Events
Video - 00:4:33 mins
Lesson 026 Creating the Data Query Service
Video - 00:4:42 mins
Lesson 027 Parsing Incoming Events
Video - 00:7:2 mins
Lesson 028 Using the Query Service
Video - 00:7:10 mins
Lesson 029 Adding a Simple Feature
Video - 00:4:46 mins
Lesson 030 Issues with Comment Filtering
Video - 00:7:43 mins
Lesson 031 A Second Approach
Video - 00:5:37 mins
Lesson 032 How to Handle Resource Updates
Video - 00:4:45 mins
Lesson 033 Creating the Moderation Service
Video - 00:4:52 mins
Lesson 034 Adding Comment Moderation
Video - 00:4:26 mins
Lesson 036 Handling Moderation
Video - 00:5:30 mins
Lesson 037 Updating Comment Content
Video - 00:4:59 mins
Lesson 038 A Quick Test
Video - 00:5:57 mins
Lesson 039 Rendering Comments by Status
Video - 00:3:26 mins
Lesson 040 Dealing with Missing Events
Video - 00:10:24 mins
Lesson 042 Implementing Event Sync
Video - 00:6:11 mins
Lesson 043 Event Syncing in Action
Video - 00:4:16 mins
03 – Running Services with Docker
Download Attachment
Reading
Lesson 001 Deployment Issues
Video - 00:6:55 mins
Lesson 002 Why Docker
Video - 00:2:55 mins
Lesson 003 Why Kubernetes
Video - 00:5:47 mins
Lesson 004 Don't Know Docker Watch This
Video - 00:1:17 mins
Lesson 006 Dockerizing the Posts Service
Video - 00:4:2 mins
Lesson 007 Review Some Basic Commands
Video - 00:5:23 mins
Lesson 008 Dockering Other Services
Video - 00:3:1 mins
04 – Orchestrating Collections of Services with Kubernetes
Download Attachment
Reading
Lesson 002 Installing Kubernetes
Video - 00:3:19 mins
Lesson 004 A Kubernetes Tour
Video - 00:9:45 mins
Lesson 005 Important Kubernetes Terminology
Video - 00:2:52 mins
Lesson 006 Notes on Config Files
Video - 00:3:11 mins
Lesson 007 Creating a Pod
Video - 00:6:41 mins
Lesson 009 Understanding a Pod Spec
Video - 00:5:15 mins
Lesson 010 Common Kubectl Commands
Video - 00:4:44 mins
Lesson 011 A Time-Saving Alias
Video - 00:2:26 mins
Lesson 012 Introducing Deployments
Video - 00:3:28 mins
Lesson 013 Creating a Deployment
Video - 00:6:12 mins
Lesson 014 Common Commands Around Deployments
Video - 00:4:36 mins
Lesson 015 Updating Deployments
Video - 00:6:2 mins
Lesson 016 Preferred Method for Updating Deployments
Video - 00:5:42 mins
Lesson 017 Networking With Services
Video - 00:4:15 mins
Lesson 018 Creating a NodePort Service
Video - 00:7:52 mins
Lesson 019 Accessing NodePort Services
Video - 00:5:9 mins
Lesson 020 Setting Up Cluster IP Services
Video - 00:3:12 mins
Lesson 021 Building a Deployment for the Event Bus
Video - 00:5:35 mins
Lesson 022 Adding ClusterIP Services
Video - 00:7:37 mins
Lesson 023 How to Communicate Between Services
Video - 00:4:9 mins
Lesson 024 Updating Service Addresses
Video - 00:6:27 mins
Lesson 025 Verifying Communication
Video - 00:5:00 mins
Lesson 026 Adding Query, Moderation and Comments
Video - 00:9:57 mins
Lesson 027 Testing Communication
Video - 00:5:29 mins
Lesson 028 Load Balancer Services
Video - 00:5:13 mins
Lesson 029 Load Balancers and Ingress
Video - 00:6:39 mins
Lesson 031 Installing Ingress-Nginx
Video - 00:7:57 mins
Lesson 033 Writing Ingress Config Files
Video - 00:4:47 mins
Lesson 035 Hosts File Tweak
Video - 00:6:16 mins
Lesson 037 Deploying the React App
Video - 00:6:9 mins
Lesson 038 Unique Route Paths
Video - 00:6:55 mins
Lesson 039 Final Route Config
Video - 00:6:32 mins
Lesson 040 Introducing Skaffold
Video - 00:3:8 mins
Lesson 042 Skaffold Setup
Video - 00:9:17 mins
Lesson 043 First Time Skaffold Startup
Video - 00:1:00 mins
Lesson 044 A Few Notes on Skaffold
Video - 00:6:30 mins
05 – Architecture of Multi-Service Apps
Download Attachment
Reading
Lesson 001 Big Ticket Items
Video - 00:15:11 mins
Lesson 002 App Overview
Video - 00:8:53 mins
Lesson 003 Resource Types
Video - 00:3:23 mins
Lesson 004 Service Types
Video - 00:3:38 mins
Lesson 005 Events and Architecture Design
Video - 00:3:49 mins
Lesson 007 Auth Service Setup
Video - 00:4:51 mins
Lesson 008 Auth K8s Setup
Video - 00:8:15 mins
Lesson 009 Adding Skaffold
Video - 00:5:36 mins
Lesson 012 Ingress-Nginx Setup
Video - 00:7:19 mins
Lesson 013 Hosts File and Security Warning
Video - 00:4:6 mins
06 – Leveraging a Cloud Environment for Development
Download Attachment
Reading
Lesson 001 Note on Remote Development
Video - 00:2:51 mins
Lesson 002 Remote Dev with Skaffold
Video - 00:6:35 mins
Lesson 004 Google Cloud Initial Setup
Video - 00:2:43 mins
Lesson 005 Kubernetes Cluster Creation
Video - 00:3:59 mins
Lesson 006 Kubectl Contexts
Video - 00:3:49 mins
Lesson 007 Initializing the GCloud SDK
Video - 00:5:3 mins
Lesson 008 Installing the GCloud Context
Video - 00:4:17 mins
Lesson 009 Updating the Skaffold Config
Video - 00:4:35 mins
Lesson 010 More Skaffold Updates
Video - 00:1:6 mins
Lesson 011 Creating a Load Balancer
Video - 00:5:12 mins
Lesson 012 Final Config and Test
Video - 00:6:25 mins
07 – Response Normalization Strategies
Download Attachment
Reading
Lesson 001 Creating Route Handlers
Video - 00:5:41 mins
Lesson 002 Scaffolding Routes
Video - 00:4:5 mins
Lesson 003 Adding Validation
Video - 00:8:38 mins
Lesson 004 Handling Validation Errors
Video - 00:6:18 mins
Lesson 006 Surprising Complexity Around Errors
Video - 00:6:7 mins
Lesson 007 Other Sources of Errors
Video - 00:4:17 mins
Lesson 008 Solution for Error Handling
Video - 00:4:50 mins
Lesson 009 Building an Error Handling Middleware
Video - 00:7:38 mins
Lesson 010 Communicating More Info to the Error Handler
Video - 00:5:24 mins
Lesson 011 Encoding More Information In an Error
Video - 00:4:35 mins
Lesson 012 Subclassing for Custom Errors
Video - 00:8:17 mins
Lesson 013 Determining Error Type
Video - 00:3:10 mins
Lesson 015 Converting Errors to Responses
Video - 00:10:12 mins
Lesson 016 Moving Logic Into Errors
Video - 00:8:36 mins
Lesson 018 Verifying Our Custom Errors
Video - 00:8:34 mins
Lesson 019 Final Error Related Code
Video - 00:10:19 mins
Lesson 020 How to Define New Custom Errors
Video - 00:5:1 mins
Lesson 021 Uh Oh... Async Error Handling
Video - 00:5:50 mins
08 – Database Management and Modeling
Download Attachment
Reading
Lesson 001 Creating Databases in Kubernetes
Video - 00:8:25 mins
Lesson 002 Connecting to MongoDB
Video - 00:7:53 mins
Lesson 003 Understanding the Signup Flow
Video - 00:4:25 mins
Lesson 004 Getting TypeScript and Mongoose to Cooperate
Video - 00:5:21 mins
Lesson 005 Creating the User Model
Video - 00:4:54 mins
Lesson 006 Type Checking User Properties
Video - 00:6:1 mins
Lesson 007 Adding Static Properties to a Model
Video - 00:6:00 mins
Lesson 008 Defining Extra Document Properties
Video - 00:4:53 mins
Lesson 009 What's That Angle Bracket For
Video - 00:3:52 mins
Lesson 010 User Creation
Video - 00:6:47 mins
Lesson 011 Proper Error Handling
Video - 00:7:26 mins
Lesson 013 Reminder on Password Hashing
Video - 00:4:58 mins
Lesson 014 Adding Password Hashing
Video - 00:6:57 mins
Lesson 015 Comparing Hashed Password
Video - 00:2:54 mins
Lesson 016 Mongoose Pre-Save Hooks
Video - 00:5:53 mins
09 – Authentication Strategies and Options
Download Attachment
Reading
Lesson 001 Fundamental Authentication Strategies
Video - 00:8:58 mins
Lesson 002 Huge Issues with Authentication Strategies
Video - 00:7:32 mins
Lesson 003 So Which Option
Video - 00:2:58 mins
Lesson 004 Solving Issues with Option #2
Video - 00:8:26 mins
Lesson 005 Reminder on Cookies vs JWT's
Video - 00:6:21 mins
Lesson 006 Microservices Auth Requirements
Video - 00:11:00 mins
Lesson 007 Issues with JWT's and Server Side Rendering
Video - 00:9:58 mins
Lesson 008 Cookies and Encryption
Video - 00:4:51 mins
Lesson 009 Adding Session Support
Video - 00:3:11 mins
Lesson 010 Generating a JWT
Video - 00:8:29 mins
Lesson 011 JWT Signing Keys
Video - 00:4:57 mins
Lesson 012 Securely Storing Secrets with Kubernetes
Video - 00:2:13 mins
Lesson 013 Creating and Accessing Secrets
Video - 00:9:18 mins
Lesson 014 Accessing Env Variables in a Pod
Video - 00:5:18 mins
Lesson 015 Common Response Properties
Video - 00:4:41 mins
Lesson 016 Formatting JSON Properties
Video - 00:10:39 mins
Lesson 017 The Signin Flow
Video - 00:7:49 mins
Lesson 018 Common Request Validation Middleware
Video - 00:5:33 mins
Lesson 019 Sign In Logic
Video - 00:6:49 mins
Lesson 020 Quick Sign In Test
Video - 00:1:53 mins
Lesson 021 Current User Handler
Video - 00:3:1 mins
Lesson 022 Returning the Current User
Video - 00:8:55 mins
Lesson 023 Signing Out
Video - 00:2:48 mins
Lesson 024 Creating a Current User Middleware
Video - 00:6:55 mins
Lesson 025 Augmenting Type Definitions
Video - 00:7:46 mins
Lesson 026 Requiring Auth for Route Access
Video - 00:7:46 mins
10 – Testing Isolated Microservices
Download Attachment
Reading
Lesson 001 Scope of Testing
Video - 00:4:28 mins
Lesson 002 Testing Goals
Video - 00:4:32 mins
Lesson 003 Testing Architecture
Video - 00:7:51 mins
Lesson 004 Index to App Refactor
Video - 00:2:54 mins
Lesson 006 A Few Dependencies
Video - 00:3:33 mins
Lesson 008 Test Environment Setup
Video - 00:8:12 mins
Lesson 009 Our First Test
Video - 00:6:24 mins
Lesson 010 An Important Note
Video - 00:1:31 mins
Lesson 011 Testing Invalid Input
Video - 00:5:13 mins
Lesson 012 Requiring Unique Emails
Video - 00:1:46 mins
Lesson 013 Changing Node Env During Tests
Video - 00:5:43 mins
Lesson 014 Tests Around Sign In Functionality
Video - 00:6:26 mins
Lesson 015 Testing Sign Out
Video - 00:4:31 mins
Lesson 016 Issues with Cookies During Testing
Video - 00:5:19 mins
Lesson 017 Easy Auth Solution
Video - 00:3:3 mins
Lesson 019 Auth Helper Function
Video - 00:7:12 mins
Lesson 020 Testing Non-Authed Requests
Video - 00:1:44 mins
11 – Integrating a Server-Side-Rendered React App
Download Attachment
Reading
Lesson 001 Starting the React App
Video - 00:2:11 mins
Lesson 002 Reminder on Server Side Rendering
Video - 00:3:38 mins
Lesson 004 Basics of Next JS
Video - 00:5:24 mins
Lesson 005 Building a Next Image
Video - 00:4:28 mins
Lesson 006 Running Next in Kubernetes
Video - 00:10:12 mins
Lesson 008 Note on File Change Detection
Video - 00:4:26 mins
Lesson 009 Adding Global CSS
Video - 00:5:9 mins
Lesson 010 Adding a Sign Up Form
Video - 00:3:11 mins
Lesson 011 Handling Email and Password Inputs
Video - 00:3:42 mins
Lesson 012 Successful Account Signup
Video - 00:5:12 mins
Lesson 013 Handling Validation Errors
Video - 00:6:53 mins
Lesson 014 The useRequest Hook
Video - 00:6:59 mins
Lesson 015 Using the useRequest Hook
Video - 00:3:40 mins
Lesson 016 An onSuccess Callback
Video - 00:5:38 mins
Lesson 017 Overview on Server Side Rendering
Video - 00:6:47 mins
Lesson 019 Fetching Data During SSR
Video - 00:5:7 mins
Lesson 020 Why the Error
Video - 00:9:00 mins
Lesson 021 Two Possible Solutions
Video - 00:7:4 mins
Lesson 022 Cross Namespace Service Communication
Video - 00:7:45 mins
Lesson 023 When is GetInitialProps Called
Video - 00:6:46 mins
Lesson 024 On the Server or the Browser
Video - 00:2:1 mins
Lesson 026 Specifying the Host
Video - 00:8:23 mins
Lesson 027 Passing Through the Cookies
Video - 00:4:1 mins
Lesson 028 A Reusable API Client
Video - 00:7:5 mins
Lesson 029 Content on the Landing Page
Video - 00:2:1 mins
Lesson 030 The Sign In Form
Video - 00:3:12 mins
Lesson 031 A Reusable Header
Video - 00:5:00 mins
Lesson 032 Moving GetInitialProps
Video - 00:2:11 mins
Lesson 033 Issues with Custom App GetInitialProps
Video - 00:6:42 mins
Lesson 034 Handling Multiple GetInitialProps
Video - 00:6:8 mins
Lesson 035 Passing Props Through
Video - 00:3:3 mins
Lesson 037 Building the Header
Video - 00:5:5 mins
Lesson 038 Conditionally Showing Links
Video - 00:5:58 mins
Lesson 039 Signing Out
Video - 00:4:36 mins
12 – Code Sharing and Reuse Between Services
Download Attachment
Reading
Lesson 001 Shared Logic Between Services
Video - 00:4:34 mins
Lesson 002 Options for Code Sharing
Video - 00:4:46 mins
Lesson 003 NPM Organizations
Video - 00:4:27 mins
Lesson 004 Publishing NPM Modules
Video - 00:4:6 mins
Lesson 005 Project Setup
Video - 00:7:34 mins
Lesson 007 An Easy Publish Command
Video - 00:7:26 mins
Lesson 008 Relocating Shared Code
Video - 00:7:29 mins
Lesson 009 Updating Import Statements
Video - 00:5:17 mins
Lesson 010 Updating the Common Module
Video - 00:5:34 mins
13 – Create-Read-Update-Destroy Server Setup
Download Attachment
Reading
Lesson 001 Ticketing Service Overview
Video - 00:3:3 mins
Lesson 002 Project Setup
Video - 00:5:25 mins
Lesson 003 Running the Ticket Service
Video - 00:6:5 mins
Lesson 004 Mongo Connection URI
Video - 00:8:14 mins
Lesson 005 Quick Auth Update
Video - 00:1:47 mins
Lesson 006 Test-First Approach
Video - 00:4:19 mins
Lesson 007 Creating the Router
Video - 00:4:56 mins
Lesson 008 Adding Auth Protection
Video - 00:8:4 mins
Lesson 009 Faking Authentication During Tests
Video - 00:7:10 mins
Lesson 011 Building a Session
Video - 00:5:39 mins
Lesson 012 Testing Request Validation
Video - 00:4:12 mins
Lesson 013 Validating Title and Price
Video - 00:4:9 mins
Lesson 014 Reminder on Mongoose with TypeScript
Video - 00:7:12 mins
Lesson 015 Defining the Ticket Model
Video - 00:3:49 mins
Lesson 016 Creation via Route Handler
Video - 00:8:21 mins
Lesson 017 Testing Show Routes
Video - 00:6:52 mins
Lesson 018 Unexpected Failure!
Video - 00:5:29 mins
Lesson 019 What's that Error!
Video - 00:8:57 mins
Lesson 020 Better Error Logging
Video - 00:5:11 mins
Lesson 021 Complete Index Route Implementation
Video - 00:6:31 mins
Lesson 022 Ticket Updating
Video - 00:6:15 mins
Lesson 023 Handling Updates
Video - 00:4:15 mins
Lesson 024 Permission Checking
Video - 00:6:49 mins
Lesson 025 Final Update Changes
Video - 00:9:4 mins
Lesson 026 Manual Testing
Video - 00:5:36 mins
14 – NATS Streaming Server – An Event Bus Implementation
Download Attachment
Reading
Lesson 001 What Now
Video - 00:2:50 mins
Lesson 003 Three Important Items
Video - 00:4:34 mins
Lesson 004 Creating a NATS Streaming Deployment
Video - 00:6:25 mins
Lesson 005 Big Notes on NATS Streaming
Video - 00:9:53 mins
Lesson 006 Building a NATS Test Project
Video - 00:7:31 mins
Lesson 007 Port-Forwarding with Kubectl
Video - 00:4:40 mins
Lesson 008 Publishing Events
Video - 00:6:21 mins
Lesson 010 Listening For Data
Video - 00:6:55 mins
Lesson 011 Accessing Event Data
Video - 00:6:56 mins
Lesson 012 Client ID Generation
Video - 00:4:48 mins
Lesson 013 Queue Groups
Video - 00:7:28 mins
Lesson 014 Manual Ack Mode
Video - 00:9:52 mins
Lesson 015 Client Health Checks
Video - 00:9:45 mins
Lesson 016 Graceful Client Shutdown
Video - 00:6:42 mins
Lesson 017 Core Concurrency Issues
Video - 00:12:56 mins
Lesson 018 Common Questions
Video - 00:8:8 mins
Lesson 019 [Optional] More Possible Concurrency Solutions
Video - 00:16:42 mins
Lesson 020 Solving Concurrency Issues
Video - 00:20:5 mins
Lesson 021 Concurrency Control with the Tickets App
Video - 00:9:40 mins
Lesson 022 Event Redelivery
Video - 00:4:35 mins
Lesson 023 Durable Subscriptions
Video - 00:8:59 mins
15 – Connecting to NATS in a Node JS World
Download Attachment
Reading
Lesson 001 Reusable NATS Listeners
Video - 00:4:33 mins
Lesson 002 The Listener Abstract Class
Video - 00:9:27 mins
Lesson 003 Extending the Listener
Video - 00:5:53 mins
Lesson 004 Quick Refactor
Video - 00:3:18 mins
Lesson 005 Leveraging TypeScript for Listener Validation
Video - 00:5:28 mins
Lesson 006 Subjects Enum
Video - 00:3:29 mins
Lesson 007 Custom Event Interface
Video - 00:2:26 mins
Lesson 008 Enforcing Listener Subjects
Video - 00:7:22 mins
Lesson 010 Enforcing Data Types
Video - 00:3:54 mins
Lesson 011 Where Does this Get Used
Video - 00:2:49 mins
Lesson 012 Custom Publisher
Video - 00:8:11 mins
Lesson 013 Using the Custom Publisher
Video - 00:3:50 mins
Lesson 014 Awaiting Event Publication
Video - 00:4:28 mins
Lesson 015 Common Event Definitions Summary
Video - 00:6:26 mins
Lesson 016 Updating the Common Module
Video - 00:7:35 mins
Lesson 017 Restarting NATS
Video - 00:2:10 mins
16 – Managing a NATS Client
Download Attachment
Reading
Lesson 001 Publishing Ticket Creation
Video - 00:3:48 mins
Lesson 002 More on Publishing
Video - 00:3:19 mins
Lesson 003 NATS Client Singleton
Video - 00:5:24 mins
Lesson 005 Remember Mongoose
Video - 00:4:57 mins
Lesson 007 Singleton Implementation
Video - 00:9:4 mins
Lesson 008 Accessing the NATS Client
Video - 00:4:28 mins
Lesson 009 Graceful Shutdown
Video - 00:6:55 mins
Lesson 010 Successful Listen!
Video - 00:3:23 mins
Lesson 011 Ticket Update Publishing
Video - 00:4:28 mins
Lesson 012 Failed Event Publishing
Video - 00:7:3 mins
Lesson 013 Handling Publish Failures
Video - 00:6:2 mins
Lesson 014 Fixing a Few Tests
Video - 00:3:52 mins
Lesson 015 Redirecting Imports
Video - 00:5:35 mins
Lesson 016 Providing a Mock Implementation
Video - 00:9:9 mins
Lesson 017 Test-Suite Wide Mocks
Video - 00:2:12 mins
Lesson 018 Ensuring Mock Invocations
Video - 00:9:13 mins
Lesson 019 NATS Env Variables
Video - 00:8:1 mins
17 – Cross-Service Data Replication In Action
Download Attachment
Reading
Lesson 001 The Orders Service
Video - 00:5:2 mins
Lesson 002 Scaffolding the Orders Service
Video - 00:4:39 mins
Lesson 003 A Touch More Setup
Video - 00:7:33 mins
Lesson 004 Ingress Routing Rules
Video - 00:1:54 mins
Lesson 005 Scaffolding a Few Route Handlers
Video - 00:9:55 mins
Lesson 006 Subtle Service Coupling
Video - 00:6:43 mins
Lesson 007 Associating Orders and Tickets
Video - 00:6:49 mins
Lesson 008 Order Model Setup
Video - 00:8:52 mins
Lesson 009 The Need for an Enum
Video - 00:5:56 mins
Lesson 010 Creating an Order Status Enum
Video - 00:8:31 mins
Lesson 011 More on Mongoose Refs
Video - 00:2:58 mins
Lesson 012 Defining the Ticket Model
Video - 00:7:9 mins
Lesson 013 Order Creation Logic
Video - 00:5:45 mins
Lesson 014 Finding Reserved Tickets
Video - 00:6:10 mins
Lesson 015 Convenience Document Methods
Video - 00:7:37 mins
Lesson 016 Order Expiration Times
Video - 00:6:5 mins
Lesson 018 Test Suite Setup
Video - 00:2:36 mins
Lesson 020 Asserting Tickets Exist
Video - 00:6:8 mins
Lesson 021 Asserting Reserved Tickets
Video - 00:5:5 mins
Lesson 022 Testing the Success Case
Video - 00:4:9 mins
Lesson 023 Fetching a User's Orders
Video - 00:5:24 mins
Lesson 024 A Slightly Complicated Test
Video - 00:12:23 mins
Lesson 025 Fetching Individual Orders
Video - 00:4:36 mins
Lesson 026 Does Fetching Work
Video - 00:7:17 mins
Lesson 027 Cancelling an Order
Video - 00:4:32 mins
Lesson 028 Can We Cancel
Video - 00:9:12 mins
18 – Understanding Event Flow
Download Attachment
Reading
Lesson 001 Orders Service Events
Video - 00:4:43 mins
Lesson 002 Creating the Events
Video - 00:9:23 mins
Lesson 003 Implementing the Publishers
Video - 00:3:13 mins
Lesson 004 Publishing the Order Creation
Video - 00:5:3 mins
Lesson 005 Publishing Order Cancellation
Video - 00:2:33 mins
Lesson 006 Testing Event Publishing
Video - 00:5:33 mins
19 – Listening for Events and Handling Concurrency Issues
Download Attachment
Reading
Lesson 002 Time for Listeners!
Video - 00:2:12 mins
Lesson 003 Reminder on Listeners
Video - 00:1:54 mins
Lesson 004 Blueprint for Listeners
Video - 00:3:39 mins
Lesson 005 A Few More Reminders
Video - 00:5:26 mins
Lesson 006 Simple onMessage Implementation
Video - 00:2:17 mins
Lesson 007 ID Adjustment
Video - 00:5:44 mins
Lesson 008 Ticket Updated Listener Implementation
Video - 00:4:32 mins
Lesson 009 Initializing the Listeners
Video - 00:2:44 mins
Lesson 010 A Quick Manual Test
Video - 00:3:16 mins
Lesson 011 Clear Concurrency Issues
Video - 00:12:59 mins
Lesson 012 Reminder on Versioning Records
Video - 00:6:41 mins
Lesson 013 Optimistic Concurrency Control
Video - 00:5:37 mins
Lesson 014 Mongoose Update-If-Current
Video - 00:3:46 mins
Lesson 015 Implementing OCC with Mongoose
Video - 00:4:2 mins
Lesson 017 Testing OCC
Video - 00:9:7 mins
Lesson 018 One More Test
Video - 00:3:45 mins
Lesson 019 Who Updates Versions
Video - 00:6:29 mins
Lesson 020 Including Versions in Events
Video - 00:2:59 mins
Lesson 021 Updating Tickets Event Definitions
Video - 00:3:55 mins
Lesson 023 Applying a Version Query
Video - 00:7:14 mins
Lesson 024 Did it Work
Video - 00:4:31 mins
Lesson 025 Abstracted Query Method
Video - 00:5:42 mins
Lesson 026 [Optional] Versioning Without Update-If-Current
Video - 00:18:34 mins
Lesson 027 Testing Listeners
Video - 00:4:55 mins
Lesson 028 A Complete Listener Test
Video - 00:9:25 mins
Lesson 029 Testing the Ack Call
Video - 00:2:9 mins
Lesson 030 Testing the Ticket Updated Listener
Video - 00:8:21 mins
Lesson 031 Success Case Testing
Video - 00:4:49 mins
Lesson 032 Out-Of-Order Events
Video - 00:4:51 mins
Lesson 033 The Next Few Videos
Video - 00:3:39 mins
Lesson 034 Fixing a Few Tests
Video - 00:6:36 mins
Lesson 035 Listeners in the Tickets Service
Video - 00:1:47 mins
Lesson 036 Building the Listener
Video - 00:4:59 mins
Lesson 037 Strategies for Locking a Ticket
Video - 00:5:28 mins
Lesson 038 Reserving a Ticket
Video - 00:3:42 mins
Lesson 039 Setup for Testing Reservation
Video - 00:7:00 mins
Lesson 040 Test Implementation
Video - 00:4:29 mins
Lesson 041 Missing Update Event
Video - 00:6:14 mins
Lesson 042 Private vs Protected Properties
Video - 00:6:54 mins
Lesson 043 Publishing While Listening
Video - 00:6:42 mins
Lesson 044 Mock Function Arguments
Video - 00:9:49 mins
Lesson 045 Order Cancelled Listener
Video - 00:6:51 mins
Lesson 046 A Lightning-Quick Test
Video - 00:7:28 mins
Lesson 047 Don't Forget to Listen!
Video - 00:2:21 mins
Lesson 048 Rejecting Edits of Reserved Tickets
Video - 00:6:15 mins
20 – Worker Services
Download Attachment
Reading
Lesson 001 The Expiration Service
Video - 00:2:38 mins
Lesson 002 Expiration Options
Video - 00:7:55 mins
Lesson 003 Initial Setup
Video - 00:6:14 mins
Lesson 005 A Touch of Kubernetes Setup
Video - 00:7:44 mins
Lesson 006 File Sync Setup
Video - 00:2:32 mins
Lesson 007 Listener Creation
Video - 00:3:42 mins
Lesson 008 What's Bull All About
Video - 00:3:56 mins
Lesson 009 Creating a Queue
Video - 00:9:7 mins
Lesson 010 Queueing a Job on Event Arrival
Video - 00:5:10 mins
Lesson 011 Testing Job Processing
Video - 00:3:17 mins
Lesson 012 Delaying Job Processing
Video - 00:5:23 mins
Lesson 013 Defining the Expiration Complete Event
Video - 00:3:50 mins
Lesson 014 Publishing an Event on Job Processing
Video - 00:6:27 mins
Lesson 015 Handling an Expiration Event
Video - 00:6:00 mins
Lesson 016 Emitting the Order Cancelled Event
Video - 00:5:37 mins
Lesson 017 Testing the Expiration Complete Listener
Video - 00:5:52 mins
Lesson 018 A Touch More Testing
Video - 00:7:20 mins
Lesson 019 Listening for Expiration
Video - 00:2:20 mins
21 – Handling Payments
Download Attachment
Reading
Lesson 001 The Payments Service
Video - 00:2:11 mins
Lesson 003 Initial Setup
Video - 00:8:46 mins
Lesson 004 Replicated Fields
Video - 00:5:57 mins
Lesson 005 Another Order Model!
Video - 00:7:30 mins
Lesson 006 Update-If-Current
Video - 00:1:17 mins
Lesson 007 Replicating Orders
Video - 00:4:7 mins
Lesson 008 Testing Order Creation
Video - 00:6:12 mins
Lesson 009 Marking an Order as Cancelled
Video - 00:5:39 mins
Lesson 010 Cancelled Testing
Video - 00:6:42 mins
Lesson 011 Starting the Listeners
Video - 00:3:54 mins
Lesson 012 Payments Flow with Stripe
Video - 00:5:10 mins
Lesson 013 Implementing the Create Charge Handler
Video - 00:8:32 mins
Lesson 014 Validating Order Payment
Video - 00:4:3 mins
Lesson 015 Testing Order Validation Before Payment
Video - 00:6:59 mins
Lesson 016 Testing Same-User Validation
Video - 00:5:10 mins
Lesson 017 Stripe Setup
Video - 00:3:58 mins
Lesson 018 Creating a Stripe Secret
Video - 00:3:20 mins
Lesson 019 Creating a Charge with Stripe
Video - 00:6:9 mins
Lesson 020 Manual Testing of Payments
Video - 00:6:35 mins
Lesson 021 Automated Payment Testing
Video - 00:6:27 mins
Lesson 022 Mocked Stripe Client
Video - 00:4:23 mins
Lesson 023 A More Realistic Test Setup
Video - 00:9:16 mins
Lesson 024 Realistic Test Implementation
Video - 00:6:15 mins
Lesson 025 Tying an Order and Charge Together
Video - 00:7:18 mins
Lesson 026 Testing Payment Creation
Video - 00:6:13 mins
Lesson 027 Publishing a Payment Created Event
Video - 00:6:31 mins
Lesson 028 More on Publishing
Video - 00:3:18 mins
Lesson 029 Marking an Order as Complete
Video - 00:6:18 mins
Lesson 031 Don't Cancel Completed Orders!
Video - 00:1:1 mins
22 – Back to the Client
Download Attachment
Reading
Lesson 001 A Few More Pages
Video - 00:6:16 mins
Lesson 002 Reminder on Data Fetching with Next
Video - 00:6:9 mins
Lesson 003 Two Quick Fixes
Video - 00:5:43 mins
Lesson 004 Scaffolding a Form
Video - 00:3:43 mins
Lesson 005 Sanitizing Price Input
Video - 00:6:29 mins
Lesson 006 Ticket Creation
Video - 00:6:44 mins
Lesson 007 Listing All Tickets
Video - 00:7:41 mins
Lesson 009 Linking to Wildcard Routes
Video - 00:7:7 mins
Lesson 010 Creating an Order
Video - 00:7:25 mins
Lesson 011 Programmatic Navigation to Wildcard Routes
Video - 00:4:16 mins
Lesson 012 The Expiration Timer
Video - 00:10:54 mins
Lesson 013 Displaying the Expiration
Video - 00:1:1 mins
Lesson 014 Showing a Stripe Payment Form
Video - 00:3:6 mins
Lesson 016 Configuring Stripe
Video - 00:4:23 mins
Lesson 017 Test Credit Card Numbers
Video - 00:1:58 mins
Lesson 018 Paying for an Order
Video - 00:9:24 mins
Lesson 019 Filtering Reserved Tickets
Video - 00:2:27 mins
Lesson 020 Header Links
Video - 00:1:47 mins
Lesson 021 Rendering a List of Orders
Video - 00:6:20 mins
23 – CICD
Download Attachment
Reading
Lesson 001 Development Workflow
Video - 00:3:39 mins
Lesson 002 Git Repository Approaches
Video - 00:6:5 mins
Lesson 003 Creating a GitHub Action
Video - 00:7:11 mins
Lesson 004 Adding a CI Test Script
Video - 00:2:42 mins
Lesson 006 Running Tests on PR Creation
Video - 00:4:48 mins
Lesson 007 Output of Failing Tests
Video - 00:5:48 mins
Lesson 008 Running Tests in Parallel
Video - 00:7:28 mins
Lesson 009 Verifying a Test Run
Video - 00:3:1 mins
Lesson 010 Selective Test Execution
Video - 00:5:44 mins
Lesson 011 Deployment Options
Video - 00:7:40 mins
Lesson 012 Creating a Hosted Cluster
Video - 00:2:39 mins
Lesson 013 Reminder on Kubernetes Context
Video - 00:3:32 mins
Lesson 014 Reminder on Swapping Contexts
Video - 00:3:56 mins
Lesson 015 The Deployment Plan
Video - 00:4:4 mins
Lesson 016 Building an Image in an Action
Video - 00:8:40 mins
Lesson 017 Testing the Image Build
Video - 00:2:30 mins
Lesson 018 Restarting the Deployment
Video - 00:7:18 mins
Lesson 019 Applying Kubernetes Manifests
Video - 00:3:27 mins
Lesson 020 Prod vs Dev Manifest Files
Video - 00:4:23 mins
Lesson 021 Manual Secret Creation
Video - 00:3:39 mins
Lesson 022 Don't Forget Ingress-Nginx!
Video - 00:5:31 mins
Lesson 023 Testing Automated Deployment
Video - 00:2:51 mins
Lesson 024 Additional Deploy Files
Video - 00:7:12 mins
Lesson 025 A Successful Deploy!
Video - 00:6:7 mins
Lesson 026 Buying a Domain Name
Video - 00:3:10 mins
Lesson 028 Configuring the Domain Name
Video - 00:5:27 mins
Lesson 029 I Really Hope This Works
Video - 00:1:58 mins
Lesson 030 Next Steps
Video - 00:4:36 mins
24 – [Appendix A] – Basics of Docker
Download Attachment
Reading
Lesson 002 Why Use Docker
Video - 00:3:43 mins
Lesson 003 What is Docker
Video - 00:2:53 mins
Lesson 004 Docker for Mac Windows
Video - 00:1:57 mins
Lesson 008 Using the Docker Client
Video - 00:5:3 mins
Lesson 009 But Really... What's a Container
Video - 00:8:30 mins
Lesson 010 How's Docker Running on Your Computer
Video - 00:2:44 mins
Lesson 011 Docker Run in Detail
Video - 00:1:54 mins
Lesson 012 Overriding Default Commands
Video - 00:5:12 mins
Lesson 013 Listing Running Containers
Video - 00:4:9 mins
Lesson 014 Container Lifecycle
Video - 00:5:16 mins
Lesson 015 Restarting Stopped Containers
Video - 00:3:43 mins
Lesson 016 Removing Stopped Containers
Video - 00:1:39 mins
Lesson 017 Retrieving Output Logs
Video - 00:2:33 mins
Lesson 018 Stopping Containers
Video - 00:5:21 mins
Lesson 019 Multi-Command Containers
Video - 00:4:16 mins
Lesson 020 Executing Commands in Running Containers
Video - 00:2:53 mins
Lesson 021 The Purpose of the 'it' Flag
Video - 00:4:35 mins
Lesson 022 Getting a Command Prompt in a Container
Video - 00:4:6 mins
Lesson 023 Starting with a Shell
Video - 00:2:13 mins
Lesson 024 Container Isolation
Video - 00:3:9 mins
Lesson 025 Creating Docker Images
Video - 00:2:36 mins
Lesson 027 Building a Dockerfile
Video - 00:4:51 mins
Lesson 028 Dockerfile Teardown
Video - 00:2:41 mins
Lesson 029 What's a Base Image
Video - 00:5:40 mins
Lesson 030 The Build Process in Detail
Video - 00:11:9 mins
Lesson 031 A Brief Recap
Video - 00:3:24 mins
Lesson 032 Rebuilds with Cache
Video - 00:7:2 mins
Lesson 033 Tagging an Image
Video - 00:4:26 mins
Lesson 035 Manual Image Generation with Docker Commit
Video - 00:5:1 mins
Lesson 036 Project Outline
Video - 00:2:35 mins
Lesson 037 Node Server Setup
Video - 00:5:3 mins
Lesson 038 A Few Planned Errors
Video - 00:5:12 mins
Lesson 040 Base Image Issues
Video - 00:7:50 mins
Lesson 041 A Few Missing Files
Video - 00:3:18 mins
Lesson 042 Copying Build Files
Video - 00:4:50 mins
Lesson 043 Container Port Forwarding
Video - 00:7:26 mins
Lesson 044 Specifying a Working Directory
Video - 00:7:52 mins
Lesson 045 Unnecessary Rebuilds
Video - 00:4:16 mins
Lesson 046 Minimizing Cache Busting and Rebuilds
Video - 00:4:58 mins
25 – [Appendix B] – Basics of Typescript
Download Attachment
Reading
Lesson 001 How to Get Help
Video - 00:1:4 mins
Lesson 002 TypeScript Overview
Video - 00:6:19 mins
Lesson 003 Environment Setup
Video - 00:8:00 mins
Lesson 005 A First App
Video - 00:4:43 mins
Lesson 006 Executing Typescript Code
Video - 00:5:3 mins
Lesson 007 One Quick Change
Video - 00:3:35 mins
Lesson 008 Catching Errors with TypeScript
Video - 00:7:22 mins
Lesson 009 Catching More Errors!
Video - 00:5:15 mins
Lesson 010 Do Not Skip - Course Overview
Video - 00:3:36 mins
Lesson 011 Types
Video - 00:5:12 mins
Lesson 012 More on Types
Video - 00:5:53 mins
Lesson 013 Examples of Types
Video - 00:4:49 mins
Lesson 014 Where Do We Use Types
Video - 00:00:49 mins
Lesson 015 Type Annotations and Inference
Video - 00:2:3 mins
Lesson 016 Annotations With Variables
Video - 00:4:53 mins
Lesson 017 Object Literal Annotations
Video - 00:6:53 mins
Lesson 018 Annotations Around Functions
Video - 00:5:56 mins
Lesson 019 Understanding Inference
Video - 00:3:51 mins
Lesson 020 The Any Type
Video - 00:7:47 mins
Lesson 021 Fixing the Any Type
Video - 00:1:49 mins
Lesson 022 Delayed Initialization
Video - 00:3:5 mins
Lesson 023 When Inference Doesn't Work
Video - 00:4:37 mins
Lesson 024 More on Annotations Around Functions
Video - 00:4:56 mins
Lesson 025 Inference Around Functions
Video - 00:6:8 mins
Lesson 026 Annotations for Anonymous Functions
Video - 00:1:43 mins
Lesson 027 Void and Never
Video - 00:2:49 mins
Lesson 028 Destructuring with Annotations
Video - 00:3:35 mins
Lesson 029 Annotations Around Objects
Video - 00:7:5 mins
Lesson 030 Arrays in TypeScript
Video - 00:5:5 mins
Lesson 031 Why Typed Arrays
Video - 00:4:30 mins
Lesson 032 Multiple Typees in Arrays
Video - 00:2:57 mins
Lesson 033 When to Use Typed Arrays
Video - 00:00:54 mins
Lesson 034 Tuples in TypeScript
Video - 00:4:5 mins
Lesson 035 Tuples in Action
Video - 00:5:28 mins
Lesson 036 Why Tuples
Video - 00:3:20 mins
Lesson 037 Interfaces
Video - 00:1:26 mins
Lesson 038 Long Type Annotations
Video - 00:4:42 mins
Lesson 039 Fixing Annotations With Interfaces
Video - 00:4:36 mins
Lesson 040 Syntax Around Interfaces
Video - 00:3:31 mins
Lesson 041 Functions in Interfaces
Video - 00:4:46 mins
Lesson 042 Code Reuse with Interfaces
Video - 00:4:15 mins
Lesson 043 General Plan with Interfaces
Video - 00:3:12 mins
Lesson 044 Classes
Video - 00:3:47 mins
Lesson 045 Basic Inheritance
Video - 00:3:3 mins
Lesson 046 Class Method Modifiers
Video - 00:6:41 mins
Lesson 047 Fields in Classes
Video - 00:6:18 mins
Lesson 048 Fields with Inheritance
Video - 00:4:18 mins
Lesson 049 Where to Use Classes
Video - 00:1:10 mins
Lesson 051 App Overview
Video - 00:2:45 mins
Lesson 052 Bundling with Parcel
Video - 00:4:54 mins
Lesson 053 Project Structure
Video - 00:3:19 mins
Lesson 055 Generating Random Data
Video - 00:5:29 mins
Lesson 056 Type Definition Files
Video - 00:5:17 mins
Lesson 057 Using Type Definition Files
Video - 00:6:20 mins
Lesson 058 Export Statements in TypeScript
Video - 00:5:6 mins
Lesson 059 Defining a Company
Video - 00:4:43 mins
Lesson 061 Adding Google Maps Support
Video - 00:7:38 mins
Lesson 063 Google Maps Integration with TypeScript
Video - 00:4:6 mins
Lesson 064 Exploring Type Definition Files
Video - 00:12:46 mins
Lesson 065 Hiding Functionality
Video - 00:6:28 mins
Lesson 066 Why Use Private Modifiers Here's Why
Video - 00:8:25 mins
Lesson 067 Adding Markers
Video - 00:9:18 mins
Lesson 068 Duplicate Code
Video - 00:2:45 mins
Lesson 069 One Possible Solution
Video - 00:6:38 mins
Lesson 070 Restricting Access with Interfaces
Video - 00:5:36 mins
Lesson 071 Implicit Type Checks
Video - 00:3:26 mins
Lesson 072 Showing Popup Windows
Video - 00:6:47 mins
Lesson 073 Updating Interface Definitions
Video - 00:7:12 mins
Lesson 074 Optional Implements Clauses
Video - 00:6:6 mins
Lesson 075 App Wrapup
Video - 00:8:8 mins
26 – Bonus!
Download Vietnamese subtitle: Click here
Download English subtitle: Click here
Finish Course Early?
You have not completed all required lessons and assessments.
Your Progress
0%
