SlideShare a Scribd company logo
Ждем всех до 19:35
2
Software Craftsmanship
meetup #17
Взаимодействие между
микросервисами
Павел Вейник
CEO @ Hard & Soft Skills
Мы снова online
●Зарегистрировались 207
человека
●Наш 17-й митап online
●При поддержке Sam Solutions
●Информационные партнеры
dev.by, tproger.ru
4
О митапах
● Часть проекта Hard & Soft Skills
● Поделиться и пообщаться
● Подобрать материал для курсов:
○ Технический лидер
○ От middle developer к senior
engineer, SDET, teamlead...
5
План митапов
16. ML Operations for engineers
17. Взаимодействие
микросервисов
17. Kafka как идеально
горизонтально масштабируемая
система
18. hardsoftskills.by/next_meetups
6
Сегодня не будет
Рассказа что такое
микросервисы и для чего
Критики микросервисной
архитектуры и подходов
CI/CD для микросервисов,
разбиения на сервисы
7
Цель этого митапа
Рассмотреть подходы к
построению взаимодействия
между микросервисами.
Шаблоны, транзакции,
целостность данных...
8
План этого митапа
1.Типы мс архитектур
2.Взаимодействие между мс
3.Сага и другие шаблоны
4.Event sourcing, CQRS
5.Команда и мс
6.Вопросы при регистрации
9
Типы мс архитектур
● распределенный монолит
● слои микросервисов
● domain-based мс
● stateles vs statefull мс
10
Распределенный монолит
● возникает как только вы
начинаете пилить ваш
существующий монолит
● сильная зависимость между
разными сервисами
11
Распределенный монолит
Все проблемы монолита:
● изменения расползаются по
сервисам
● сложно масштабировать
● во всех мс много общего кода
и понятий
12
Распределенный монолит
Признаки распределенного
монолита:
● болтливые сервисы
● разные сервисы пользуются
общей бд
● при изменениях одного мс
нужно редеплоить другие
13
Слои микросервисов
Слой domain API
Слой business API
Слой backend for fronted
Слой клиентского web-app
14
15
Слои микросервисов
Улучшенная версия
распределенного монолита
● более управляемая
● сервисы больше
инкапсулируют
● пригодна для команды
большого размера
16
Feature-based ms
Каждой фиче по микросервису.
Еще более независимые
сервисы чем при слоях.
Без централизованной
архитектуры скатывается в
монолит.
17
Domain-based ms
Domain-driven подход
Контекст каждого мс ограничен
(bounded context)
Инструменты для разбиения:
DDD, bounded contexts, context
maps, events/commands
18
19
Domain-based ms
Требуют формальной и более
продуманной работы при
разделении.
Все равно требуют общего кода
и общих данных, но в меньшей
степени чем распр. монолит
20
Stateless vs stateful ms
База нужна каждому
приложению, но state нужен не
каждому мс:
● persistent storage
● сессия
● кэши
21
Stateless vs stateful ms
22
Подходы к взаимодействию
Обмен файлами
Общая бд
Синхронные вызовы
Очередь сообщений
23
Оркестрация
Оркестрация - есть центр
координации всех вызовов
между мс
● Параллельная
● Последовательная
24
Оркестрация посл.
25
Оркестрация посл.
26
Хореография
Оркестрация - каждый мс
вызывает нужные ему мс в
нужном ему порядке
● Параллельно
● Последовательно
27
Хореография паралл.
28
Sync vs async
Оркестрация и хореография
могут быть синхронными и
асинхронными
● через HTTP, gRPC…
● через очередь сообщений
29
Оркестрация и wf engines
Слой domain API
CRUD + search + triggers
Слой business API
бизнес-процессы
вызовы domain API
30
Оркестрация и wf engines
● Сложная последовательность
вызовов domain API
● Может прерваться ошибкой или
неверным состоянием
● Нужно сохранять состояние
самой последовательности
● Много таких
последовательностей
31
Оркестрация и wf engines
Могут помочь wf движки:
● Декларативное описание
процесса (BPMN)
● Хранят состояние процесса
● Предоставляют мониторинг и
другие инструменты
● Подходят если много процессов
32
Оркестрация и wf engines
● Camunda
● KissFlow
● Netflix conductor
● Workflowy
● Tallyfy
● Luigi
● ...
33
Шаблоны
● Message bus
● Saga
● Transactional outbox
● Retry, timeout, circuit breaker…
● API gateway, reverse proxy
● Load balancer
● CQS, CQRS
● Service per team
34
Шаблоны
35
https://www.enterpriseintegrationpatterns.com/
Message bus
● Зависимость только по формату
сообщений
● Удобно когда много сервисов
могут реагировать на триггер
● Требует общей
модели/формата данных
36
Saga
● “транзакция”,
распространяющаяся по
многим мс
● последовательность локальных
транзакций
● когда 2pc не вариант
● sequence id
37
Transactional outbox
38
39
Retry, timeout, circuit breaker
www.slideshare.net/veinik/software-
craftsmanship-15-online-reliability-
and-resiliency
40
API Gateway
41
Вопросы при регистрации
42
CQS vs CQRS
● Command-Query Separation
○ get-set
● Command-Query Responsibility
Segregation
○ архитектурный подход в
распределенных системах
○ иногда с event sourcing
43
CQRS
44
Service per team
45
Service per Team
● закон Конвея
○ архитектура повторяет
оргструктуру
● поэтому строить оргструктуру
так, чтобы она индуцировала
хорошую архитектуру
46
Контракты
● req-res: Владеет контрактом
запроса тот, кто предоставляет
“сервер”
○ параметры, заголовки, тело
○ валидации
○ формат ответа, HTTP коды
47
Контракты
● command (prod-cons, queue):
Владеет контрактом команды тот,
кто предоставляет сервис,
который ее выполняет
○ очередь команд (кому)
○ формат команды
48
Контракты
● event (pub-sub): Владеет
контрактом команды тот, кто
генерирует событие
○ тема (подписка) (кому)
○ формат события
49
Пример взаимодействия
50
Поддержание контракта
Владелец контракта:
● документация (код, swagger,
спеки)
● версии (breaking vs non-breaking
changes)
● способ деплоя (stoppage)
● service discovery
51
Поддержание контракта
52
Поддержание контракта
Пример контракта:
● https://opensource.zalando.com/r
estful-api-guidelines
53
Поддержание контракта
Contract testing:
● pact.io
● Postman
54
Курс microservices foundations
● Основы
● Шаблоны и подходы
● Взаимодействие
● Мониторинг и ops
● 3 месяца по 2р в неделю
hardsoftskills.by/microservices
55
Ссылки
общее
● https://techrocks.ru/2019/11/13/micro-service-architecture/
● http://agilemindset.ru/%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-
%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D0%B5%D1%80%D0%B2%D0%B8%D1%81%D0%B0/
● https://habr.com/ru/post/249183/
● https://martinfowler.com/articles/microservices.html
● https://docs.microsoft.com/en-us/dotnet/architecture/microservices/architect-microservice-container-applications/communication-in-
microservice-architecture
распределенный монолит
● https://habr.com/ru/company/piter/blog/453470/
● https://www.gremlin.com/blog/is-your-microservice-a-distributed-monolith/
● https://blog.newrelic.com/engineering/distributed-monolith-vs-microservices/
слои микросервисов
● https://medium.com/microservices-in-practice/microservices-layered-architecture-88a7fc38d3f1
domain-driven микросервисы
● https://medium.com/walmartglobaltech/building-domain-driven-microservices-af688aa1b1b8
● https://eng.uber.com/microservice-architecture/
stateless vs stateful
● https://www.proud2becloud.com/stateful-vs-stateless-the-good-the-bad-and-the-ugly/
56
Ссылки
шаблоны
● https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageBus.html
● https://microservices.io/patterns/data/saga.html
● https://microservices.io/patterns/data/transactional-outbox.html
● https://dzone.com/articles/implementing-the-outbox-pattern
● https://microservices.io/patterns/apigateway.html
команда
● https://microservices.io/patterns/decomposition/service-per-team.html
контракты
● https://www.cognizantsoftvision.com/blog/managing-service-contracts-in-microservice-architectures/
● https://cloud.google.com/appengine/docs/standard/java/designing-microservice-api
● https://www.redhat.com/en/blog/achieving-promise-microservices-one-contract-time
contract testing
● https://docs.pact.io/
● https://saucelabs.com/blog/intro-to-contract-testing-getting-started-with-postman
57
Задайте мне вопрос
58

More Related Content

Similar to Software craftsmanship 17: Microservices interaction

Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
CodeFest
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
IT Event
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределенной
Alexander Byndyu
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
 
Powershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systemsPowershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systems
Andrey Vernigora
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Ontico
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3
Timur Shemsedinov
 
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Pavel Treshnikov
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
Timur Shemsedinov
 
NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015
Shamim bhuiyan
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс Россия
Alexander Byndyu
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ RubtsovOntico
 
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
Cisco Russia
 
IOP202 Redis in Azure
IOP202 Redis in AzureIOP202 Redis in Azure
IOP202 Redis in Azure
mourhoon
 
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
GeeksLab Odessa
 
Software craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipelineSoftware craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipeline
Pavel Veinik
 
С++ Optimization Techniques
С++ Optimization TechniquesС++ Optimization Techniques
С++ Optimization Techniques
GlobalLogic Ukraine
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON
 

Similar to Software craftsmanship 17: Microservices interaction (20)

Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Переход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределеннойПереход от монолитной архитектуры к распределенной
Переход от монолитной архитектуры к распределенной
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
Powershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systemsPowershell, Graphs and more. Or how to find dependencies in your systems
Powershell, Graphs and more. Or how to find dependencies in your systems
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3Node.js for enterprise 2021 - JavaScript Fwdays 3
Node.js for enterprise 2021 - JavaScript Fwdays 3
 
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESBАрхитектура масштабируемых приложений. Микросервисы, CQRS, ESB
Архитектура масштабируемых приложений. Микросервисы, CQRS, ESB
 
