Giter Site home page Giter Site logo

abrahamman / node-js-advanced-training Goto Github PK

View Code? Open in Web Editor NEW

This project forked from andriichyzh/node-js-advanced-training

0.0 2.0 0.0 2.73 MB

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

License: Other

JavaScript 99.92% Shell 0.08%

node-js-advanced-training's Introduction

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

node-js-advanced-training's People

Contributors

andriichyzh avatar ekooo7 avatar gitter-badger avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.