Advanced Node For Developers

Tags: Node.Js

Get advanced with Node.Js! Learn caching with Redis, speed up through clustering, and add image upload with S3 and Node!

Last updated 2022-01-10 | 4.6

- 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

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

* 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

Course content

8 sections • 170 lectures

How to Get Help Preview 01:07

Course Resources Preview 00:38

Join Our Community! Preview 00:07

Starting With Node Internals Preview 03:47

Module Implementations Preview 08:23

Node Backed by C++! Preview 06:33

Test Your Knowledge - Node's Implementation

The Basics of Threads Preview 06:29

The Node Event Loop Preview 06:34

The Event Loop Implementation Preview 07:22

Event Loop Ticks Preview 06:46

Is Node Single Threaded? Preview 05:06

Testing for Single Threads Preview 06:49

The Libuv Thread Pool Preview 03:07

Threadpools with Multithreading Preview 06:06

Changing Threadpool Size Preview 05:25

Common Threadpool Questions Preview 03:16

Explaining OS Operations Preview 03:52

Libuv OS Delegation Preview 03:19

OS/Async Common Questions Preview 02:40

Review Preview 02:48

Check Your Knowledge - The Event Loop

Crazy Node Behavior Preview 07:39

Unexpected Event Loop Events Preview 11:23

Enhancing Performance Preview 02:18

Express Setup Preview 03:22

Blocking the Event Loop Preview 07:06

Clustering in Theory Preview 05:11

Forking Children Preview 05:37

Clustering in Action Preview 05:33

Benchmarking Server Performance Preview 05:16

Benchmark Refactor Preview 03:55

Need More Children! Preview 16:42

PM2 Installation Preview 02:53

PM2 Configuration Preview 06:49

Webworker Threads Preview 02:27

Worker Threads in Action Preview 11:33

Benchmarking Workers Preview 05:17

The Next Phase Preview 02:12

Project Walkthrough Preview 08:42

Key Customization Preview 03:11

MongoDB Atlas Setup and Configuration Preview 01:25

MongoDB Creation Preview 06:23

Routes Walkthrough Preview 04:17

MongoDB Query Performance Preview 10:42

Query Caching Layer Preview 07:55

Redis Introduction Preview 03:22

Installing Redis on MacOS Preview 03:19

Redis on Windows Preview 00:17

Getting and Setting Basic Values Preview 06:47

Redis Hashes Preview 06:57

One Redis Gotcha Preview 02:53

Cache Keys Preview 07:47

Promisifying a Function Preview 08:07

Caching in Action Preview 07:59

Caching Issues Preview 05:26

The Ultimate Caching Solution Preview 20:59

Patching Mongoose's Exec Preview 10:42

Restoring Blog Routes Handler Preview 02:05

Unique Keys Preview 06:00

Key Creation Preview 03:08

Restoring Redis Config Preview 01:27

Cache Implementation Preview 04:27

Resolving Values Preview 05:46

Hydrating Models Preview 06:25

Hydrating Arrays Preview 03:27

Toggleable Cache Preview 08:41

Cache Expiration Preview 02:30

Forced Cache Expiration Preview 05:15

Nested Hashes Preview 06:46

Clearing Nested hashes Preview 04:36

Automated Cache Clearing with Middlware Preview 06:39

Testing Flow Preview 06:38

Testing Challenges Preview 03:25

Commands Around Testing Preview 03:13

First Jest Test Preview 04:26

Launching Chromium Instances Preview 09:50

Chromium Navigation Preview 04:31

Extracting Page Content Preview 05:03

Puppeteer - Behind the Scenes Preview 04:44

DRY Tests Preview 03:23

Browser Termination Preview 01:34

Asserting OAuth Flow Preview 07:29

Asserting URL Domain Preview 02:59

Issues with OAuth Preview 05:11

Solving Authentication Issues with Automation Testing Preview 04:36

The Google OAuth Flow Preview 07:16

Inner Workings of Sessions Preview 12:06

Sessions From Another Angle Preview 08:22

Session Signatures Preview 11:33

Generating Sessions and Signatures Preview 09:03

Assembling the Pieces Preview 08:07

WaitFor Statements Preview 09:17

Factory Functions Preview 04:59

The Session Factory Preview 08:48

Assembling the Session Factory Preview 03:03

Code Separation Preview 06:22

Global Jest Setup Preview 07:00

Testing Factory Tests! Preview 03:41

Adding a Login Method Preview 05:01

Extending Page Preview 07:58

Introduction to Proxies Preview 07:46

Proxies in Action Preview 12:10

Combining Object Property Access Preview 08:17

Combining the Page and Browser Preview 08:37

Custom Page Implementation Preview 04:16

Function Lookup Priority Preview 04:26

Gee, I Hope This Works! Preview 05:32

Reusable Functions on Page Preview 05:38

Testing Blog Creation Preview 04:53

Default Navigation Preview 05:30

Asserting Form Display Preview 05:59

Test Timeout Preview 05:23

Common Test Setup Preview 05:07

Nested Describes for Structure Preview 07:00

Asserting Validation Errors Preview 07:39

Asserting Form Confirmation Preview 06:25

Asserting Blog Creation Preview 05:57

Options for Testing Prohibited Actions Preview 03:32

Direct API Requests Preview 11:44

Executed Arbitrary JS in Chromium Preview 03:54

Asserting Page Response Preview 07:24

Get Restrictions Preview 02:44

A Final 'GET' Test Preview 02:56

Super Advanced Test Helpers Preview 31:45

Introduction to CI Preview 07:24

CI Providers Preview 06:21

The Basics of YAML Files Preview 04:22

Travis YAML Setup Preview 10:04

More Travis YAML Preview 05:08

Client Builds Preview 06:37

Script Config Preview 06:18

Using Travis Documentation Preview 05:44

More Server Configuration Preview 13:26

Note - Travis Update Preview 00:20

A Touch More Configuration Preview 03:11

Git Repo Setup Preview 04:18

Travis CI Setup Preview 02:15

Triggering CI Builds Preview 02:48

Build Success Preview 01:18

Image Upload Preview 02:15

Big Issues Around Image Upload Preview 04:40

Alternate Image Upload Preview 03:33

Chosen Storage Solution Preview 04:17

Upload Constraints Preview 04:26

Image File Transport Preview 06:04

Upload Flow with AWS S3 Preview 05:22

Details of the Presigned URL Preview 06:47

Security Issues Solved with Presigned URL's Preview 04:15

Adding an Image Picker Preview 03:30

Handling File Changes Preview 04:39

Recording Image Files Preview 04:38

The SubmitBlog Function Preview 03:07

AWS Credentials with IAM Preview 05:08

Creating S3 Buckets Preview 03:16

Allowing Actions with IAM Policies Preview 08:17

Creating IAM Users Preview 04:41

Upload Routes Files Preview 05:14

Configuring the AWS SDK Preview 03:18

GetSignedURL Arguments Preview 10:06

Calling GetSignedURL Preview 09:35

Viewing the Signed URL Preview 02:17

Attempting Image Upload Preview 07:59

Handling CORS Errors Preview 05:20

Outstanding Issues Preview 01:39

S3 Bucket Policies Preview 05:01

Tying Uploads to Blogs Preview 04:18

Ensuring Images get Tied Preview 02:01

Displaying Images Preview 04:06