Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Moscow js node.js enterprise development

Enterprise разработка с помощью Node.js

  • Soyez le premier à commenter

Moscow js node.js enterprise development

  1. 1. Enterprise разработка с помощью Node.js Павел Тиунов GitHub: paveltiunov Facebook: pavel.tiunov87 Toptal, AllcountJS
  2. 2. В прошлом ● NetCracker ● Гос. заказ. Разрабатывал платформу для быстрого построения ERP-систем (приобретена Московской Биржей) Сейчас ● Фрилансер в Infuse (Сан-Франциско) через Toptal ● Со-основатель в AllcountJS О себе 2
  3. 3. Проблемы Enterprise разработки 3
  4. 4. Рынок Enterprise Software ERP, CRM $48.8B IT-Consulting $16.6B 54% рынка: ● SAP ● Oracle ● Microsoft YCombinator, “Запросы к стартапам” #17: Софт, используемый большими компаниями, до сих пор страшный и очень прибыльный. 4
  5. 5. Почему так долго на рынке главные? 5
  6. 6. Потому что сложно ПРОЕКТ СДАН! 6 ПРОЕКТ СДАН: как многие себе представляют
  7. 7. Потому что сложно ПРОЕКТ СДАН: как на самом деле 7
  8. 8. Почему продукты B2B не “съели” $50B? B2B продукт решает специфические “боли” Приложение компании покрывает все аспекты работы предприятия ??? 8
  9. 9. ● Create ● Read ● Update ● Delete CRUD приложение 9
  10. 10. ● CRUD ● Формы, таблицы, множество типов полей ● Безопасность, списки контроля доступа ● Бизнес логика ● API, интеграции и синхронизация данных ● Миграции БД ● Аналитические запросы и отчеты Enterprise приложение 10
  11. 11. ● B2B продукты не могут закрыть все потребности ● Разрабатывать Enterprise системы “с нуля” дорого и сложно ● Покупать готовые решения и кастомизировать еще дороже и не всегда лучше Enterprise: проблемы 11
  12. 12. ● Что сделает Enterprise разработку дешевле и доступнее? ● Какой технологический стек будет в будущем доминировать в Enterprise? Enterprise: вопросы 12
  13. 13. JavaScript в Enterprise 13
  14. 14. ● В будущем самая большая экосистема ● Один язык для клиента и сервера ● Event-driven и асинхронный ● Скромный объем потребляемой памяти для Node.js JavaScript для Enterprise? 14
  15. 15. Топ языков на GitHub 15
  16. 16. ● Strongloop (теперь IBM) ● Sage X3 ERP ● B2B: Paypal, Trello, Debitoor ● DevOps: Modulus, NSolid Node.js в Enterprise 16
  17. 17. Экосистема Full-stack: ближе всего к Enterprise 17
  18. 18. Инструменты Loopback Meteor KeystoneJS MEAN Представления ✅ ✅ ✅ ✅ Безопасность ✅* ✅ ✅ ✅ Бизнес логика ✅* ✅ ✅ ✅ API, интеграции ✅* ✅ ✅ ✅ Миграции БД ✅* ✅ ❌ ❌ Отчеты ✅ 18 * - функциональность из коробки
  19. 19. Инструменты (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
  20. 20. ● В экосистеме Node.js уже решается большая часть проблем Enterprise разработки JavaScript вывод 20
  21. 21. Admin панели 21
  22. 22. Admin панели 22
  23. 23. Если завтра писать ERP? ● Admin панель - ближе всего к Enterprise ○ meteor-admin ○ loopback-angular-admin, Arc ○ ng-admin ○ KeystoneJS 23
  24. 24. Декларативный подход 24
  25. 25. Проблемы Admin панелей ● Интерфейсы admin панелей ○ трудно переиспользовать ○ зачастую не переопределяются ● Не поддерживаются сложные случаи распределения прав доступа
  26. 26. Admin панели: выводы ● Позволяют быстро создавать CRUD интерфейсы для всего приложения ● Есть проблемы с гибкостью
  27. 27. AllcountJS 27
  28. 28. Что требуется? Настройка приложения как для Admin панели + Возможность переопределять любое поведение = 28
  29. 29. AllcountJS: как работает? 29
  30. 30. AllcountJS: Features ● Из коробки: кроссплатформенный web & mobile UI (ionic), REST API, Безопасность ● Переопределение стандартного поведения через Dependency Injection ● Не зависит от БД и Frontend 30
  31. 31. AllcountJS: что такое? Объекты Поля Операции ACL БД Транспорт Представления AllcountJS Доменная модель Медленно меняется Технологии Быстро меняются 31
  32. 32. AllcountJS Пример кастомизации UI 32
  33. 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() 33
  34. 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() 34
  35. 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() 35
  36. 36. 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
  37. 37. AllcountJS Пример кастомизации UI Объекты Поля lc-list lc-form lc-field Стандартное представление Custom представление Директивы Angular 37
  38. 38. AllcountJS Развязывание зависимостей 38
  39. 39. AllcountJS Развязывание зависимостей 39
  40. 40. AllcountJS Развязывание зависимостей 40 …
  41. 41. AllcountJS Развязывание зависимостей 41
  42. 42. AllcountJS Развязывание зависимостей 42
  43. 43. AllcountJS Развязывание зависимостей 43
  44. 44. AllcountJS Развязывание зависимостей 44
  45. 45. AllcountJS Развязывание зависимостей 45
  46. 46. AllcountJS Развязывание зависимостей 46
  47. 47. AllcountJS Развязывание зависимостей 47
  48. 48. AllcountJS Развязывание зависимостей 48
  49. 49. AllcountJS Развязывание зависимостей 49
  50. 50. AllcountJS Развязывание зависимостей 50
  51. 51. Заключение ● Экосистема Node.js достаточно развита для Enterprise ● AllcountJS ○ сокращает путь к технологиям для бизнеса ○ позволяет строить свои реализации отображения доменной модели в технологии 51
  52. 52. Павел Тиунов <pavel.tiunov@allcountjs.com> Github: paveltiunov FB: pavel.tiunov87 Блог: blog.allcountjs.com Хабр: allcountjs Презентация: goo.gl/wbeO9P github.com/allcount/allcountjs Контакты 52

×