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