We may earn an affiliate commission when you visit our partners.
Course image
Stephen Grider

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 Loop? Included. Scalable File Upload? Of course.

Read more

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 Loop? Included. Scalable File Upload? Of 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.

Enroll now

What's inside

Learning objectives

  • 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

Syllabus

The Internals of Node
How to Get Help
Course Resources
Join Our Community!
Read more
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
Important Note about the Upcoming Videos
Webworker Threads
Worker Threads in Action
Benchmarking Workers
Project Setup
The Next Phase
Updated Boilerplate
Project Walkthrough
Key Customization
MongoDB Altas 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

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops a strong foundation for beginners and provides a comprehensive study of a unique perspective that adds color to other topics
Taught by Stephen Grider, who is recognized for their work in Node
Taught by Stephen Grider, who are recognized for their work in x
Explores Redis, which is standard in the industry
Teaches the Event Loop, which is core for Node engineers
Teaches file upload, which is a core skill for scaling applications

Save this course

Save Node JS: Advanced Concepts to your list so you can find it easily later:
Save

Reviews summary

Concepts for node.js

Learners say that Node.js: Advanced Concepts is a great course that covers a lot of advanced material. Some students do complain that there is repetition during the lectures.
The class goes in-depth into some interesting concepts.
"Great explanation of the event loop"
The professor has a tendency to repeat key concepts.
"The instructor tends to repeat himself a fair bit"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Node JS: Advanced Concepts with these activities:
Review Node basics
Refresh your understanding of core Node concepts to prepare for this course's deep dive into Node's internals.
Show steps
  • Revisit Node's official documentation on its core modules
  • Review commonly used Node packages and their functionalities
Attend a Node performance optimization workshop
Learn from Node experts and engage with fellow learners to explore best practices for optimizing Node applications.
Show steps
  • Participate in hands-on exercises and discussions
  • Gain insights and techniques for enhancing Node's performance
Contribute to a Node open-source project
Immerse yourself in Node's ecosystem by actively contributing to an open-source project, gaining practical experience and demonstrating your skills.
Show steps
  • Identify a Node project that aligns with your interests and skill level
  • Familiarize yourself with the project's codebase and contribution guidelines
  • Make meaningful contributions, such as bug fixes, feature enhancements, or documentation improvements
Show all three activities

Career center

Learners who complete Node JS: Advanced Concepts will develop knowledge and skills that may be useful to these careers:
Node.js Engineer
A Node.js Engineer specializes in building and maintaining server-side applications using Node.js. This course is a great choice for aspiring Node.js Engineers, as it provides a comprehensive overview of advanced Node.js concepts such as the Event Loop, caching, file upload, continuous integration testing, and automated browser testing.
Full-Stack Developer
A Full Stack Developer is a software engineer who specializes in both front end and back end. Node.js is the most popular JavaScript framework for creating scalable, real-time web applications. This course on Node.js covers the fundamentals of Node.js needed for a Full Stack Developer, including the Event Loop, caching with Redis, and file upload.
Backend Developer
A Backend Developer focuses on the server-side logic and infrastructure of web applications. Node.js is a server-side JavaScript platform that is used to build scalable and real-time applications. This course will teach you the skills needed to become a Backend Developer, including the Node.js Event Loop, caching with Redis, file upload, and continuous integration testing.
Web Developer
A Web Developer is responsible for designing and coding websites. Node.js is a popular choice for developing fast and efficient web applications. This course will help you master Node.js principles, such as the Event Loop, caching, file upload, and automated testing, all of which are important skills for a Web Developer to have.
Cloud Engineer
A Cloud Engineer is responsible for designing, building, and maintaining cloud-based applications and infrastructure. Node.js is a popular choice for developing cloud-native applications. This course will teach you the skills needed to become a Cloud Engineer, including file upload to AWS S3, continuous integration testing, and performance optimization.
Software Engineer
A Software Engineer designs, develops, deploys, and maintains software applications and systems. Node.js is widely used as a runtime environment for building server-side applications. Therefore, taking this course on Node.js will be a great way to learn the concepts and techniques needed for handling high-performance web applications, which is a major responsibility of a Software Engineer.
DevOps Engineer
A DevOps Engineer works to bridge the gap between development and operations teams, ensuring that code is released quickly and efficiently. This course on Node.js can help you develop the skills needed for DevOps, such as continuous integration testing, automated browser testing, and performance optimization.
Data Engineer
A Data Engineer is responsible for designing, building, and maintaining data pipelines and infrastructure. Node.js can be used for building data-intensive applications and services. This course on Node.js may be useful for aspiring Data Engineers, as it covers topics such as caching with Redis, performance optimization, and continuous integration testing.
Mobile Developer
A Mobile Developer designs, builds, and maintains mobile applications. Node.js is not directly used for developing mobile applications, but it is often used for building back-end services for mobile apps. This course on Node.js may be useful for Mobile Developers who want to learn more about back-end development.
Technical Writer
A Technical Writer creates documentation and training materials for software products. Node.js is not directly used in technical writing, but it may be useful for understanding the technical aspects of software products. This course on Node.js may be useful for Technical Writers who want to learn more about back-end development.
Data Scientist
A Data Scientist uses scientific methods and techniques to extract knowledge and insights from data. Node.js is not commonly used in data science, but it may be useful for building data pipelines or for deploying machine learning models. This course on Node.js is unlikely to be very useful for Data Scientists.
Machine Learning Engineer
A Machine Learning Engineer builds and deploys machine learning models. Node.js is not commonly used in machine learning, but it may be useful for building data pipelines or for deploying machine learning models. This course on Node.js is unlikely to be very useful for Machine Learning Engineers.
Game Developer
A Game Developer designs, builds, and maintains video games. Node.js is not commonly used in game development, but it may be useful for developing back-end services for online multiplayer games. This course on Node.js is unlikely to be very useful for Game Developers.
UX Designer
A UX Designer is responsible for designing the user experience of websites and applications. Node.js is not directly used in UX design, but it may be useful for understanding the technical aspects of building websites and applications. This course on Node.js is unlikely to be very useful for UX Designers.
Product Manager
A Product Manager is responsible for defining the vision and roadmap for a product. Node.js is not directly used in product management, but it may be useful for understanding the technical aspects of building software products. This course on Node.js is unlikely to be very useful for Product Managers.

Reading list

We've selected six books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Node JS: Advanced Concepts.
Provides a comprehensive overview of Node.js, from the basics to advanced topics. It great resource for developers who want to learn more about Node.js and how to use it effectively.
Provides a comprehensive overview of MongoDB and how to use it with Node.js. It valuable resource for developers who want to learn more about MongoDB and how to use it effectively.
Provides a comprehensive overview of Node.js for enterprise applications. It valuable resource for developers who want to learn more about Node.js and how to use it to build enterprise applications.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Node JS: Advanced Concepts.
Storing and Managing Data with Redis and Apache Kafka on...
Most relevant
Async Patterns in Node.js 12
Most relevant
Learn and Understand NodeJS
Most relevant
Microservices with NodeJS, React, Typescript and...
Connecting and Deploying Amazon ElastiCache
React, NodeJS, Express & MongoDB - The MERN Fullstack...
Ensuring Application Reliability and Performance on Heroku
Microservices with Node JS and React
Data Manipulation in JavaScript
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser