Skip to content

Advanced training about creating microservices with using Node.js, MongoDB, Redis and modern approaches

License

Notifications You must be signed in to change notification settings

andriichyzh/node-js-advanced-training

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node.js

Node.js Advanced Training Join the chat at https://gitter.im/andriichyzh/node-js-advanced-training

Required

Actual for versions:

  • Node.js 4.2+
  • Mongo 3.2+
  • Redis 3.0+

Program (total: 30h)

Training Overview (15m)

JavaScript

  • Variables
  • Conditions
  • Loops
  • Functions
  • Prototypes
  • Asynchronous functions
  • Block scoping
  • Collections
  • Classes
  • Generators
  • Promises
  • Symbols
  • Template strings
  • Arrow Functions
  • Airbnb Coding Style
  • Google JavaScript Style
  • JavaScript "Standard" Style
  • Crockfords’s Coding Standards
  • Node.js Coding Style
  • NPM "Funny" Coding Style
  • Idiomatic JavaScript Coding Style

Node.js

  • Small core
  • Small modules
  • Small surface area
  • Simplicity and pragmatism
  • Conceptions

    • Asynchronous
    • Event Loop
    • IO operations
    • Non blocking
  • Components

    • V8
    • libuv
  • Versions of Node.js
  • Installation Node.js
  • CLI commands
  • First scripts
  • System errors
  • Standard JavaScript errors
  • Assertion Errors
  • Custom errors
  • How it works?
  • Supported formats
  • Order of load and resolving algorithm
  • The module cache
  • NPM registry
  • Console
  • Process
  • Timers
  • Errors
  • Events
  • Stream
  • File System
  • HTTP
  • Crypto
  • Child Processes
  • Lodash
  • Async / Neo-async
  • WS
  • MongoDB
  • Redis
  • Postgres
  • File structure
  • Deep with package.json
  • Local packages
  • Publish to NPM Registry
  • Using in application

Common Patterns in Node.js (1h)

  • Callbacks
  • Error-first
  • Async function in any case
  • Recursive async functions
  • Creational Design Patterns

    • Singleton
    • Factory
    • Abstract Factory
  • Structural Design Patterns

    • Adapter
    • Composite
    • Decorator
    • Facade
    • Bridge
    • Proxy
  • Behavioral Design Patterns

    • Observer

Asynchronous Control Flow (2h)

  • The difficulties

    • The callback hell
    • Specific flows
  • Flows

    • Sequential execution
    • Parallel execution
    • Limited parallel execution
  • Solutions

    • Pure JS functions
    • Async library
    • Promises
    • Generators
  • Hardcoded dependency
  • Dependency injection
  • Service locator
  • Dependency injection container

Recipes for yours applications (2h)

  • Run long sync operations
  • Run heavy CPU operations
  • Connection to MongoDB
  • Repository pattern
  • ...
  • What we test?
    • Cases
    • Priority
  • How to do your testing most effective and fast?
    • Classes
    • Boundary
    • Test levels
    • Piramida
  • Approaches
    • TDD
    • BDD
    • Pairwise
    • Mocks
  • Tools and libraries
    • Mocha
    • Should
    • Supertest
    • Sinon
  • Code Coverage
  • Patterns and best practices in testing
  • Continuous Integration
    • Conception
    • Travis CI
  • Continuous Delivery
    • Conception
  • Approaches

    • README Driven Development
    • Reference documentation
    • Unibutique Language
    • Changelog
    • License
  • Formats

    • Markdown
    • RAML

The design and architecture of the application (1h)

  • MVC
  • DDD
  • SOA
  • Micro-services
  • 12 factors app
  • Configuration
  • Logging
  • Monitoring
  • Profiling
  • Connection to DBs and external services

Project 1: Simple web-site

  • Express
  • Serving static content by Node.js
  • Using Nginx as reverse proxy and server of static content

Project 2: Service with REST API

  • Express
  • REST API design
  • REST API testing

Project 3: Tiny cloud (micro-services)

  • Micro-services overview
  • Communication between services
  • HTTP and Message Broker for communication
  • Testing of micro-services

Performance and Scaling of application and system (2h)

  • Scaling

    • What is scaling?
    • Scaling Law of applications
    • Methods of scaling applications
  • Performance

    • What is performance?
    • What should we measure?
    • Tools for performance tests (Yandex.Tank, ab, siege)
    • Analysis of the results
    • Recommendations for scaling
  • Cache in applications

Profiling and optimizations of application and system (2h)

  • Top most common mistakes which fail performance

  • Profiling

    • Memory
    • CPU
    • Blocking of EventLoop
  • Tools

Yours applications in production (1h)

  • Best practices of logging
  • Orchestration (Ansible)

Distribution of your application (Docker) (1h)

  • What is Docker?
  • Create Docker image with your application
  • Run your applications
  • How to run own cloud in 1 click? (Docker Compose)

Final Q&A (1h)

Author

License

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

Creative Commons Attribution-NonCommercial 4.0 International License

About

Advanced training about creating microservices with using Node.js, MongoDB, Redis and modern approaches

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •