Course goal

Build a distributed, highly-available, micro-service based, scalable, cloud-agnostic NodeJS app!

Technologies

This course will help you to

Quickly dive into Nest.JS & TypeScript concepts

Organize your understanding of popular techniques and enterprise patterns

Understand how Kafka & Redis works

Gain some experience of using Docker & Kubernetes

Take a look at the distributed enterprise NodeJS application from the higher level

This course is NOT

  • JavaScript basics tutorial
  • JavaScript related only
  • for people without JS experience
  • for people who don't want to get into the infrastructure-related staff
  • a frontend training

Workflow

  1. 30+ minutes of theory presentation
  2. <1 hour of practice
  3. The trainer(s) will implement the course project online with live comments 
  4. Several trainers (2+) will be present at every lesson. The main trainer will conduct a lecture and live coding, other trainers will provide live-code assistance + filling silence moments
  5. The main trainer will be rotated depending on the course topic
  6. In the end, there will be a finished project, which students may run and investigate on their own

 

Every meeting:

Interested participants can be invited to a live coding session https://visualstudio.microsoft.com/ru/services/live-share/
 

Candidate requirements

  •  Solid JavaScript basics
    • Promises, generators, async functions
    • Classes and OOP
    • Arrays data operations and transformations
  • Experience using NodeJS (better) or Frontend JS + another server-side language
  • Experience working with databases
  • Simple data structures: Tree, Queue, Stack, etc
  • Networking: TCP, HTTP/2, DNS
  • Node.js core topics: Event loop, I/O, streams, typed arrays, buffers, pipes, EventEmitter, sync/async APIs etc.

Plan

11 sections 1.5 - 3h each

Total: ~ 24h

Section 1: User service

  • Nest.js setting up
  • CRUD user operations
  • DI, IoC, Chain of responsibility, Factory, other patterns and techniques
  • REST API

Section 2: Databases

  • SQL vs NoSQL
  • Pulling Mongo image
  • Setting up Nest + mongo
  • Persisting users to DB

Section 3: CI

  • PR process
  • CI services overview
  • CI vs CD
  • GitHub Actions integration
  • CI/CD configurations

Section 4: Docker

  • Why
  • How
  • Docker-compose
  • Docker networks
  • Docker hub
  • Pushing Docker images to hub via CI/CD

Section 5: Caching

  • Overview
  • Redis
  • Nestjs + redis

Section 6: Chat service

  • WS vs HTTP2
  • Socket.IO
  • Writing the chat service

Section 7: Kubernetes

  • Quick intro
  • Services and discovery
  • Wrapping our current configuration to a K8S YAML
  • Scaling
  • High availability
  • Monitoring tools

Section 8: Gateway

  • API gateway,
  • Load balancing strategies
  • Introducing Traefik
  • Sticky sessions pros and cons

Section 9: Event streaming

  • MQs overview
  • Kafka internals
  • Adding kafka cluster to k8s via Helm
  • Nest.js integration with Kafka

Section 10: Security

  • HTTPS, local SSL cert, MiM attack
  • Authentication
  • Authorization
  • OAUTH2 vs JWT
  • Setting up a ForwardAuth Traefik middleware
  • Integrating with Facebook login

Section 11: Clouds

  • AWS/Azure/GCloud
  • Managed k8s services
  • Deploying chat to the AWS cloud - costing overview

User service
Nest.js/TS/Etc

Chat service
nodes

Public :443 HTTPS

OAuth 2 provider

OAuth interceptor

HTTP/REST

WS/Socket.IO

Users DB

Users cache
Messages cache

User disabled notification

Private Kubernetes cluster

HTTPS

WS

Broker

Get user details on connection

Forward auth / HMAC signature headers validation

Expected app in the end of the training

The UI will be implemented behind the scene

Start course:  

late January

 

Duration:

~ 7 weeks

 

Zoom sessions:

Mon, Wed,  18:00 – 20:00

 

Q&A

Closing registration:

December 28

 

Selection (interviewing)

Jan 4 - Jan 20

 

Inviting participants:

after January 20

 

Node JS training

By Vladimir Vyshko

Node JS training

  • 770