Course Code: nodejsadv
Duration: 28 hours
Overview:

This instructor-led, live training (online or onsite) is aimed at advanced-level users.

Format of the Course

  • Interactive lecture and discussion.
  • Lots of exercises and practice.
  • Hands-on implementation in a live-lab environment.

Course Customization Options

  • To request a customized training for this course, please contact us to arrange.
Course Outline:

Introduction

  • Node.js internals: Node.js runtime, V8 engine, libuv library.
  • Node.js module system.
  • Processes, Threads and the Thread Pool.
  • Events and Event-Driven Architecture.
  • Advantages and disadvantages of using Node.js compared to other technologies.

Architecture

  • Architectural patterns in Node.js.
  • Using TypeScript to write Node.js applications.
  • Frameworks in Node.js: Express.js, Koa.js, Nest.js, etc.
  • Using design patterns with examples: factory, builder, decorator, strategy, etc.
  • Middlewares.

Node.js APIs

  • RESTful API design principles.
  • API versioning.
  • Best practices for WEB APIs in Node.js.

Asynchronous programming

  • Event loop.
  • Callbacks, promises, async/await.
  • Streams and buffers for handling large amounts of data.
  • How to use Node.js Workers for computationally intensive workload.

Performance

  • Performance optimization techniques (data caching, load balancing, etc).
  • Using debugging techniques to resolve performance issues and memory leaks.

Security

  • Authentication, secure communications, secure coding practices (preventing web application vulnerabilities like SQL injection)
  • Security testing with tools like Burp, OWASP ZAP.

Scalability

  • Building scalable applications with Node.js (horizontally duplication, building microservices).
  • Microservices in Node.js: decomposing a monolithic application into microservices, inter-service communication, etc.
  • Using message brokers like Kafka, RabbitMQ, ActiveMQ to handle messaging between different components of the system.
  • Developing real-time collaborative (and scalable) applications with WebSockets and Redis. Publish/subscribe pattern.

Database

  • Advanced database techniques: indexing, improving performance in queries (ex: pagination) using ORMs (like Sequelize): seeds, migrations, complex joins, n+1 problem.

Testing

  • Testing RESTful APIs in Node.js.

Monitoring

  • Profiling techniques.
  • Monitoring / metrics.

Deployment

  • Continuous integration and deployment.