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.65 (9807 reviews)
Udemy
platform
English
language
Web Development
category
instructor
Node JS: Advanced Concepts
63,985
students
16 hours
content
Apr 2024
last update
$129.99
regular price

What you will 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

Why take this course?

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.

Content

The Internals of Node

How to Get Help
Starting With Node Internals
Module Implementations
Node Backed by C++!
Test Your Knowledge - Node's Implementation
The Basics of Threads
The Node Event Loop
The Event Loop Implementation
Event Loop Ticks
Is Node Single Threaded?
Testing for Single Threads
The Libuv Thread Pool
Threadpools with Multithreading
Changing Threadpool Size
Common Threadpool Questions
Explaining OS Operations
Libuv OS Delegation
OS/Async Common Questions
Review
Check Your Knowledge - The Event Loop
Crazy Node Behavior
Unexpected Event Loop Events

Enhancing Node Performance

Enhancing Performance
Express Setup
Blocking the Event Loop
Clustering in Theory
Forking Children
Clustering in Action
Benchmarking Server Performance
Benchmark Refactor
Need More Children!
PM2 Installation
PM2 Configuration
Webworker Threads
Worker Threads in Action
Benchmarking Workers

Project Setup

The Next Phase
Project Walkthrough
Key Customization
MongoDB Atlas Setup and Configuration
MongoDB Creation
Routes Walkthrough

Data Caching with Redis

MongoDB Query Performance
Query Caching Layer
Redis Introduction
Installing Redis on MacOS
Redis on Windows
Getting and Setting Basic Values
Redis Hashes
One Redis Gotcha
Cache Keys
Promisifying a Function
Caching in Action
Caching Issues
The Ultimate Caching Solution
Patching Mongoose's Exec
Restoring Blog Routes Handler
Unique Keys
Key Creation
Restoring Redis Config
Cache Implementation
Resolving Values
Hydrating Models
Hydrating Arrays
Toggleable Cache
Cache Expiration
Forced Cache Expiration
Nested Hashes
Clearing Nested hashes
Automated Cache Clearing with Middlware

Automated Headless Browser Testing

Testing Flow
Testing Challenges
Commands Around Testing
First Jest Test
Launching Chromium Instances
Chromium Navigation
Extracting Page Content
Puppeteer - Behind the Scenes
DRY Tests
Browser Termination
Asserting OAuth Flow
Asserting URL Domain
Issues with OAuth
Solving Authentication Issues with Automation Testing
The Google OAuth Flow
Inner Workings of Sessions
Sessions From Another Angle
Session Signatures
Generating Sessions and Signatures
Assembling the Pieces
WaitFor Statements
Factory Functions
The Session Factory
Assembling the Session Factory
Code Separation
Global Jest Setup
Testing Factory Tests!
Adding a Login Method
Extending Page
Introduction to Proxies
Proxies in Action
Combining Object Property Access
Combining the Page and Browser
Custom Page Implementation
Function Lookup Priority
Gee, I Hope This Works!
Reusable Functions on Page
Testing Blog Creation
Default Navigation
Asserting Form Display
Test Timeout
Common Test Setup
Nested Describes for Structure
Asserting Validation Errors
Asserting Form Confirmation
Asserting Blog Creation
Options for Testing Prohibited Actions
Direct API Requests
Executed Arbitrary JS in Chromium
Asserting Page Response
Get Restrictions
A Final 'GET' Test
Super Advanced Test Helpers

Wiring Up Continuous Integration

Introduction to CI
CI Providers
The Basics of YAML Files
Travis YAML Setup
More Travis YAML
Client Builds
Script Config
Using Travis Documentation
More Server Configuration
Note - Travis Update
A Touch More Configuration
Git Repo Setup
Travis CI Setup
Triggering CI Builds
Build Success

Scalable Image/File Upload

