SlideShare a Scribd company logo
Enterprise разработка
с помощью Node.js
Павел Тиунов
GitHub: paveltiunov
Facebook: pavel.tiunov87
Toptal, AllcountJS
В прошлом
● NetCracker
● Гос. заказ. Разрабатывал платформу для
быстрого построения ERP-систем
(приобретена Московской Биржей)
Сейчас
● Фрилансер в Infuse (Сан-Франциско) через
Toptal
● Со-основатель в AllcountJS
О себе
2
Проблемы Enterprise разработки
3
Рынок Enterprise Software
ERP,
CRM
$48.8B
IT-Consulting
$16.6B
54% рынка:
● SAP
● Oracle
● Microsoft
YCombinator, “Запросы к стартапам” #17:
Софт, используемый большими компаниями, до сих пор
страшный и очень прибыльный.
4
Почему так долго на рынке главные?
5
Потому что сложно
ПРОЕКТ СДАН!
6
ПРОЕКТ СДАН: как многие себе представляют
Потому что сложно
ПРОЕКТ СДАН:
как на самом деле
7
Почему продукты B2B
не “съели” $50B?
B2B продукт решает
специфические “боли”
Приложение компании
покрывает все аспекты
работы предприятия
??? 8
● Create
● Read
● Update
● Delete
CRUD приложение
9
● CRUD
● Формы, таблицы, множество типов полей
● Безопасность, списки контроля доступа
● Бизнес логика
● API, интеграции и синхронизация данных
● Миграции БД
● Аналитические запросы и отчеты
Enterprise приложение
10
● B2B продукты не могут закрыть все
потребности
● Разрабатывать Enterprise системы
“с нуля” дорого и сложно
● Покупать готовые решения и
кастомизировать еще дороже и не
всегда лучше
Enterprise: проблемы
11
● Что сделает Enterprise разработку
дешевле и доступнее?
● Какой технологический стек будет в
будущем доминировать в Enterprise?
Enterprise: вопросы
12
JavaScript в Enterprise
13
● В будущем самая большая
экосистема
● Один язык для клиента и сервера
● Event-driven и асинхронный
● Скромный объем потребляемой
памяти для Node.js
JavaScript для Enterprise?
14
Топ языков на GitHub
15
● Strongloop (теперь IBM)
● Sage X3 ERP
● B2B: Paypal, Trello, Debitoor
● DevOps: Modulus, NSolid
Node.js в Enterprise
16
Экосистема
Full-stack: ближе всего к Enterprise
17
Инструменты
Loopback Meteor KeystoneJS MEAN
Представления ✅ ✅ ✅ ✅
Безопасность ✅* ✅ ✅ ✅
Бизнес логика ✅* ✅ ✅ ✅
API, интеграции ✅* ✅ ✅ ✅
Миграции БД ✅* ✅ ❌ ❌
Отчеты ✅
18
* - функциональность из коробки
Инструменты (full ver.)
Loopback Meteor KeystoneJS MEAN
Представления Angular SDK,
loopback-
angular-
admin,
angular-forms
meteor-admin,
autoform,
simple-schema
Admin панель ng-admin,
angular-forms
Безопасность ✅ meteor-security passport,
connect-roles
passport,
connect-roles
Бизнес логика ✅ collection-hooks mongoose mongoose
API, интеграции ✅ meteor-rest keystone-rest express
Миграции БД ✅ meteor-
migrations
❌ ❌
Отчеты jsreport (платный), node-xlsx, phantom-html-to-pdf, officegen,
docxtemplater
19
● В экосистеме Node.js уже решается
большая часть проблем Enterprise
разработки
JavaScript вывод
20
Admin панели
21
Admin панели
22
Если завтра писать ERP?
● Admin панель - ближе всего к
Enterprise
○ meteor-admin
○ loopback-angular-admin, Arc
○ ng-admin
○ KeystoneJS
23
Декларативный подход
24
Проблемы Admin панелей
● Интерфейсы admin панелей
○ трудно переиспользовать
○ зачастую не переопределяются
● Не поддерживаются сложные случаи
распределения прав доступа
Admin панели: выводы
● Позволяют быстро создавать CRUD
интерфейсы для всего приложения
● Есть проблемы с гибкостью
AllcountJS
27
Что требуется?
Настройка приложения как для Admin панели
+
Возможность переопределять любое
поведение
=
28
AllcountJS: как работает?
29
AllcountJS: Features
● Из коробки: кроссплатформенный web & mobile UI
(ionic), REST API, Безопасность
● Переопределение стандартного поведения через
Dependency Injection
● Не зависит от БД и Frontend
30
AllcountJS: что такое?
Объекты
Поля
Операции
ACL
БД
Транспорт
Представления
AllcountJS
Доменная модель
Медленно меняется
Технологии
Быстро меняются
31
AllcountJS
Пример кастомизации UI
32
AllcountJS
Пример кастомизации UI
//...
div(ng-controller="PosController")
div // кнопки
div(lc-list="'Item'", paging="{}")
button(
ng-repeat="item in items",
ng-click="addItem(item)"
)
// … item content
div // Сумма и операции
h1 Total: {{viewState.editForm.entity().total}}
// … actions
div // Форма заказа справа
+defaultEditForm()(ng-show="true")
+defaultFormTemplate()
33
AllcountJS
Пример кастомизации UI
//...
div(ng-controller="PosController")
div // кнопки
div(lc-list="'Item'", paging="{}")
button(
ng-repeat="item in items",
ng-click="addItem(item)"
)
// … item content
div // Сумма и операции
h1 Total: {{viewState.editForm.entity().total}}
// … actions
div // Форма заказа справа
+defaultEditForm()(ng-show="true")
+defaultFormTemplate()
34
AllcountJS
Пример кастомизации UI
//...
div(ng-controller="PosController")
div // кнопки
div(lc-list="'Item'", paging="{}")
button(
ng-repeat="item in items",
ng-click="addItem(item)"
)
// … item content
div // Сумма и операции
h1 Total: {{viewState.editForm.entity().total}}
// … actions
div // Форма заказа справа
+defaultEditForm()(ng-show="true")
+defaultFormTemplate()
35
AllcountJS
Пример кастомизации UI
//...
div(ng-controller="PosController")
div // кнопки
div(lc-list="'Item'", paging="{}")
button(
ng-repeat="item in items",
ng-click="addItem(item)"
)
// … item content
div // Сумма и операции
h1 Total: {{viewState.editForm.entity().total}}
// … actions
div // Форма заказа справа
+defaultEditForm()(ng-show="true")
+defaultFormTemplate()
36
AllcountJS
Пример кастомизации UI
Объекты Поля
lc-list lc-form lc-field
Стандартное
представление
Custom
представление
Директивы
Angular
37
AllcountJS
Развязывание зависимостей
38
AllcountJS
Развязывание зависимостей
39
AllcountJS
Развязывание зависимостей
40
…
AllcountJS
Развязывание зависимостей
41
AllcountJS
Развязывание зависимостей
42
AllcountJS
Развязывание зависимостей
43
AllcountJS
Развязывание зависимостей
44
AllcountJS
Развязывание зависимостей
45
AllcountJS
Развязывание зависимостей
46
AllcountJS
Развязывание зависимостей
47
AllcountJS
Развязывание зависимостей
48
AllcountJS
Развязывание зависимостей
49
AllcountJS
Развязывание зависимостей
50
Заключение
● Экосистема Node.js достаточно развита для Enterprise
● AllcountJS
○ сокращает путь к технологиям для бизнеса
○ позволяет строить свои реализации отображения
доменной модели в технологии
51
Павел Тиунов <pavel.tiunov@allcountjs.com>
Github: paveltiunov
FB: pavel.tiunov87
Блог: blog.allcountjs.com
Хабр: allcountjs
Презентация: goo.gl/wbeO9P
github.com/allcount/allcountjs
Контакты
52

