Skip to main content
CF

Node JS: Advanced Concepts

16h 28s
English
Paid

Unlock the full potential of Node.js with advanced concepts and techniques that will set you apart in the tech world. This course dives deep into Node's internals, enabling you to understand and leverage the Event Loop, caching, scalable file uploads, and continuous integration testing.

Course Overview

Explore the intricate workings of Node.js to enhance your backend development skills. This course is designed to equip you with the knowledge required to excel in Node.js, covering vital areas like the Event Loop, Redis caching, AWS S3 for file uploads, and more.

Node Internals: Mastering the Event Loop

One of the quintessential interview questions for Node developers is about the Event Loop. This course arms you with an in-depth understanding of the Event Loop, ensuring that you can confidently explain its function and significance. Your mastery will go beyond avoiding Event Loop blocking; you'll articulate its performance impact clearly.

Caching with Redis

Caching is crucial for performance. This course introduces Redis, a powerful in-memory data store, to supercharge your database queries. Learn to implement Redis caching to dramatically reduce request time and enhance app responsiveness, all without prior Redis experience.

Scalable File Uploads with AWS S3

Discover how to efficiently handle file uploads at scale using AWS S3. You'll learn why saving files on your server isn't scalable and how AWS S3 provides a robust solution, scaling to millions of users with minimal code. The course also covers security considerations for file handling.

Continuous Integration Testing

Every production app needs robust testing. This section will guide you through testing extensive codebases with Puppeteer and Jest, then advancing to continuous integration with Travis CI. We'll also delve into advanced JavaScript techniques, including the practical application of ES2015 Proxies.

Learning Outcomes

  • Comprehend and master the Node Event Loop.
  • Understand Node's integration with V8 engine and C++.
  • Significantly boost Node app performance using clustering and worker threads.
  • Enhance database performance with Redis-backed query caching.
  • Implement scalable file and image upload using AWS S3.
  • Set up a continuous integration testing pipeline to ensure project stability.
  • Deepen your knowledge of cookies and sessions in Node.
  • Conduct automated browser testing using Jest and Puppeteer.
  • Apply advanced JavaScript techniques, including ES2015 Proxies.

Requirements

  • Familiarity with Node, Express, and MongoDB.
  • A solid foundation in JavaScript.

Target Audience

  • Developers seeking a comprehensive mastery of Node.js.
  • Engineers interested in the internal workings of Node.
  • Programmers aiming to optimize Node performance.

This is the course I wish existed when I was delving into Node.js—a course that not only explains concepts but also demonstrates their implementation, ensuring you grasp them thoroughly and practically.

Course Highlights

In this course, you will:

  • Achieve a complete grasp of the Event Loop and its intricacies.
  • Leverage Worker Threads and Clustering for enhanced server performance.
  • Utilize Redis to speed up your database operations.
  • Integrate automated testing and continuous integration for reliable deployment.
  • Implement scalable solutions for image and file management using AWS S3.

About the Authors

Stephen Grider

Stephen Grider thumbnail

Stephen Grider is one of the longest-running and most prolific instructors on Udemy, with a catalog covering essentially every major JavaScript framework, plus Docker, Kubernetes, AWS, and the broader full-stack development landscape. His teaching style is patient and project-oriented — most of his courses are structured around building a substantial application from scratch rather than working through disconnected tutorial examples.

The catalog covers React, Redux, Next.js, Vue, Angular, GraphQL, Node.js, Docker / Kubernetes, AWS infrastructure, React Native and Flutter for mobile, the algorithm / data-structure interview prep track, and the modern TypeScript / Bun / Rust adjacent material that working JavaScript developers increasingly encounter. Few independent instructors have maintained Stephen's breadth this consistently for this long.

The CourseFlix listing under this source carries over 25 Stephen Grider courses spanning that range. Material is paid; Stephen Grider courses are typically sold individually on Udemy. Courses are aimed primarily at developers picking up a specific technology through working through a complete project.

Udemy

Udemy thumbnail

Udemy is the largest open marketplace for online courses on the internet. Founded in 2010 by Eren Bali, Oktay Caglar, and Gagan Biyani and headquartered in San Francisco, the company went public on the Nasdaq in 2021 under the ticker UDMY. The platform hosts well over two hundred thousand courses across software development, IT and cloud, data science, design, business, marketing, and creative skills, taught by tens of thousands of independent instructors. Roughly seventy million learners use it worldwide, and the corporate arm — Udemy Business — supplies a curated subset of that catalog to enterprise customers.

Because Udemy is a marketplace rather than a single editorial publisher, the catalog is uneven by design. The strongest material lives in the long-form, project-based courses authored by working engineers — full-stack JavaScript, React, Node.js, Python data science, AWS, Docker and Kubernetes, mobile development with Flutter and React Native, and cloud certification preparation. The CourseFlix listing under this source is the slice of that catalog that has been mirrored here for offline-friendly viewing, organized by topic and updated as new releases land. Pricing on Udemy itself swings dramatically with the site's near-permanent sales, which is why the platform is best treated as a deep reference catalog: pick instructors with strong reviews and a track record of updating their material rather than buying on the headline price alone.

