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
- 30+ minutes of theory presentation
- <1 hour of practice
- The trainer(s) will implement the course project online with live comments
- 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
- The main trainer will be rotated depending on the course topic
- 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