Skip to main content

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 has been building complex Javascript front ends for top corporations in the San Francisco Bay Area. With an innate ability to simplify complex topics, Stephen has been mentoring engineers beginning their careers in software development for years, and has now expanded that experience onto Udemy, authoring the highest rated React course. He teaches on Udemy to share the knowledge he has gained with other software engineers. Invest in yourself by learning from Stephen's published courses.

udemy

udemy thumbnail
By connecting students all over the world to the best instructors, Udemy is helping individuals reach their goals and pursue their dreams. Udemy is the leading global marketplace for teaching and learning, connecting millions of students to the skills they need to succeed. Udemy helps organizations of all kinds prepare for the ever-evolving future of work. Our curated collection of top-rated business and technical courses gives companies, governments, and nonprofits the power to develop in-house expertise and satisfy employees’ hunger for learning and development.

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