SlideShare a Scribd company logo
1 of 39
Цуканов Павел
ptsukanov@codereign.net
Skype: cpp.tula
О создатель!!!
• Ryan Dahl выпустил
первую версию в 2009 году
• Последняя – v0.8.20


• По сути он не придумал ничего нового он просто
  объединил идеи и теперь......
• Node.JS не просто новый способ выражения
  существующих идей, а скорее новый способ
  мышления о том, как программное обеспечение
  системы должно быть построено.
Что это?
• Вот формулировка создателя – node.js is a set of
  bindings to the V8 JavaScript VM
• V8 – Google JavaScript Engine используемый в
  Chrome.
• Технология 2012 года по версии InfoWorld
• Сайт nodejs.org
Основные идеи
• Выполнение серверного кода в ОДНОМ!!! Потоке
• Асинхронное выполнение операций вводы/вывода
• Серверный JavaScript


• Это было и до Node.JS Но именно Ryan Dahl
  объединил всё вместе и сделал Node.JS
Немного практики
Проблемы архитектур
   большинства веб приложений



result = query(‘select * from T’)
   Что происходит во время
   выполнения этого кода?
Затраты на операции в
     современных компьютерах

L1: 3 такта
L2: 14 тактов
RAM: 250 циклов
Диск: 41 000 000
Сеть: 240 000 000
Выделение потока на обработку
          запроса клиента
• Переключение между контекстами потоков –
  затратно
• При массивной конкуренции вы не можете выделять
  поток для каждого запроса. Таким образом все
  входящие запросы будут ждать.
Как работает Node.JS в качестве
Клиенты шлют запросы
                     сервера?    Клиенты шлют запросы
                                  Клиенты шлют запросы
 Клиенты шлют запросы
кксерверу
   серверу                                     кксерверу
                                                  серверу
                             Clients

Результат длительной
 Результат длительной
операции поступают вв
 операции поступают                               Представляет собой
                                                   Представляет собой
Очередь сообщений
 Очередь сообщений                                стек команд,
                                                   стек команд,
через обратный вызов
 через обратный вызов                             выполняемых
                                                   выполняемых
                                                  последовательно вв
                                                   последовательно
                        Очередь сообщений         одном потоке.
                                                   одном потоке.
                           (Один поток)

      Неблокируемый
        обработчик
      (или поток или      Запуск длительных
                           Запуск длительных
                          операций
                           операций
         функция)
И наш запрос превращается в



query(‘select * from T’, function(result)) {
// Используем результат
});
Почему же не используют такие
           очевидные вещи?
  1.Культурные причины
Синхронный код:
 var conn = getDbConnection(connectionString);
  var stmt = conn.createStatement();
  var results = stmt.executeQuery(sqlQuery);
  for (var i=0; i<results.length; i++) {
            // print results[i];
  }
Асинхронный код:
  getDbConnection(connectionString, function(err, conn) {
            conn.createStatement(function(err, stmt) {
                       var results = stmt.executeQuery(sqlQuery);
                       results.on(‘row’, function(result) {
                       // print result
                       });
            });
  });
Почему же не используют такие
      очевидные вещи?

asyncFunction1(inputParam, function(err, results1) {
      asyncFunction2(results1, function (err, results2) {
            asyncFunction3(results2, function (err, results3) {
                  asyncFunction4(results3, function (err, results4) {
                        asyncFunction5(results4, function (err, results5) {
                        // and so on…
                        });
                  });
            });
      });
});
Почему же не используют такие
          очевидные вещи?
2. Отсутствие инфраструктуры.
Большинство библиотек не поддерживают
   асинхронность.
Что же там внутри?
                 Модули
1. На модулях основана разрабока в Node.JS
2. Именно модули позволяют приложению общаться с
   внешним миром и структурировать ваш код
3. Существуют 3 источника модулей.
•   Встроенные
•   Ваши файлы
•   Глобальный репозиторий
Что же там внутри?
              Встроенные Модули
Обеспечивают серверную инфрастуктуру.
Модуль подключается так:
                 var fs = require(‘fs’);
Примеры модулей:

     fs             os             dgram
     http           zlib           path

     crypto         dns            И т.д.
Что же там внутри?
Встроенные Модули
Что же там внутри?
    Свои файлы
Что же там внутри?
    Свои файлы
Что же там внутри?
    Свои файлы
Что же там внутри?
 Глобальный репозиторий