More Related Content

PDF
Проектирование архитектуры крупных веб-систем
PDF
Денис Чистяков — JavaScript на фронте и в тылу
PPT
ВВЕДЕНИЕ В NODE.JS
PDF
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
PPTX
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
PDF
Применение CQRS и EventSourcing в DDD-проекте
PDF
Микросервисы на практике
PPTX
рентабельный код
Проектирование архитектуры крупных веб-систем
Денис Чистяков — JavaScript на фронте и в тылу
ВВЕДЕНИЕ В NODE.JS
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Применение CQRS и EventSourcing в DDD-проекте
Микросервисы на практике
рентабельный код

What's hot (19)

PPTX
Разработка high load системы на .NET Core
PDF
Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)
PDF
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
PPTX
vi stories: миграция на .NET Core
PDF
Как анимировать тысячи объектов на карте и не подвесить браузер
PDF
Микросервисные архитектуры и немного жизненного опыта
PDF
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
PDF
Databases on Client Side
PPTX
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
PDF
Денис Трифонов
PDF
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
PPT
презентация.1
PPTX
Самодиагностика сервисов на базе платформы .NET
PDF
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
PDF
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
PPTX
Coding like a sex
PDF
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
PPTX
Александр Афенов
PDF
Микросервисы: откуда столько шума?
Разработка high load системы на .NET Core
Микросервисы для Machine Learning / Дмитрий Ходаков (Avito)
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
vi stories: миграция на .NET Core
Как анимировать тысячи объектов на карте и не подвесить браузер
Микросервисные архитектуры и немного жизненного опыта
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Databases on Client Side
Микросервисная Архитектура: проблемы и решения / Сергей Орлов (Avito)
Денис Трифонов
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
презентация.1
Самодиагностика сервисов на базе платформы .NET
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
Модульная архитектура Сбербанк Онлайн, Владимир Озеров и Александр Черушнико...
Coding like a sex
Преимущества и недостатки микросервисной архитектуры в HeadHunter / Антон Ива...
Александр Афенов
Микросервисы: откуда столько шума?
Ad

