Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/andriichyzh/node-js-advanced-training
Advanced training about creating microservices with using Node.js, MongoDB, Redis and modern approaches
https://github.com/andriichyzh/node-js-advanced-training
docker es2015 javascript microservice mongodb nodejs redis training
Last synced: 3 months ago
JSON representation
Advanced training about creating microservices with using Node.js, MongoDB, Redis and modern approaches
- Host: GitHub
- URL: https://github.com/andriichyzh/node-js-advanced-training
- Owner: andriichyzh
- License: other
- Created: 2015-09-22T16:54:12.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2019-04-17T19:09:12.000Z (over 5 years ago)
- Last Synced: 2024-07-16T09:54:43.914Z (4 months ago)
- Topics: docker, es2015, javascript, microservice, mongodb, nodejs, redis, training
- Language: JavaScript
- Homepage:
- Size: 2.66 MB
- Stars: 46
- Watchers: 9
- Forks: 17
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-list-microservice - node-js-advanced-training
README
![Node.js](static/images/logo.png)
# Node.js Advanced Training [![Join the chat at https://gitter.im/andriichyzh/node-js-advanced-training](https://badges.gitter.im/andriichyzh/node-js-advanced-training.svg)](https://gitter.im/andriichyzh/node-js-advanced-training?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Required
- [JavaScript Base](requirements/javascript-base.md)
- [JavaScript Advanced](requirements/javascript-advanced.md)
- [MongoDB Base](requirements/mongodb-base.md)
- [Redis Base](requirements/redis-base.md)
- [Linux Base](requirements/linux-base.md)## Actual for versions:
- **Node.js 4.2+**
- **Mongo 3.2+**
- **Redis 3.0+**## Program (total: 30h)
### `Training Overview` (15m)
### `JavaScript`
#### [JavaScript Init Check Point](https://docs.google.com/presentation/d/1My6RpHXvAHyc1BCx5bEJhw_FmCyxBKgy5PKhjezjHCQ/edit?usp=sharing) (2h)
- **Variables**
- **Conditions**
- **Loops**
- **Functions**
- **Prototypes**
- **Asynchronous functions**#### [New in ECMAScript 2015 (ES6)](lessons/02-js-ecmascript-2015/materials.md) (2h) [[Homework]](lessons/02-js-ecmascript-2015/homework.md)
- **Block scoping**
- **Collections**
- **Classes**
- **Generators**
- **Promises**
- **Symbols**
- **Template strings**
- **Arrow Functions**#### [JavaScript Style Guides](lessons/03-js-style-guides/materials.md) (15m)
- **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`
#### [Philosophy](lessons/04-nodejs-philosophy/materials.md) (15m)
- **Small core**
- **Small modules**
- **Small surface area**
- **Simplicity and pragmatism**#### [Design Fundamentals](lessons/05-nodejs-design-fundamentals/materials.md) (1h)
- **Conceptions**
- **Asynchronous**
- **Event Loop**
- **IO operations**
- **Non blocking**- **Components**
- **V8**
- **libuv**#### [Getting started](lessons/06-nodejs-getting-started/materials.md) (15m)
- **Versions of Node.js**
- **Installation Node.js**
- **CLI commands**
- **First scripts**#### [Errors Examples](lessons/07-nodejs-errors-examples/materials.md) (15m)
- **System errors**
- **Standard JavaScript errors**
- **Assertion Errors**
- **Custom errors**#### [Modules and NPM](lessons/08-nodejs-modules-and-npm/materials.md) (1h) [[Homework]](lessons/08-nodejs-modules-and-npm/homework.md)
- **How it works?**
- **Supported formats**
- **Order of load and resolving algorithm**
- **The module cache**
- **NPM registry**#### [Core modules](lessons/09-nodejs-core-modules/materials.md) (2h)
- **Console**
- **Process**
- **Timers**
- **Errors**
- **Events**
- **Stream**
- **File System**
- **HTTP**
- **Crypto**
- **Child Processes**#### [Useful NPM modules](lessons/10-nodejs-useful-npm-modules/materials.md) (1h)
- **Lodash**
- **Async / Neo-async**
- **WS**
- **MongoDB**
- **Redis**
- **Postgres**#### [Build your own modules](lessons/11-nodejs-create-own-npm-module/materials.md) (1h)
- **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**#### [Design Patterns in Node.js](lessons/12-nodejs-design-patterns/materials.md) (4h)
- **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#### [Wiring modules](lessons/13-nodejs-wiring-modules/materials.md) (1h)
- **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**
- ...#### [Testing in Node.js](lessons/15-nodejs-testing/materials.md) (3h)
- **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#### [Documentation](lessons/16-nodejs-documentation/materials.md) (1h)
- **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**#### [Projects: Common recommendations](lessons/18-nodejs-services-recommendations/materials.md) (1h)
- **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
- [**Andrii Chyzh**](https://github.com/andriichyzh)
# License
This work is licensed under a [Creative Commons Attribution-NonCommercial 4.0 International License](http://creativecommons.org/licenses/by-nc/4.0/legalcode).
[![Creative Commons Attribution-NonCommercial 4.0 International License](https://i.creativecommons.org/l/by-nc/4.0/88x31.png)](http://creativecommons.org/licenses/by-nc/4.0/legalcode)