Node Package Manager (NPM)
     https://npmjs.org/
Как выглядит Асинхронность?

Callbacks            Events
Асинхронность на практике
Websocket (http://socket.io)
Websocket (сервер)
Websocket (Клиент)
Отладка
• console.log() 
• Встроенный assert модуль
Отладка
• Mocha – среда для тестов в стиле BDD (Behavior-
  driven development)
• Should – расширение для assert
Отладка
• Cloud9 – среда для разработки https://c9.io
Отладка
• IISNode – Хостинг Node.JS под IIS (
  https://github.com/tjanczuk/iisnode)
Отладка
• IISNode – Хостинг Node.JS под IIS (
  https://github.com/tjanczuk/iisnode)
Масштабируемость
Под этим с Node.JS подразумевается
•Запуск дочерних процессов
•Кластер
Масштабируемость
Дочерние процессы
•spawn(command, [args], [options]) - Запускает
новый процесс с данной command, с args . options
определяют рабочий католог и переменные
Масштабируемость
Дочерние процессы
•exec(command, [args], [options]) - Запускает
command в shell и буферезирует вывод.
Масштабируемость
Дочерние процессы
•fork(modulePath, [args], [options]) - специальная
версия spawn для организация взаимодействия с
child процессами.
Масштабируемость
• Кластеры
Заключение

Node.JS это сервер приложений в первую
очередь. Отсюда вытекают все приимущества его
примерений. Хорош для
•One page Application
•Легковесных REST / JSON интерфейсов
•Сервиса по запуску других приложений
•Высоконагрузочная способность позволяет
использовать его для создания игр
Заключение

Не предназначен для
•Хостинга файлов
•Приложения с большими вычислениями и
небольшим количеством операций ввода/вывода
•Генератор HTML контента
Заключение

Из экзотических применений.
•Веб парсеры на базе Node.JS позволяют
создавать веб пауков для сайтов с Javascript
•Walmart реализовала рендеринг клиентских
мобильных приложений на Node.JS
Пожалуйста, Ваши Вопросы!!!

More Related Content

What's hot

DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...it-people
 
Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаElena Grahovac
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
Нейронечёткая классификация слабо формализуемых данных | Тимур ГильмуллинНейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
Нейронечёткая классификация слабо формализуемых данных | Тимур ГильмуллинPositive Hack Days
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?Tim Mironov
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Ontico
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатленияfudz1k
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in netAlex Tumanoff
 
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBPavel Treshnikov
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
 
Применение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проектеПрименение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проектеIgor Lubenets
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)Ontico
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр АфеновCodeFest
 
Особенности тестирования NoSQL приложений
Особенности тестирования NoSQL приложенийОсобенности тестирования NoSQL приложений
Особенности тестирования NoSQL приложенийSQALab
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, RedmadrobotMail.ru Group
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration Alex Tumanoff
 

What's hot (20)

DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
 
Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опыта
 
No sql.mongodb scaling
No sql.mongodb scalingNo sql.mongodb scaling
No sql.mongodb scaling
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
Нейронечёткая классификация слабо формализуемых данных | Тимур ГильмуллинНейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
Нейронечёткая классификация слабо формализуемых данных | Тимур Гильмуллин
 
MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
MongoDB первые впечатления
MongoDB первые впечатленияMongoDB первые впечатления
MongoDB первые впечатления
 
Test driven development in net
Test driven development in netTest driven development in net
Test driven development in net
 
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Применение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проектеПрименение CQRS и EventSourcing в DDD-проекте
Применение CQRS и EventSourcing в DDD-проекте
 
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
История успеха Яндекс.Почты с PostgreSQL / Владимир Бородин (Яндекс)
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 
Особенности тестирования NoSQL приложений
Особенности тестирования NoSQL приложенийОсобенности тестирования NoSQL приложений
Особенности тестирования NoSQL приложений
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
«Взломать за 60 секунд», Артем Кулаков, Redmadrobot
 
Sql server clr integration
Sql server clr integration Sql server clr integration
Sql server clr integration
 

Viewers also liked

Асинхронность и параллелизм в Node.js
Асинхронность и параллелизм в Node.jsАсинхронность и параллелизм в Node.js
Асинхронность и параллелизм в Node.jsGeeksLab Odessa
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture AppDynamics
 
AllcountJS VTB24 loan сonveyor POC
AllcountJS VTB24 loan сonveyor POCAllcountJS VTB24 loan сonveyor POC
AllcountJS VTB24 loan сonveyor POCPavel Tiunov
 
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012Dmytro Mindra
 
Learn Developing REST API in Node.js using LoopBack Framework
Learn Developing REST API  in Node.js using LoopBack FrameworkLearn Developing REST API  in Node.js using LoopBack Framework
Learn Developing REST API in Node.js using LoopBack FrameworkMarudi Subakti
 
Use Node.js to create a REST API
Use Node.js to create a REST APIUse Node.js to create a REST API
Use Node.js to create a REST APIFabien Vauchelles
 
Introduction to REST API with Node.js
Introduction to REST API with Node.jsIntroduction to REST API with Node.js
Introduction to REST API with Node.jsYoann Gotthilf
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)Ontico
 
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js"
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js" JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js"
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js" GeeksLab Odessa
 
Node.js ♥ БЭМ: модульный фронтенд
 Node.js ♥ БЭМ: модульный фронтенд Node.js ♥ БЭМ: модульный фронтенд
Node.js ♥ БЭМ: модульный фронтендVova Bilonenko
 
Developing and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST APIDeveloping and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST APIAll Things Open
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаAlexei Smolyanov
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsStanislav Gumeniuk
 

Viewers also liked (17)

Асинхронность и параллелизм в Node.js
Асинхронность и параллелизм в Node.jsАсинхронность и параллелизм в Node.js
Асинхронность и параллелизм в Node.js
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture
 
AllcountJS VTB24 loan сonveyor POC
AllcountJS VTB24 loan сonveyor POCAllcountJS VTB24 loan сonveyor POC
AllcountJS VTB24 loan сonveyor POC
 
Node.js (RichClient)
 Node.js (RichClient) Node.js (RichClient)
Node.js (RichClient)
 
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
 
Learn Developing REST API in Node.js using LoopBack Framework
Learn Developing REST API  in Node.js using LoopBack FrameworkLearn Developing REST API  in Node.js using LoopBack Framework
Learn Developing REST API in Node.js using LoopBack Framework
 
Use Node.js to create a REST API
Use Node.js to create a REST APIUse Node.js to create a REST API
Use Node.js to create a REST API
 
Introduction to REST API with Node.js
Introduction to REST API with Node.jsIntroduction to REST API with Node.js
Introduction to REST API with Node.js
 
Node.js (Андрей Костенко)
Node.js   (Андрей Костенко)Node.js   (Андрей Костенко)
Node.js (Андрей Костенко)
 
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js"
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js" JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js"
JSLab.Сергей Пузанков. "Разработка небольшого проекта c BEM и node.js"
 
Node.js ♥ БЭМ: модульный фронтенд
 Node.js ♥ БЭМ: модульный фронтенд Node.js ♥ БЭМ: модульный фронтенд
Node.js ♥ БЭМ: модульный фронтенд
 
Developing and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST APIDeveloping and Testing a MongoDB and Node.js REST API
Developing and Testing a MongoDB and Node.js REST API
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчика
 
Webpack slides
Webpack slidesWebpack slides
Webpack slides
 
reveal.js 3.0.0
reveal.js 3.0.0reveal.js 3.0.0
reveal.js 3.0.0
 
Инфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.jsИнфраструктура распределенных приложений на Node.js
Инфраструктура распределенных приложений на Node.js
 
Node.js - Best practices
Node.js  - Best practicesNode.js  - Best practices
Node.js - Best practices
 

Similar to ВВЕДЕНИЕ В NODE.JS

Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Ontico
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyRegn
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияSQALab
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в ЯндексеAndrey Kazarinov
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandexaviatakz
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
Функциональные сети на основе библиотеки SynapseGrid
Функциональные сети на основе библиотеки SynapseGridФункциональные сети на основе библиотеки SynapseGrid
Функциональные сети на основе библиотеки SynapseGridАрсений Жижелев
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Ontico
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 

Similar to ВВЕДЕНИЕ В NODE.JS (20)

Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
Sivko
SivkoSivko
Sivko
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
 
PowerShell
PowerShellPowerShell
PowerShell
 
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Система обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на GroovyСистема обработки бизнес-логики server-side приложения на Groovy
Система обработки бизнес-логики server-side приложения на Groovy
 
Async Python
Async PythonAsync Python
Async Python
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестирования
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Rx
RxRx
Rx
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Функциональные сети на основе библиотеки SynapseGrid
Функциональные сети на основе библиотеки SynapseGridФункциональные сети на основе библиотеки SynapseGrid
Функциональные сети на основе библиотеки SynapseGrid
 
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
Инфраструктура распределенных приложений на nodejs / Станислав Гуменюк (Rambl...
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 

More from Pavel Tsukanov

Введение в Knockout
Введение в Knockout Введение в Knockout
Введение в Knockout Pavel Tsukanov
 
Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverPavel Tsukanov
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMPavel Tsukanov
 
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCVМАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCVPavel Tsukanov
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYPavel Tsukanov
 
СОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯСОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯPavel Tsukanov
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИPavel Tsukanov
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++Pavel Tsukanov
 
АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5Pavel Tsukanov
 
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.Pavel Tsukanov
 
ХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫPavel Tsukanov
 
ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.Pavel Tsukanov
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВPavel Tsukanov
 
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...Pavel Tsukanov
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Pavel Tsukanov
 
Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Pavel Tsukanov
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFPavel Tsukanov
 

More from Pavel Tsukanov (20)

RESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGNRESPONSIVE WEB DESIGN
RESPONSIVE WEB DESIGN
 
Введение в Knockout
Введение в Knockout Введение в Knockout
Введение в Knockout
 
Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriver
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVMKNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
KNOCKOUTJS КАК РЕАЛИЗАЦИЯ MVVM
 
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCVМАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
МАШИННОЕ ЗРЕНИЕ С ИСПОЛЬЗОВАНИЕ OPENCV
 
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITYCONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
CONTINUOUS INTEGRATION ДЛЯ ЧАЙНИКОВ ВМЕСТЕ С TEAMCITY
 
СОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯСОЗДАЙ РОБОТА С НУЛЯ
СОЗДАЙ РОБОТА С НУЛЯ
 
Лекция Android
Лекция AndroidЛекция Android
Лекция Android
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
 
АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5АНИМАЦИЯ В FLASH И HTML5
АНИМАЦИЯ В FLASH И HTML5
 
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
РАЗРАБОТКА ПО С ИСПОЛЬЗОВАНИЕМ FINITE STATE MACHINE.
 
ХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫХАКЕРЫ И АНТИХАКЕРЫ
ХАКЕРЫ И АНТИХАКЕРЫ
 
ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.ЗАРАБОТОК В ИНТЕРНЕТЕ.
ЗАРАБОТОК В ИНТЕРНЕТЕ.
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
 
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
ЭЛЕМЕНТЫ ИСКУСТВЕННОГО ИНТЕЛЛЕКТА ПРИ ПРОГРАММИРОВАНИИ. (http://tuladev.net/e...
 
Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)Основы "мобильной" разработки на примере платформы iOs (iPhone)
Основы "мобильной" разработки на примере платформы iOs (iPhone)
 
Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?Ruby - или зачем мне еще один язык программирования?
Ruby - или зачем мне еще один язык программирования?
 
Реализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCFРеализация REST и SOAP сервисов с помощью WCF
Реализация REST и SOAP сервисов с помощью WCF
 

ВВЕДЕНИЕ В NODE.JS

  • 2. О создатель!!! • Ryan Dahl выпустил первую версию в 2009 году • Последняя – v0.8.20 • По сути он не придумал ничего нового он просто объединил идеи и теперь...... • Node.JS не просто новый способ выражения существующих идей, а скорее новый способ мышления о том, как программное обеспечение системы должно быть построено.
  • 3. Что это? • Вот формулировка создателя – node.js is a set of bindings to the V8 JavaScript VM • V8 – Google JavaScript Engine используемый в Chrome. • Технология 2012 года по версии InfoWorld • Сайт nodejs.org
  • 4. Основные идеи • Выполнение серверного кода в ОДНОМ!!! Потоке • Асинхронное выполнение операций вводы/вывода • Серверный JavaScript • Это было и до Node.JS Но именно Ryan Dahl объединил всё вместе и сделал Node.JS
  • 6. Проблемы архитектур большинства веб приложений result = query(‘select * from T’) Что происходит во время выполнения этого кода?
  • 7. Затраты на операции в современных компьютерах L1: 3 такта L2: 14 тактов RAM: 250 циклов Диск: 41 000 000 Сеть: 240 000 000
  • 8. Выделение потока на обработку запроса клиента • Переключение между контекстами потоков – затратно • При массивной конкуренции вы не можете выделять поток для каждого запроса. Таким образом все входящие запросы будут ждать.
  • 9. Как работает Node.JS в качестве Клиенты шлют запросы сервера? Клиенты шлют запросы Клиенты шлют запросы Клиенты шлют запросы кксерверу серверу кксерверу серверу Clients Результат длительной Результат длительной операции поступают вв операции поступают Представляет собой Представляет собой Очередь сообщений Очередь сообщений стек команд, стек команд, через обратный вызов через обратный вызов выполняемых выполняемых последовательно вв последовательно Очередь сообщений одном потоке. одном потоке. (Один поток) Неблокируемый обработчик (или поток или Запуск длительных Запуск длительных операций операций функция)
  • 10. И наш запрос превращается в query(‘select * from T’, function(result)) { // Используем результат });
  • 11. Почему же не используют такие очевидные вещи? 1.Культурные причины Синхронный код: var conn = getDbConnection(connectionString); var stmt = conn.createStatement(); var results = stmt.executeQuery(sqlQuery); for (var i=0; i<results.length; i++) { // print results[i]; } Асинхронный код: getDbConnection(connectionString, function(err, conn) { conn.createStatement(function(err, stmt) { var results = stmt.executeQuery(sqlQuery); results.on(‘row’, function(result) { // print result }); }); });
  • 12. Почему же не используют такие очевидные вещи? asyncFunction1(inputParam, function(err, results1) { asyncFunction2(results1, function (err, results2) { asyncFunction3(results2, function (err, results3) { asyncFunction4(results3, function (err, results4) { asyncFunction5(results4, function (err, results5) { // and so on… }); }); }); }); });
  • 13. Почему же не используют такие очевидные вещи? 2. Отсутствие инфраструктуры. Большинство библиотек не поддерживают асинхронность.
  • 14. Что же там внутри? Модули 1. На модулях основана разрабока в Node.JS 2. Именно модули позволяют приложению общаться с внешним миром и структурировать ваш код 3. Существуют 3 источника модулей. • Встроенные • Ваши файлы • Глобальный репозиторий
  • 15. Что же там внутри? Встроенные Модули Обеспечивают серверную инфрастуктуру. Модуль подключается так: var fs = require(‘fs’); Примеры модулей: fs os dgram http zlib path crypto dns И т.д.
  • 16. Что же там внутри? Встроенные Модули
  • 17. Что же там внутри? Свои файлы
  • 18. Что же там внутри? Свои файлы
  • 19. Что же там внутри? Свои файлы
  • 20. Что же там внутри? Глобальный репозиторий Node Package Manager (NPM) https://npmjs.org/
  • 26. Отладка • console.log()  • Встроенный assert модуль
  • 27. Отладка • Mocha – среда для тестов в стиле BDD (Behavior- driven development) • Should – расширение для assert
  • 28. Отладка • Cloud9 – среда для разработки https://c9.io
  • 29. Отладка • IISNode – Хостинг Node.JS под IIS ( https://github.com/tjanczuk/iisnode)
  • 30. Отладка • IISNode – Хостинг Node.JS под IIS ( https://github.com/tjanczuk/iisnode)
  • 31. Масштабируемость Под этим с Node.JS подразумевается •Запуск дочерних процессов •Кластер
  • 32. Масштабируемость Дочерние процессы •spawn(command, [args], [options]) - Запускает новый процесс с данной command, с args . options определяют рабочий католог и переменные
  • 33. Масштабируемость Дочерние процессы •exec(command, [args], [options]) - Запускает command в shell и буферезирует вывод.
  • 34. Масштабируемость Дочерние процессы •fork(modulePath, [args], [options]) - специальная версия spawn для организация взаимодействия с child процессами.
  • 36. Заключение Node.JS это сервер приложений в первую очередь. Отсюда вытекают все приимущества его примерений. Хорош для •One page Application •Легковесных REST / JSON интерфейсов •Сервиса по запуску других приложений •Высоконагрузочная способность позволяет использовать его для создания игр
  • 37. Заключение Не предназначен для •Хостинга файлов •Приложения с большими вычислениями и небольшим количеством операций ввода/вывода •Генератор HTML контента
  • 38. Заключение Из экзотических применений. •Веб парсеры на базе Node.JS позволяют создавать веб пауков для сайтов с Javascript •Walmart реализовала рендеринг клиентских мобильных приложений на Node.JS