Viewers also liked (11)

ODP
Архитектура программных систем на Node.js
PDF
AllcountJS VTB24 loan сonveyor POC
PPTX
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
PPT
Node.js (RichClient)
PPTX
Learn Developing REST API in Node.js using LoopBack Framework
PDF
Use Node.js to create a REST API
PDF
Introduction to REST API with Node.js
PDF
Асинхронность и параллелизм в Node.js
PDF
Developing and Testing a MongoDB and Node.js REST API
PDF
Anatomy of a Modern Node.js Application Architecture
PDF
Инфраструктура распределенных приложений на Node.js
Архитектура программных систем на Node.js
AllcountJS VTB24 loan сonveyor POC
Web В РЕАЛЬНОМ ВРЕМЕНИ С Node.js - AgileBaseCamp - 2012
Node.js (RichClient)
Learn Developing REST API in Node.js using LoopBack Framework
Use Node.js to create a REST API
Introduction to REST API with Node.js
Асинхронность и параллелизм в Node.js
Developing and Testing a MongoDB and Node.js REST API
Anatomy of a Modern Node.js Application Architecture
Инфраструктура распределенных приложений на Node.js
Ad

Similar to Moscow js node.js enterprise development (7)

PPTX
What do you MEAN? или введение в Fullstack JavaScript
PDF
От заката до рассвета | Максим Безуглый | Zlit Tech
PDF
Javascript-фреймворки:
 должен остаться только один
PDF
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
PDF
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
PPT
Владимир Никонов "Вызовы при разработке enterprise продукта"
PPTX
Windows Azure and node js
What do you MEAN? или введение в Fullstack JavaScript
От заката до рассвета | Максим Безуглый | Zlit Tech
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
Владимир Никонов "Вызовы при разработке enterprise продукта"
Windows Azure and node js

Moscow js node.js enterprise development