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 NodeJS микросервисная архитектура, Андрей Титарь

Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
Программируемая сеть, думающая за вас: ночной кошмар или светлое будущее?!
Cisco Russia
 
Cloud. Business-model-innovation
Cloud. Business-model-innovationCloud. Business-model-innovation
Cloud. Business-model-innovation
RuslanKorotaev
 
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облакуРешения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
Решения Cisco для защищенного ЦОД снижают риск при переходе к частному облаку
Cisco Russia
 
плюсы и минусы облачных технологий
плюсы и минусы облачных технологийплюсы и минусы облачных технологий
плюсы и минусы облачных технологий
kakmenyavsezadralo
 
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.
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 Centers
Nikolay Romanov
 
Spread Zaytsev3
Spread Zaytsev3Spread Zaytsev3
Spread Zaytsev3
Ontico
 

Similar to NodeJS микросервисная архитектура, Андрей Титарь (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
 

More from Sigma Software

More from Sigma Software (20)

Fast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIsFast is Best. Using .NET MinimalAPIs
Fast is Best. Using .NET MinimalAPIs
 
"Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur""Are you developing or declining? Don't become an IT-dinosaur"
"Are you developing or declining? Don't become an IT-dinosaur"
 
Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"Michael Smolin, "Decrypting customer's cultural code"
Michael Smolin, "Decrypting customer's cultural code"
 
Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...Max Kunytsia, “Why is continuous product discovery better than continuous del...
Max Kunytsia, “Why is continuous product discovery better than continuous del...
 
Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"Marcelino Moreno, "Product Management Mindset"
Marcelino Moreno, "Product Management Mindset"
 
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
Andrii Pastushok, "Product Discovery in Outsourcing - What, When, and How"
 
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
Elena Turkenych “BA vs PM: Who' the right person, for the right job, with the...
 
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
Eleonora Budanova “BA+PM+DEV team: how to build the synergy”
 
Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"Stoyan Atanasov “How crucial is the BA role in an IT Project"
Stoyan Atanasov “How crucial is the BA role in an IT Project"
 
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
Olexandra Kovalyova, "Equivalence Partitioning, Boundary Values ​​Analysis, C...
 
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
Yana Lysa — "Decision Tables, State-Transition testing, Pairwase Testing"
 
VOLVO x HACK SPRINT
VOLVO x HACK SPRINTVOLVO x HACK SPRINT
VOLVO x HACK SPRINT
 
Business digitalization trends and challenges
Business digitalization trends and challengesBusiness digitalization trends and challenges
Business digitalization trends and challenges
 
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"Дмитро Терещенко, "How to secure your application with Secure SDLC"
Дмитро Терещенко, "How to secure your application with Secure SDLC"
 
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
Яна Лиса, “Ефективні методи написання хороших мануальних тестових сценаріїв”
 
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
Тетяна Осетрова, “Модель зрілості розподіленної проектної команди”
 
Training solutions and content creation
Training solutions and content creationTraining solutions and content creation
Training solutions and content creation
 
False news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid themFalse news - false truth: tips & tricks how to avoid them
False news - false truth: tips & tricks how to avoid them
 
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
Анна Бойко, "Хороший контракт vs очікування клієнтів. Що вбереже вас, якщо вд...
 
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
Дмитрий Лапшин, "The importance of TEX and Internal Quality. How explain and ...
 

NodeJS микросервисная архитектура, Андрей Титарь

  • 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