Архитектура программных систем на Node.js
Архитектура программных систем на Node.jsАрхитектура программных систем на Node.js
Архитектура программных систем на Node.js
 
NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015NoSQL - World IT Planet, Saint Petersburg 2015
NoSQL - World IT Planet, Saint Petersburg 2015
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс Россия
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ Rubtsov
 
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
Маршрутизаторы Cisco - от чего зависит производительность или как получить ма...
 
IOP202 Redis in Azure
IOP202 Redis in AzureIOP202 Redis in Azure
IOP202 Redis in Azure
 
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
JSLab.Тимур Шемсединов. "Архитектура программных систем на Node.js"
 
Software craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipelineSoftware craftsmanship 16: online building ml pipeline
Software craftsmanship 16: online building ml pipeline
 
С++ Optimization Techniques
С++ Optimization TechniquesС++ Optimization Techniques
С++ Optimization Techniques
 
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только одинSECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
SECON'2016. Сергей Аверин. Javascript-фреймворки:
 должен остаться только один
 
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только одинSECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
SECON'2016. Аверин Сергей, Javascript-фреймворки:
 должен остаться только один
 

More from Pavel Veinik

Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellence
Pavel Veinik
 
Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего
Pavel Veinik
 
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Pavel Veinik
 
System Engineering Webinar
System Engineering WebinarSystem Engineering Webinar
System Engineering Webinar
Pavel Veinik
 
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Pavel Veinik
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systems
Pavel Veinik
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Pavel Veinik
 
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещениеSoftware craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Pavel Veinik
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8
Pavel Veinik
 
Software craftsmanship 7
Software craftsmanship 7Software craftsmanship 7
Software craftsmanship 7
Pavel Veinik
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы Agile
Pavel Veinik
 
Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисы
Pavel Veinik
 
Software craftsmanship meetup #4
Software craftsmanship meetup #4Software craftsmanship meetup #4
Software craftsmanship meetup #4
Pavel Veinik
 
Software craftsmanship 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3
Pavel Veinik
 
Software craftsmanship 1
Software craftsmanship 1Software craftsmanship 1
Software craftsmanship 1
Pavel Veinik
 
Women in technology_week-women_leadership
Women in technology_week-women_leadershipWomen in technology_week-women_leadership
Women in technology_week-women_leadership
Pavel Veinik
 
Career day 2019
Career day 2019Career day 2019
Career day 2019
Pavel Veinik
 
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовПрограммирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Pavel Veinik
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.
Pavel Veinik
 

More from Pavel Veinik (19)

Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellence
 
Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего Software craftsmanship meetup 21: CQRS что такое и для чего
Software craftsmanship meetup 21: CQRS что такое и для чего
 
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
 
System Engineering Webinar
System Engineering WebinarSystem Engineering Webinar
System Engineering Webinar
 
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
Software craftsmanship online meetup 18: Kafka как пример идеально горизонтал...
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systems
 
Software craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчикаSoftware craftsmanship 11 online: мотивация и эффектисность разработчика
Software craftsmanship 11 online: мотивация и эффектисность разработчика
 
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещениеSoftware craftsmanship meetup #9. Логирование, мониторинг, оповещение
Software craftsmanship meetup #9. Логирование, мониторинг, оповещение
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8
 
Software craftsmanship 7
Software craftsmanship 7Software craftsmanship 7
Software craftsmanship 7
 
Software craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы AgileSoftware craftsmanship фиксит проблемы Agile
Software craftsmanship фиксит проблемы Agile
 
Software craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисыSoftware craftsmanship #5 кэши и микросервисы
Software craftsmanship #5 кэши и микросервисы
 
Software craftsmanship meetup #4
Software craftsmanship meetup #4Software craftsmanship meetup #4
Software craftsmanship meetup #4
 
Software craftsmanship 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3
 
Software craftsmanship 1
Software craftsmanship 1Software craftsmanship 1
Software craftsmanship 1
 
Women in technology_week-women_leadership
Women in technology_week-women_leadershipWomen in technology_week-women_leadership
Women in technology_week-women_leadership
 
Career day 2019
Career day 2019Career day 2019
Career day 2019
 
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовПрограммирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстов
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.
 

Software craftsmanship 17: Microservices interaction