Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ AWS Certified Developer - Associate
Graphic Design Photoshop Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Mindfulness Personal Development Personal Transformation Meditation Life Purpose Emotional Intelligence Neuroscience
Web Development JavaScript React CSS Angular PHP WordPress Node.Js Python
Google Flutter Android Development iOS Development Swift React Native Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Retargeting
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Modeling Data Analysis Big Data
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Blogging Freelancing Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
30-Day Money-Back Guarantee
Development Web Development Node.Js

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!
Rating: 4.7 out of 54.7 (5,719 ratings)
35,894 students
Created by Stephen Grider
Last updated 2/2021
English
English [Auto], Portuguese [Auto], 
30-Day Money-Back Guarantee

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
Curated for the Udemy for Business collection

Course content

8 sections • 167 lectures • 16h 3m total length

  • Preview01:07
  • Join Our Community!
    00:07
  • Preview03:47
  • Preview08:23
  • Node Backed by C++!
    06:33
  • Test Your Knowledge - Node's Implementation
    3 questions
  • The Basics of Threads
    06:29
  • The Node Event Loop
    06:34
  • The Event Loop Implementation
    07:22
  • Event Loop Ticks
    06:46
  • Is Node Single Threaded?
    05:06
  • Testing for Single Threads
    06:49
  • The Libuv Thread Pool
    03:07
  • Threadpools with Multithreading
    06:06
  • Changing Threadpool Size
    05:25
  • Common Threadpool Questions
    03:16
  • Explaining OS Operations
    03:52
  • Libuv OS Delegation
    03:19
  • OS/Async Common Questions
    02:40
  • Review
    02:48
  • Check Your Knowledge - The Event Loop
    2 questions
  • Crazy Node Behavior
    07:39
  • Unexpected Event Loop Events
    11:23

  • Enhancing Performance
    02:18
  • Express Setup
    03:22
  • Blocking the Event Loop
    07:06
  • Clustering in Theory
    05:11
  • Forking Children
    05:37
  • Clustering in Action
    05:33
  • Benchmarking Server Performance
    05:16
  • Benchmark Refactor
    03:55
  • Need More Children!
    16:42
  • PM2 Installation
    02:53
  • PM2 Configuration
    06:49
  • Webworker Threads
    02:27
  • Worker Threads in Action
    11:33
  • Benchmarking Workers
    05:17

  • The Next Phase
    02:12
  • Project Walkthrough
    08:42
  • Key Customization
    03:11
  • MongoDB Atlas Setup and Configuration
    01:25
  • MongoDB Creation
    06:23
  • Routes Walkthrough
    04:17

  • MongoDB Query Performance
    10:42
  • Query Caching Layer
    07:55
  • Redis Introduction
    03:22
  • Installing Redis on MacOS
    03:19
  • Redis on Windows
    00:17
  • Getting and Setting Basic Values
    06:47
  • Redis Hashes
    06:57
  • One Redis Gotcha
    02:53
  • Cache Keys
    07:47
  • Promisifying a Function
    08:07
  • Caching in Action
    07:59
  • Caching Issues
    05:26
  • The Ultimate Caching Solution
    20:59
  • Patching Mongoose's Exec
    10:42
  • Restoring Blog Routes Handler
    02:05
  • Unique Keys
    06:00
  • Key Creation
    03:08
  • Restoring Redis Config
    01:27
  • Cache Implementation
    04:27
  • Resolving Values
    05:46
  • Hydrating Models
    06:25
  • Hydrating Arrays
    03:27
  • Toggleable Cache
    08:41
  • Cache Expiration
    02:30
  • Forced Cache Expiration
    05:15
  • Nested Hashes
    06:46
  • Clearing Nested hashes
    04:36
  • Automated Cache Clearing with Middlware
    06:39

  • Testing Flow
    06:38
  • Testing Challenges
    03:25
  • Commands Around Testing
    03:13
  • First Jest Test
    04:26
  • Launching Chromium Instances
    09:50
  • Chromium Navigation
    04:31
  • Extracting Page Content
    05:03
  • Puppeteer - Behind the Scenes
    04:44
  • DRY Tests
    03:23
  • Browser Termination
    01:34
  • Asserting OAuth Flow
    07:29
  • Asserting URL Domain
    02:59
  • Issues with OAuth
    05:11
  • Solving Authentication Issues with Automation Testing
    04:36
  • The Google OAuth Flow
    07:16
  • Inner Workings of Sessions
    12:06
  • Sessions From Another Angle
    08:22
  • Session Signatures
    11:33
  • Generating Sessions and Signatures
    09:03
  • Assembling the Pieces
    08:07
  • WaitFor Statements
    09:17
  • Factory Functions
    04:59
  • The Session Factory
    08:48
  • Assembling the Session Factory
    03:03
  • Code Separation
    06:22
  • Global Jest Setup
    07:00
  • Testing Factory Tests!
    03:41
  • Adding a Login Method
    05:01
  • Extending Page
    07:58
  • Introduction to Proxies
    07:46
  • Proxies in Action
    12:10
  • Combining Object Property Access
    08:17
  • Combining the Page and Browser
    08:37
  • Custom Page Implementation
    04:16
  • Function Lookup Priority
    04:26
  • Gee, I Hope This Works!
    05:32
  • Reusable Functions on Page
    05:38
  • Testing Blog Creation
    04:53
  • Default Navigation
    05:30
  • Asserting Form Display
    05:59
  • Test Timeout
    05:23
  • Common Test Setup
    05:07
  • Nested Describes for Structure
    07:00
  • Asserting Validation Errors
    07:39
  • Asserting Form Confirmation
    06:25
  • Asserting Blog Creation
    05:57
  • Options for Testing Prohibited Actions
    03:32
  • Direct API Requests
    11:44
  • Executed Arbitrary JS in Chromium
    03:54
  • Asserting Page Response
    07:24
  • Get Restrictions
    02:44
  • A Final 'GET' Test
    02:56
  • Super Advanced Test Helpers
    31:45

  • Introduction to CI
    07:24
  • CI Providers
    06:21
  • The Basics of YAML Files
    04:22
  • Travis YAML Setup
    10:04
  • More Travis YAML
    05:08
  • Client Builds
    06:37
  • Script Config
    06:18
  • Using Travis Documentation
    05:44
  • More Server Configuration
    13:26
  • Note - Travis Update
    00:20
  • A Touch More Configuration
    03:11
  • Git Repo Setup
    04:18
  • Travis CI Setup
    02:15
  • Triggering CI Builds
    02:48
  • Build Success
    01:18

  • Image Upload
    02:15
  • Big Issues Around Image Upload
    04:40
  • Alternate Image Upload
    03:33
  • Chosen Storage Solution
    04:17
  • Upload Constraints
    04:26
  • Image File Transport
    06:04
  • Upload Flow with AWS S3
    05:22
  • Details of the Presigned URL
    06:47
  • Security Issues Solved with Presigned URL's
    04:15
  • Adding an Image Picker
    03:30
  • Handling File Changes
    04:39
  • Recording Image Files
    04:38
  • The SubmitBlog Function
    03:07
  • AWS Credentials with IAM
    05:08
  • Creating S3 Buckets
    03:16
  • Allowing Actions with IAM Policies
    08:17
  • Creating IAM Users
    04:41
  • Upload Routes Files
    05:14
  • Configuring the AWS SDK
    03:18
  • GetSignedURL Arguments
    10:06
  • Calling GetSignedURL
    09:35
  • Viewing the Signed URL
    02:17
  • Attempting Image Upload
    07:59
  • Handling CORS Errors
    05:20
  • Outstanding Issues
    01:39
  • S3 Bucket Policies
    05:01
  • Tying Uploads to Blogs
    04:18
  • Ensuring Images get Tied
    02:01
  • Displaying Images
    04:06

  • Bonus!
    00:16

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 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.

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

Featured review

Nick Durbin
Nick Durbin
71 courses
6 reviews
Rating: 5.0 out of 511 months ago
Definitely gave me depth of knowledge about Node. I enjoyed learning the deeper concepts on something I know I will be using a lot with the JS ecosystem. Worth the time and a whole lot of information. You may need to go over parts more than once.

Instructor

Stephen Grider
Engineering Architect
Stephen Grider
  • 4.7 Instructor Rating
  • 284,956 Reviews
  • 750,768 Students
  • 29 Courses

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 for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.