Watch Online 162 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 162 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: 1.1. How to Get Help
All Course Lessons (162)
#Lesson TitleDurationAccess
1
1.1. How to Get Help Demo
01:08
2
1.4. Starting With Node Internals
03:48
3
1.5. Module Implementations
08:24
4
1.6. Node Backed by C++!
06:34
5
1.8. The Basics of Threads
06:30
6
1.9. The Node Event Loop
06:35
7
1.10. The Event Loop Implementation
07:23
8
1.11. Event Loop Ticks
06:47
9
1.12. Is Node Single Threaded
05:07
10
1.13. Testing for Single Threads
06:50
11
1.14. The Libuv Thread Pool
03:08
12
1.15. Threadpools with Multithreading
06:07
13
1.16. Changing Threadpool Size
05:26
14
1.17. Common Threadpool Questions
03:17
15
1.18. Explaining OS Operations
03:53
16
1.19. Libuv OS Delegation
03:20
17
1.20. OSAsync Common Questions
02:41
18
1.21. Review
02:49
19
1.23. Crazy Node Behavior
07:40
20
1.24. Unexpected Event Loop Events
11:24
21
2.1. Enhancing Performance
02:18
22
2.2. Express Setup
03:23
23
2.3. Blocking the Event Loop
07:08
24
2.4. Clustering in Theory
05:12
25
2.5. Forking Children
05:38
26
2.6. Clustering in Action
05:34
27
2.7. Benchmarking Server Performance
05:17
28
2.8. Benchmark Refactor
03:56
29
2.9. Need More Children!
16:43
30
2.10. PM2 Installation
02:54
31
2.11. PM2 Configuration
06:50
32
2.13. Webworker Threads
02:28
33
2.14. Worker Threads in Action
11:35
34
2.15. Benchmarking Workers
05:18
35
3.1. The Next Phase
02:13
36
3.3. Project Walkthrough
05:52
37
3.4. Key Customization
03:08
38
3.6. MongoDB Creation
06:24
39
3.7. Routes Walkthrough
04:19
40
4.1. MongoDB Query Performance
10:43
41
4.2. Query Caching Layer
07:56
42
4.3. Redis Introduction
03:23
43
4.4. Installing Redis on MacOS
03:20
44
4.6. Getting and Setting Basic Values
06:48
45
4.7. Redis Hashes
06:58
46
4.8. One Redis Gotcha
02:54
47
4.9. Cache Keys
07:48
48
4.10. Promisifying a Function
08:08
49
4.11. Caching in Action
08:00
50
4.12. Caching Issues
05:27
51
4.13. The Ultimate Caching Solution
21:00
52
4.14. Patching Mongoose's Exec
10:43
53
4.15. Restoring Blog Routes Handler
02:06
54
4.16. Unique Keys
06:01
55
4.17. Key Creation
03:10
56
4.18. Restoring Redis Config
01:28
57
4.19. Cache Implementation
04:28
58
4.20. Resolving Values
05:47
59
4.21. Hydrating Models
06:26
60
4.22. Hydrating Arrays
03:28
61
4.23. Toggleable Cache
08:42
62
4.24. Cache Expiration
02:31
63
4.25. Forced Cache Expiration
05:16
64
4.26. Nested Hashes
06:47
65
4.27. Clearing Nested hashes
04:37
66
4.28. Automated Cache Clearing with Middlware
06:40
67
5.1. Testing Flow
06:39
68
5.2. Testing Challenges
03:26
69
5.3. Commands Around Testing
03:14
70
5.4. First Jest Test
04:27
71
5.5. Launching Chromium Instances
09:51
72
5.6. Chromium Navigation
04:32
73
5.7. Extracting Page Content
05:04
74
5.8. Puppeteer - Behind the Scenes
04:45
75
5.9. DRY Tests
03:24
76
5.10. Browser Termination
01:35
77
5.11. Asserting OAuth Flow
07:30
78
5.12. Asserting URL Domain
03:01
79
5.13. Issues with OAuth
05:12
80
5.14. Solving Authentication Issues with Automation Testing
04:37
81
5.15. The Google OAuth Flow
07:17
82
5.16. Inner Workings of Sessions
12:07
83
5.17. Sessions From Another Angle
08:23
84
5.18. Session Signatures
11:34
85
5.19. Generating Sessions and Signatures
09:04
86
5.20. Assembling the Pieces
08:08
87
5.21. WaitFor Statements
09:18
88
5.22. Factory Functions
05:00
89
5.23. The Session Factory
08:49
90
5.24. Assembling the Session Factory
03:04
91
5.25. Code Separation
06:23
92
5.27. Global Jest Setup
07:01
93
5.28. Testing Factory Tests!
03:42
94
5.29. Adding a Login Method
05:02
95
5.30. Extending Page
07:59
96
5.31. Introduction to Proxies
07:47
97
5.32. Proxies in Action
12:11
98
5.33. Combining Object Property Access
08:18
99
5.34. Combining the Page and Browser
08:38
100
5.35. Custom Page Implementation
04:17
101
5.36. Function Lookup Priority
04:27
102
5.37. Gee, I Hope This Works!
05:33
103
5.38. Reusable Functions on Page
05:39
104
5.39. Testing Blog Creation
04:54
105
5.40. Default Navigation
05:31
106
5.41. Asserting Form Display
06:00
107
5.42. Test Timeout
05:24
108
5.43. Common Test Setup
05:08
109
5.44. Nested Describes for Structure
07:01
110
5.45. Asserting Validation Errors
07:40
111
5.46. Asserting Form Confirmation
06:26
112
5.47. Asserting Blog Creation
05:58
113
5.48. Options for Testing Prohibited Actions
03:33
114
5.49. Direct API Requests
11:45
115
5.50. Executed Arbitrary JS in Chromium
03:55
116
5.51. Asserting Page Response
07:25
117
5.52. Get Restrictions
02:45
118
5.53. A Final 'GET' Test
02:57
119
5.54. Super Advanced Test Helpers
31:46
120
6.1. Introduction to CI
07:25
121
6.2. CI Providers
06:22
122
6.3. The Basics of YAML Files
04:23
123
6.5. Travis YAML Setup
10:05
124
6.6. More Travis YAML
05:09
125
6.7. Client Builds
06:38
126
6.8. Script Config
06:19
127
6.9. Using Travis Documentation
05:45
128
6.10. More Server Configuration
13:27
129
6.12. A Touch More Configuration
03:12
130
6.13. Git Repo Setup
04:19
131
6.14. Travis CI Setup
02:16
132
6.15. Triggering CI Builds
02:49
133
6.16. Build Success
01:19
134
7.1. Image Upload
02:16
135
7.2. Big Issues Around Image Upload
04:41
136
7.3. Alternate Image Upload
03:34
137
7.4. Chosen Storage Solution
04:18
138
7.5. Upload Constraints
04:27
139
7.6. Image File Transport
06:05
140
7.7. Upload Flow with AWS S3
05:23
141
7.8. Details of the Presigned URL
06:48
142
7.9. Security Issues Solved with Presigned URL's
04:16
143
7.10. Adding an Image Picker
03:31
144
7.11. Handling File Changes
04:40
145
7.12. Recording Image Files
04:39
146
7.13. The SubmitBlog Function
03:08
147
7.14. AWS Credentials with IAM
05:09
148
7.15. Creating S3 Buckets
03:17
149
7.16. Allowing Actions with IAM Policies
08:18
150
7.17. Creating IAM Users
04:42
151
7.18. Upload Routes Files
05:15
152
7.20. Configuring the AWS SDK
03:19
153
7.21. GetSignedURL Arguments
10:07
154
7.22. Calling GetSignedURL
09:36
155
7.23. Viewing the Signed URL
02:18
156
7.24. Attempting Image Upload
08:00
157
7.26. Handling CORS Errors
05:21
158
7.27. Outstanding Issues
01:40
159
7.28. S3 Bucket Policies
05:02
160
7.29. Tying Uploads to Blogs
04:19
161
7.30. Ensuring Images get Tied
02:02
162
7.31. Displaying Images
04:07
Unlock unlimited learning

Get instant access to all 161 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Related courses

Frequently asked questions

What prerequisites should I have before enrolling in this course?
Before enrolling, you should have a basic understanding of JavaScript and some experience with Node.js. Familiarity with backend development concepts will be helpful. The course does not require prior experience with Redis or AWS S3, as these are covered in detail.
What projects or practical applications will I work on during the course?
The course includes hands-on projects such as implementing Redis caching to optimize database queries and managing scalable file uploads using AWS S3. These projects will enhance practical skills in handling real-world backend challenges.
Who is the target audience for this course?
This course is designed for Node.js developers looking to deepen their understanding of Node internals and advanced backend development techniques. It's also suitable for developers preparing for technical interviews where Node.js concepts are tested.
How does the depth of this course compare to other Node.js courses?
This course goes beyond basic Node.js tutorials by focusing on advanced concepts like the Event Loop, Redis caching, and AWS S3. It offers detailed exploration of Node internals and practical performance enhancement techniques not typically covered in beginner courses.
What specific tools and platforms are utilized in the course?
The course incorporates tools and platforms such as Redis for caching, AWS S3 for scalable file uploads, and PM2 for process management. These tools are demonstrated through practical lessons and real-world scenarios to enhance backend development skills.
What topics are not covered in this course?
While the course covers advanced Node.js concepts, it does not delve into front-end development, other programming languages, or non-Node.js backend frameworks. The focus remains on Node.js internals and backend performance optimization.
What is the expected time commitment for completing this course?
The course consists of 162 lessons, which can take a varying amount of time depending on the student's pace. While there is no specific runtime listed, students should plan on dedicating several hours per week over a few weeks to fully engage with the material and complete the projects.