SlideShare a Scribd company logo
1 of 26
Node.js
Microservices
Andrii Tytar
О себе
Андрей Титарь – andrii.tytar@sigma.software, @abfaust
- Senior Software Developer @ Sigma Software - Node.js, Ruby, DevOps
- Previously:
- Practice Microservices @ Avid Cloud, GlobalLogic – Node.js, SM
- ~8 years experience in development
- CI/CD evangelist
- XP practitioner
- Audiophile, DJ
Fantastic Microservices
And Where to Find Them
A Microservice definition
“Loosely coupled service oriented
architecture with bounded context”
-- Adrian Cockcroft
Bounded Context
Ограниченный контекст – пределы
применимости той или иной модели, для
четкого понимания где нужно поддерживать
единообразие и согласованность, и как
соотносить это с другими контекстами.
-- Eric Evans, Domain-Driven Design
Основные принципы
- легковесный и дешевый
- сфокусирован на одной задаче и делает это
хорошо
- понятен и может поддерживаться одним
человеком, небольшой командой
- легковесный протокол
- быстро деплоится и масштабироваться
- устойчивый к сбоям
Макилрой: Четверть века UNIX
Ken Thompson and Dennis Ritchie, key proponents of
the Unix philosophy
Философия UNIX гласит:
- Пишите программы, которые делают что-то одно и
делают это хорошо.
- Пишите программы, которые бы работали вместе.
- Пишите программы, которые бы поддерживали
текстовые потоки, поскольку это универсальный
интерфейс.
Достоинства
Независимая масштабируемость
При размещении модулей на
отдельных серверных узлах мы можем
масштабировать их независимо от
других модулей.
Независимый технический стек
Благодаря распределению модулей
по разным серверным узлам и
независимому языку взаимодействия
мы можем использовать совершенно
разные языки программирования, и
инструменты
Сохранение модульности
И единая, и микросервисная архитектуры
позволяют сохранять модульность и
инкапсуляцию. Однако это может быть
довольно трудной задачей, на решение
которой уйдут десятилетия, несмотря на
правила SOLID. Зато микросервисы
позволяют обеспечивать логическое
разделение приложения на модули за счёт
явного физического разделения по
серверам. Физическая изолированность
защищает от нарушения пределов
ограниченных контекстов.
Независимая эволюция
подсистем
Микросервис может
развиваться и ломать
обратную совместимость, не
обременяя себя поддержкой
старых версий, так как всегда
можно оставить старую
версию микросервиса
работающей необходимое
время.
Недостатки
Распределенность
Распределенные системы сложнее
программировать, так как удаленные
вызовы работают медленно и невозможно
исключить риск сбоя.
Согласованность в конечном счете
Для распределенной системы сложно
поддерживать строгую согласованность.
Поэтому каждый обеспечивает ее
самостоятельно.
Сложность эксплуатации
Для управления микросервисами, которые регулярно
переразвертываются, требуется зрелая группа
эксплуатации/поддержки.
Типичный Микросервис
На практике
Или как со всем этим работать
Культура
- Продукт, а не проект
- Гетерогенность (использование разных языков
программирования)
- Самоорганизованные и самодостаточные команды
- Умные эндпойнты и глупые каналы
- Децентрализованное управление
- Автоматизация инфраструктуры
- Страховка от сбоев
- Архитектура с эволюционным развитием
- Ты создал, тебе и запускать
- Обильное тестирование
Continues Integration
“Continuous Integration doesn’t get rid of bugs, but it does make
them dramatically easier to find and remove.”
— Martin Fowler, Chief Scientist, ThoughtWorks
Continues Deployment
Где и когда применять
- Монолит в первую очередь
- Разделение монолита при необходимости
- Создание прототипов или временных сервисов
- Совместное использование с монолитом
Node.js
Почему он?
Почему Node.js
- Легковесность и быстродействие
- Широкий выбор встроенных и внешних библиотек
- Конечно же JavaScript
Просто как пять копеек
$ mkdir simple-microservice
$ cd simple-microservice
$ npm init
$ npm install express –save
$ cat app.js
Docker
Docker Compose
Finally
- Add tests
- Hook you git repo
- Create Jenkins job for running tests
- Deploy via Docker
THANKS!
Questions?

More Related Content

Similar to Node.js microservices

Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBPavel Treshnikov
 
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!Cisco Russia
 
Архитектура защищенного ЦОД
Архитектура защищенного ЦОДАрхитектура защищенного ЦОД
Архитектура защищенного ЦОДCisco Russia
 
Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Cisco Russia
 
SDN в корпоративных сетях
SDN в корпоративных сетяхSDN в корпоративных сетях
SDN в корпоративных сетяхCisco Russia
 
Cloud. Business-model-innovation
Cloud. Business-model-innovationCloud. Business-model-innovation
Cloud. Business-model-innovationRuslanKorotaev
 
Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...
Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...
Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...Cisco Russia
 
Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...
Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...
Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...Cisco Russia
 
Архитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционированиеАрхитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционированиеCisco Russia
 
Microservices thoughts (ru)
Microservices thoughts (ru)Microservices thoughts (ru)
Microservices thoughts (ru)Mykyta Hopkalo
 
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облакуРешения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облакуCisco Russia
 
Плюсы и минусы облачных технологий
Плюсы и минусы облачных технологийПлюсы и минусы облачных технологий
Плюсы и минусы облачных технологийkakmenyavsezadralo
 
плюсы и минусы облачных технологий
плюсы и минусы облачных технологийплюсы и минусы облачных технологий
плюсы и минусы облачных технологийkakmenyavsezadralo
 
Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0.
Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0. Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0.
Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0. Cisco Russia
 
Essential security aspects in heterogenous Data Centers
Essential security aspects in heterogenous Data CentersEssential security aspects in heterogenous Data Centers
Essential security aspects in heterogenous Data CentersNikolay Romanov
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3Ontico
 

Similar to Node.js microservices (20)

Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
 
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
 
Архитектура защищенного ЦОД
Архитектура защищенного ЦОДАрхитектура защищенного ЦОД
Архитектура защищенного ЦОД
 
Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...Защита центров обработки данных. Механизмы безопасности для классической фабр...
Защита центров обработки данных. Механизмы безопасности для классической фабр...
 
SDN в корпоративных сетях
SDN в корпоративных сетяхSDN в корпоративных сетях
SDN в корпоративных сетях
 
PMIufa 2011-03-24
PMIufa 2011-03-24PMIufa 2011-03-24
PMIufa 2011-03-24
 
Cloud. Business-model-innovation
Cloud. Business-model-innovationCloud. Business-model-innovation
Cloud. Business-model-innovation
 
Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...
Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...
Развитие решений Cisco для ЦОД глазами специалиста по серверам и приложениям...
 
Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...
Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...
Пять шагов для защиты ЦОД. Почему традиционная защита может оказаться неэффек...
 
Архитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционированиеАрхитектура корпоративной сети Cisco, варианты внедрения и позиционирование
Архитектура корпоративной сети Cisco, варианты внедрения и позиционирование
 
Microservices thoughts (ru)
Microservices thoughts (ru)Microservices thoughts (ru)
Microservices thoughts (ru)
 
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облакуРешения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
 
Node .js microservices
Node .js microservices Node .js microservices
Node .js microservices
 
Плюсы и минусы облачных технологий
Плюсы и минусы облачных технологийПлюсы и минусы облачных технологий
Плюсы и минусы облачных технологий
 
плюсы и минусы облачных технологий
плюсы и минусы облачных технологийплюсы и минусы облачных технологий
плюсы и минусы облачных технологий
 
Wild microservices and imaginary DevOps
Wild microservices and imaginary DevOpsWild microservices and imaginary DevOps
Wild microservices and imaginary DevOps
 
Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0.
Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0. Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0.
Новые возможности решений на базе Cisco Unified Contact Center в версии 9.0.
 
Essential security aspects in heterogenous Data Centers
Essential security aspects in heterogenous Data CentersEssential security aspects in heterogenous Data Centers
Essential security aspects in heterogenous Data Centers
 
06-mikhailik
06-mikhailik06-mikhailik
06-mikhailik
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3
 

Node.js microservices

  • 2. О себе Андрей Титарь – andrii.tytar@sigma.software, @abfaust - Senior Software Developer @ Sigma Software - Node.js, Ruby, DevOps - Previously: - Practice Microservices @ Avid Cloud, GlobalLogic – Node.js, SM - ~8 years experience in development - CI/CD evangelist - XP practitioner - Audiophile, DJ
  • 4.
  • 5.
  • 6. A Microservice definition “Loosely coupled service oriented architecture with bounded context” -- Adrian Cockcroft
  • 7. Bounded Context Ограниченный контекст – пределы применимости той или иной модели, для четкого понимания где нужно поддерживать единообразие и согласованность, и как соотносить это с другими контекстами. -- Eric Evans, Domain-Driven Design
  • 8. Основные принципы - легковесный и дешевый - сфокусирован на одной задаче и делает это хорошо - понятен и может поддерживаться одним человеком, небольшой командой - легковесный протокол - быстро деплоится и масштабироваться - устойчивый к сбоям
  • 9. Макилрой: Четверть века UNIX Ken Thompson and Dennis Ritchie, key proponents of the Unix philosophy Философия UNIX гласит: - Пишите программы, которые делают что-то одно и делают это хорошо. - Пишите программы, которые бы работали вместе. - Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс.
  • 10. Достоинства Независимая масштабируемость При размещении модулей на отдельных серверных узлах мы можем масштабировать их независимо от других модулей. Независимый технический стек Благодаря распределению модулей по разным серверным узлам и независимому языку взаимодействия мы можем использовать совершенно разные языки программирования, и инструменты Сохранение модульности И единая, и микросервисная архитектуры позволяют сохранять модульность и инкапсуляцию. Однако это может быть довольно трудной задачей, на решение которой уйдут десятилетия, несмотря на правила SOLID. Зато микросервисы позволяют обеспечивать логическое разделение приложения на модули за счёт явного физического разделения по серверам. Физическая изолированность защищает от нарушения пределов ограниченных контекстов. Независимая эволюция подсистем Микросервис может развиваться и ломать обратную совместимость, не обременяя себя поддержкой старых версий, так как всегда можно оставить старую версию микросервиса работающей необходимое время.
  • 11. Недостатки Распределенность Распределенные системы сложнее программировать, так как удаленные вызовы работают медленно и невозможно исключить риск сбоя. Согласованность в конечном счете Для распределенной системы сложно поддерживать строгую согласованность. Поэтому каждый обеспечивает ее самостоятельно. Сложность эксплуатации Для управления микросервисами, которые регулярно переразвертываются, требуется зрелая группа эксплуатации/поддержки.
  • 13.
  • 14. На практике Или как со всем этим работать
  • 15. Культура - Продукт, а не проект - Гетерогенность (использование разных языков программирования) - Самоорганизованные и самодостаточные команды - Умные эндпойнты и глупые каналы - Децентрализованное управление - Автоматизация инфраструктуры - Страховка от сбоев - Архитектура с эволюционным развитием - Ты создал, тебе и запускать - Обильное тестирование
  • 16. Continues Integration “Continuous Integration doesn’t get rid of bugs, but it does make them dramatically easier to find and remove.” — Martin Fowler, Chief Scientist, ThoughtWorks
  • 18. Где и когда применять - Монолит в первую очередь - Разделение монолита при необходимости - Создание прототипов или временных сервисов - Совместное использование с монолитом
  • 19.
  • 21. Почему Node.js - Легковесность и быстродействие - Широкий выбор встроенных и внешних библиотек - Конечно же JavaScript
  • 22. Просто как пять копеек $ mkdir simple-microservice $ cd simple-microservice $ npm init $ npm install express –save $ cat app.js
  • 25. Finally - Add tests - Hook you git repo - Create Jenkins job for running tests - Deploy via Docker