Node JS: Advanced Concepts
4.7 (4,609 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
28,678 students enrolled

Node JS: Advanced Concepts

Get advanced with Node.Js! Learn caching with Redis, speed up through clustering, and add image upload with S3 and Node!
4.7 (4,612 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
28,691 students enrolled
Created by Stephen Grider
Last updated 5/2020
English
English [Auto-generated], Portuguese [Auto-generated], 1 more
  • Spanish [Auto-generated]
Current price: $83.99 Original price: $119.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 16 hours on-demand video
  • 4 articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Absolutely master the Event Loop and understand each of its stages
  • Utilize Worker Threads and Clustering to dramatically improve the performance of Node servers
  • Speed up database queries with caching for MongoDB backed by Redis
  • Add automated browser testing to your Node server, complete with continuous integration pipeline setup
  • Apply scalable image and file upload to your app, utilizing AWS S3
Course content
Expand all 166 lectures 16:02:52
+ The Internals of Node
20 lectures 01:48:31
Node Backed by C++!
06:33
Test Your Knowledge - Node's Implementation
3 questions
The Basics of Threads
06:29
The Node Event Loop
06:34
The Event Loop Implementation
07:22
Event Loop Ticks
06:46
Is Node Single Threaded?
05:06
Testing for Single Threads
06:49
The Libuv Thread Pool
03:07
Threadpools with Multithreading
06:06
Changing Threadpool Size
05:25
Common Threadpool Questions
03:16
Explaining OS Operations
03:52
Libuv OS Delegation
03:19
OS/Async Common Questions
02:40
Review
02:48
Check Your Knowledge - The Event Loop
2 questions
Crazy Node Behavior
07:39
Unexpected Event Loop Events
11:23
+ Enhancing Node Performance
14 lectures 01:23:59
Enhancing Performance
02:18
Express Setup
03:22
Blocking the Event Loop
07:06
Clustering in Theory
05:11
Forking Children
05:37
Clustering in Action
05:33
Benchmarking Server Performance
05:16
Benchmark Refactor
03:55
Need More Children!
16:42
PM2 Installation
02:53
PM2 Configuration
06:49
Webworker Threads
02:27
Worker Threads in Action
11:33
Benchmarking Workers
05:17
+ Project Setup
6 lectures 26:10
The Next Phase
02:12
Project Walkthrough
08:42
Key Customization
03:11
MongoDB Atlas Setup and Configuration
01:25
MongoDB Creation
06:23
Routes Walkthrough
04:17
+ Data Caching with Redis
28 lectures 02:50:24
MongoDB Query Performance
10:42
Query Caching Layer
07:55
Redis Introduction
03:22
Installing Redis on MacOS
03:19
Redis on Windows
00:17
Getting and Setting Basic Values
06:47
Redis Hashes
06:57
One Redis Gotcha
02:53
Cache Keys
07:47
Promisifying a Function
08:07
Caching in Action
07:59
Caching Issues
05:26
The Ultimate Caching Solution
20:59
Patching Mongoose's Exec
10:42
Restoring Blog Routes Handler
02:05
Unique Keys
06:00
Key Creation
03:08
Restoring Redis Config
01:27
Cache Implementation
04:27
Resolving Values
05:46
Hydrating Models
06:25
Hydrating Arrays
03:27
Toggleable Cache
08:41
Cache Expiration
02:30
Forced Cache Expiration
05:15
Nested Hashes
06:46
Clearing Nested hashes
04:36
Automated Cache Clearing with Middlware
06:39
+ Automated Headless Browser Testing
53 lectures 05:54:12
Testing Flow
06:38
Testing Challenges
03:25
Commands Around Testing
03:13
First Jest Test
04:26
Launching Chromium Instances
09:50
Chromium Navigation
04:31
Extracting Page Content
05:03
Puppeteer - Behind the Scenes
04:44
DRY Tests
03:23
Browser Termination
01:34
Asserting OAuth Flow
07:29
Asserting URL Domain
02:59
Issues with OAuth
05:11
Solving Authentication Issues with Automation Testing
04:36
The Google OAuth Flow
07:16
Inner Workings of Sessions
12:06
Sessions From Another Angle
08:22
Session Signatures
11:33
Generating Sessions and Signatures
09:03
Assembling the Pieces
08:07
WaitFor Statements
09:17
Factory Functions
04:59
The Session Factory
08:48
Assembling the Session Factory
03:03
Code Separation
06:22
Global Jest Setup
07:00
Testing Factory Tests!
03:41
Adding a Login Method
05:01
Extending Page
07:58
Introduction to Proxies
07:46
Proxies in Action
12:10
Combining Object Property Access
08:17
Combining the Page and Browser
08:37
Custom Page Implementation
04:16
Function Lookup Priority
04:26
Gee, I Hope This Works!
05:32
Reusable Functions on Page
05:38
Testing Blog Creation
04:53
Default Navigation
05:30
Asserting Form Display
05:59
Test Timeout
05:23
Common Test Setup
05:07
Nested Describes for Structure
07:00
Asserting Validation Errors
07:39
Asserting Form Confirmation
06:25
Asserting Blog Creation
05:57
Options for Testing Prohibited Actions
03:32
Direct API Requests
11:44
Executed Arbitrary JS in Chromium
03:54
Asserting Page Response
07:24
Get Restrictions
02:44
A Final 'GET' Test
02:56
Super Advanced Test Helpers
31:45
+ Wiring Up Continuous Integration
15 lectures 01:19:34
Introduction to CI
07:24
CI Providers
06:21
The Basics of YAML Files
04:22
Travis YAML Setup
10:04
More Travis YAML
05:08
Client Builds
06:37
Script Config
06:18
Using Travis Documentation
05:44
More Server Configuration
13:26
Note - Travis Update
00:20
A Touch More Configuration
03:11
Git Repo Setup
04:18
Travis CI Setup
02:15
Triggering CI Builds
02:48
Build Success
01:18
+ Scalable Image/File Upload
29 lectures 02:19:49
Image Upload
02:15
Big Issues Around Image Upload
04:40
Alternate Image Upload
03:33
Chosen Storage Solution
04:17
Upload Constraints
04:26
Image File Transport
06:04
Upload Flow with AWS S3
05:22
Details of the Presigned URL
06:47
Security Issues Solved with Presigned URL's
04:15
Adding an Image Picker
03:30
Handling File Changes
04:39
Recording Image Files
04:38
The SubmitBlog Function
03:07
AWS Credentials with IAM
05:08
Creating S3 Buckets
03:16
Allowing Actions with IAM Policies
08:17
Creating IAM Users
04:41
Upload Routes Files
05:14
Configuring the AWS SDK
03:18
GetSignedURL Arguments
10:06
Calling GetSignedURL
09:35
Viewing the Signed URL
02:17
Attempting Image Upload
07:59
Handling CORS Errors
05:20
Outstanding Issues
01:39
S3 Bucket Policies
05:01
Tying Uploads to Blogs
04:18
Ensuring Images get Tied
02:01
Displaying Images
04:06
Requirements
  • Basic knowledge of Node, Express, and MongoDB
  • Strong knowledge of Javascript
Description

Go beyond the basics of Node!  This course will give you the skills needed to become a top Node engineer.

Query Caching with Redis? You will learn it.  The Node Event LoopIncluded.  Scalable File UploadOf course!

------------------------------

This is a must-take course if you work with Node.

Node Internals: Here's one of the most common interview questions you'll face when looking for a Node job: "Can you explain Node's Event Loop?There are two types of engineers: those who can describe the Event Loop and those who cannot!  This course will ensure that you are incredibly well prepared to answer that most important question.  Besides being critical for interviews, knowledge of the Event Loop will give you a better understanding of how Node works internally.  Many engineers know not to 'block' the Event Loop, but they don't necessarily understand why.  You will be one of the engineers who can clearly articulate the performance profile of Node and its Event Loop.

Caching with Redis: We'll also supercharge the performance of database queries by implementing caching backed by Redis.  No previous experience of Redis is required!  Redis is an in-memory data store purpose built for solving caching needs.  By adding caching to your application, you can decrease the amount of time that any given request takes, improving the overall response time of your app.

File Upload: There are many resources online that offer suggestions on how to handle file upload, but few show a solution that can truly scale.  Hint: saving files directly on your server isn't a scalable solution!  Learn how to leverage AWS S3 to implement file upload that can scale to millions of users with a few dozen lines of simple code.  Plentiful discussions are included on security concerns with handling uploads, as well.

Continuous Integration Testing: This is a must have feature for any serious production app.  We'll first learn how to test huge swaths of our codebase with just a few lines of code by using Puppeteer and Jest.  After writing many effective tests, we'll enable continuous integration on Travis CI, a popular - and free - CI platform.  Testing can sometimes be boring, so we'll use this section to brush up on some advanced Javascript techniques, including one of the only legitimate uses of ES2015 Proxies that you'll ever see!

------------------------------

Here's what we'll learn:

  • Master the Node Event Loop - understand how Node executes your source code. 
  • Understand the purpose of Node, and how the code you write is eventually executed by  C++ code in the V8 engine
  • Add a huge boost to performance in your Node app through clustering and worker threads
  • Turbocharge MongoDB queries by adding query caching backed by a lightning-fast Redis instance
  • Scale your app to infinity with image and file upload backed by Amazon's S3 file service
  • Implement a continuous integration testing pipeline so you always know your project functions properly
  • Think you know everything there is about managing  cookies and session?  Well, you might, but learn even more!
  • Ensure your app works the way you expect with automated browser testing using Jest and Puppeteer
  • Bonus - learn advanced JS techniques along the way, including where to use ES2015 proxies!

I've built the course that I would have wanted to take when I was learning to Node. A course that explains the concepts and how they're implemented in the best order for you to learn and deeply understand them.

Who this course is for:
  • Anyone who wants a deep mastery of Node
  • Engineers looking to understand the internals of Node
  • Programmers looking to improve Node's performance