Image Upload
Big Issues Around Image Upload
Alternate Image Upload
Chosen Storage Solution
Upload Constraints
Image File Transport
Upload Flow with AWS S3
Details of the Presigned URL
Security Issues Solved with Presigned URL's
Adding an Image Picker
Handling File Changes
Recording Image Files
The SubmitBlog Function
AWS Credentials with IAM
Creating S3 Buckets
Allowing Actions with IAM Policies
Creating IAM Users
Upload Routes Files
Configuring the AWS SDK
GetSignedURL Arguments
Calling GetSignedURL
Viewing the Signed URL
Attempting Image Upload
Handling CORS Errors
Outstanding Issues
S3 Bucket Policies
Tying Uploads to Blogs
Ensuring Images get Tied
Displaying Images

Extras

Bonus!

Screenshots

Node JS: Advanced Concepts - Screenshot_01Node JS: Advanced Concepts - Screenshot_02Node JS: Advanced Concepts - Screenshot_03Node JS: Advanced Concepts - Screenshot_04

Our review

📚 **Global Course Rating:** 4.65 **Overall Consensus:** This course is highly regarded by recent reviewers, with a majority praising its comprehensive coverage of advanced Node.js concepts, clear explanations, and effective use of illustrations to aid understanding. The content is considered an excellent investment of time and money, providing in-depth knowledge and a wide perspective on the topics covered. **Pros:** - **Pacing and Explanation:** Reviewers appreciate the author's tempo through the modules, with examples explained thoroughly and informatively. - **Content Depth:** The course is noted for its depth, particularly in advanced features of Node.js, including caching and authentication strategies. - **Visual Aids:** The use of illustrations to explain key concepts is singled out as a highlight, making complex ideas more accessible. - **Instructor's Knowledge:** Despite some reviewers mentioning that the instructor does not have deep knowledge in all areas, Stephen Grider is commended for providing a high-level overview and useful insights. - **Coverage of Advanced Concepts:** Important advanced concepts such as integration testing with Jest and Chromium, Redis usage, clustering, and benchmarking are covered extensively. - **Clear Instructions:** The instructions are clear, and the course structure is well-received, allowing learners to follow along effectively. - **Real-world Application:** Learners report that the knowledge gained from this course can be readily applied in production-ready applications. **Cons:** - **Outdated Content:** A significant concern raised by reviewers is the outdated nature of some content, particularly with regards to Node.js version, Puppeteer, and AWS SDK updates. - **Misplaced Topics:** Some sections, especially those involving React and testing, are felt to be misplaced within a course that should be more focused on Node.js. - **Unclear Project Setup:** A few reviewers encountered issues with the project setup, rendering a large portion of the course useless due to compatibility with newer versions of tools like Puppeteer. - **Lack of MVC Model Implementation:** The course does not follow the MVC model and instead writes all logic inside routes, which some programmers find problematic. - **Course Updates:** There is confusion and criticism regarding the lack of transparency in course updates on Udemy, with some learners only realizing the age of the content after purchase. **Suggestions for Improvement:** - **Update Content:** Reviewers suggest that the course should be updated to reflect the latest versions of Node.js, Puppeteer, AWS SDKs, and other technologies discussed. - **Add Advanced Topics:** Some learners recommend expanding the course to include additional advanced topics such as Streams, Events, Websockets, webhooks, and Design patterns. - **Clarify Project Setup:** Ensuring that project setups are clear and compatible with current versions of tools would greatly enhance the learning experience. - **Improve MVC Implementation:** Including a proper implementation of the MVC model could improve the course's relevance for backend developers. **Final Thoughts:** Despite some criticisms regarding outdated content and areas needing improvement, this Node.js course by Stephen Grider remains highly recommended due to its comprehensive coverage of advanced concepts and clear instruction style. With a few updates and clarifications, it could become an even more valuable resource for learners at all levels.

Coupons

DateDiscountStatus
2/17/202088% OFF
expired
3/27/202088% OFF
expired

Charts

Price

Node JS: Advanced Concepts - Price chart

Rating

Node JS: Advanced Concepts - Ratings chart

Enrollment distribution

Node JS: Advanced Concepts - Distribution chart

Related Topics

1587718
udemy ID
3/9/2018
course created date
7/17/2019
course indexed date
Bot
course submited by