SlideShare a Scribd company logo
Рефакторинг монолита в
микросервисы на Go
Минкин Андрей
Кто я
• TeamLead в MadDevs.io
• Nambataxi.com
• Nambafood.kg
• Cybernamba.com
• Kuppi.kg
• Moika.kg
• House.kg
Namba Taxi
• 4 года на рынке Бишкека
Namba Taxi
• 4 года на рынке Бишкека
• Не менее 8к заказов в сутки
Namba Taxi
• 4 года на рынке Бишкека
• Не менее 8к заказов в сутки
• 600+ водителей на линии
Namba Taxi
• 4 года на рынке Бишкека
• Не менее 8к заказов в сутки
• 600+ водителей на линии
• 300к довольных клиентов
Namba Taxi
• 4 года на рынке Бишкека
• Не менее 8к заказов в сутки
• 600+ водителей на линии
• 300к довольных клиентов
• 300 рпс на серверах
AVG response time
• Водители 20 ms
• Операторы 2.5 ms
Что такое такси
Что такое такси
• Клиенты
• Водители
• Операторы КЦ
• Контроль качества
• Back office
Как вызвать такси
Как вызвать такси
• Приложение
Как вызвать такси
• Приложение
• СМС
Как вызвать такси
• Приложение
• СМС
• Сайт
Как вызвать такси
• Приложение
• СМС
• Сайт
• IPTV
Как вызвать такси
• Приложение
• СМС
• Сайт
• IPTV
• Сторонние приложения (вызов по API)
Как вызвать такси
• Приложение
• СМС
• Сайт
• IPTV
• Сторонние приложения (вызов по API)
• Позвонить оператору
Водители
Водители
Что делает оператор
Что делает оператор
• Клиенты
• Входящие/исходящие звонки
Что делает оператор
• Клиенты
• Входящие/исходящие звонки
• Заказы
• Наблюдение
Что делает оператор
• Клиенты
• Входящие/исходящие звонки
• Заказы
• Наблюдение
• Водители
• Тревога
• Подержка
Контроль качества
Back-office
• Отчеты
• Отчеты
• Отчеты
Что по архитектуре
• SOA
Что по архитектуре
• SOA
• Redis
Что по архитектуре
• Django монолит
• Go, Twisted
Раньше
• Ruby
• Node.js
Storage
• Percona
• Redis
• Elasticsearch
Сервисы? Какие сервисы
• Отправщик пушей.
Сервисы? Какие сервисы
• Отправщик пушей.
• Отправщик СМС
Сервисы? Какие сервисы
• Отправщик пушей.
• Отправщик СМС
• Backend для водителей
Сервисы? Какие сервисы
• Отправщик пушей.
• Отправщик СМС
• Прокси для водителей
• Бекенд для клиентов
А еще у нас есть Docker
Что в Django
• Отдел контроля качества
• Прием платежей
• Учетное ядро
• Отчеты
• API для водителей
• Менеджерская для управления
Проблемы
• Приложение – один большой кусок, который нужно
выкатывать очень часто
• Невозможно параллельно, многопоточно выполнять какие-
то задачи
• Много интеграций со сторонними сервисами
Решения
• Поддерживать существующее и жить дальше
• Все переписать :trollface:
И пока не случилось
Давай в микросервисы
Микросервисы
• Маленькие
Микросервисы
• Маленькие
• Сфокусированные
Микросервисы
• Маленькие
• Сфокусированные
• Слабосвязанные
Микросервисы
• Маленькие
• Сфокусированные
• Слабосвязанные
• Высокосогласованные
Микросервисы
• Малый размер
• Тонкое масштабирование
• Быстрый деплой
• Легкость тестирования
• Любой язык
Синхронный подход
© Nginx.com
Асинхронный подход
© Nginx.com
А почему Go
• Строготипизированный
• Компилируемый
• CSP
• Goroutine
• sync.WaitGroup
Что есть в Go
• Go-kit
• Gizmo
• Micro
• Echo
• Gin
• Mux
Как рефакторить
• Четкие границы в коде между модулями
Как рефакторить
• Четкие границы в коде между модулями
• Понимание, что выносить
Как рефакторить
• Четкие границы в коде между модулями
• Понимание, что выносить
• Нет повторений в коде и копипасты
Как рефакторить
• Четкие границы в коде между модулями
• Понимание, что выносить
• Нет повторений в коде и копипасты
• Тесты
Как рефакторить
• Четкие границы в коде между модулями
• Понимание, что выносить
• Нет повторений в коде и копипасты
• Тесты
• Много тестов
Как рефакторить
• Четкие границы в коде между модулями
• Понимание, что выносить
• Нет повторений в коде и копипасты
• Тесты
• Много тестов
• Очень много тестов
Tradeoffs
Tradeoffs
• Latency
Tradeoffs
• Latency
• Распределенные блокировки
Tradeoffs
• Latency
• Распределенные блокировки
• Eventual consistency
Tradeoffs
• Latency
• Распределенные блокировки
• Eventual consistency
• Operational Complexity
Разделение на микросервисы
• Учетное ядро ака биллинг
• Сервис отчетов
• Сервис тарификации
• Операторская
• Бекенд водителей
Ок, кто первый?
• Учетное ядро ака биллинг
Наш путь
• Синхронный подход
• Проще
• Легче
• В случае фейла все повторится
• HTTP REST API
• Go
• Echo
• GORM
• JWT
Наш путь
• Написали на Go
• Написали тестов
• Написали e2e тесты
• Прогнали все
• Собрали в докер
• Спланировали
• Задеплоили
Заблуждения
Заблуждения
• Более чистый код
Заблуждения
• Более чистый код
• Это легче
Заблуждения
• Более чистый код
• Это легче
• Это быстрее
Заблуждения
• Более чистый код
• Это легче
• Это быстрее
• Это лучше для инженеров
Заблуждения
• Более чистый код
• Это легче
• Это быстрее
• Это лучше для инженеров
• Это лучше масштабируется
Какие бенефиты?
Какие бенефиты?
• Меньше расход ресурсов
Какие бенефиты?
• Меньше расход ресурсов
• Можем масштабировать отдельную фичу
Какие бенефиты?
• Меньше расход ресурсов
• Можем масштабировать отдельную фичу
• Поддерживать код стало чуть легче
Какие проблемы и подводные камни
• Конкурентный доступ
• Балансировка
Конкурентный доступ
• Percona
• Транзакции + select … for update
• Redis
• Setnx
Балансировка
• Неравномерное использование ресурсов
Выводы
Выводы
• Не нужно добавлять сетевое ограничение чтобы оправдать
написание лучшего кода
Выводы
• Не нужно добавлять сетевое ограничение чтобы оправдать
написание лучшего кода
• Распределенные транзакции никогда не легче
Выводы
• Не нужно добавлять сетевое ограничение чтобы оправдать
написание лучшего кода
• Распределенные транзакции никогда не легче
• К микросервисам нужно прийти
Выводы
• Не нужно добавлять сетевое ограничение чтобы оправдать
написание лучшего кода
• Распределенные транзакции никогда не легче
• К микросервисам нужно прийти
• Лучше планируйте
Выводы
• Не нужно добавлять сетевое ограничение чтобы оправдать
написание лучшего кода
• Распределенные транзакции никогда не легче
• К микросервисам нужно прийти
• Лучше планируйте
• Преждевременно не оптимизируйте
Выводы
• Не нужно добавлять сетевое ограничение чтобы оправдать
написание лучшего кода
• Распределенные транзакции никогда не легче
• К микросервисам нужно прийти
• Лучше планируйте
• Преждевременно не оптимизируйте
• Рефакторите итеративно
Вопросы?
Контакты
• https://github.com/gen1us2k
• chaka@maddevs.io
• http://gen1us2k.com
• Слайды
• http://bit.ly/gdgalmaty2016

More Related Content

What's hot

Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Ontico
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
CodeFest
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
AvitoTech
 
Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...
Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...
Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...
Ontico
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Ontico
 
Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)
Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)
Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)
Ontico
 
виталий денисенков анатомия альфа-лизинга Fin (1)
виталий денисенков   анатомия альфа-лизинга Fin (1)виталий денисенков   анатомия альфа-лизинга Fin (1)
виталий денисенков анатомия альфа-лизинга Fin (1)Anastasia Karimova
 
IikoDeliveryLogistics
IikoDeliveryLogisticsIikoDeliveryLogistics
IikoDeliveryLogistics
iiko
 
SECON'2016. Алексеев Олег, Живой API
SECON'2016. Алексеев Олег, Живой APISECON'2016. Алексеев Олег, Живой API
SECON'2016. Алексеев Олег, Живой API
SECON
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
Denis Izmaylov
 

What's hot (10)

Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
Переход с Objective-C на Swift — все ли так просто? / Олег Алексеенко (SuperJob)
 
Александр Афенов
Александр АфеновАлександр Афенов
Александр Афенов
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
 
Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...
Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...
Как мы отказались от Skype и внедрили WebRTC на основе janus-gateway / Сергей...
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 
Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)
Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)
Опыт международных продаж видеостримера Flussonic / Максим Лапшин (Erlyvideo)
 
виталий денисенков анатомия альфа-лизинга Fin (1)
виталий денисенков   анатомия альфа-лизинга Fin (1)виталий денисенков   анатомия альфа-лизинга Fin (1)
виталий денисенков анатомия альфа-лизинга Fin (1)
 
IikoDeliveryLogistics
IikoDeliveryLogisticsIikoDeliveryLogistics
IikoDeliveryLogistics
 
SECON'2016. Алексеев Олег, Живой API
SECON'2016. Алексеев Олег, Живой APISECON'2016. Алексеев Олег, Живой API
SECON'2016. Алексеев Олег, Живой API
 
Микросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
 

Similar to Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Microservices on Go

GDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в GoGDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в Go
Andrew Minkin
 
Работа с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in GoРабота с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in Go
Mad Devs
 
Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...
Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...
Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...
Mad Devs
 
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Mad Devs
 
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
Andrew Minkin
 
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Ontico
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
Roman Ivliev
 
Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...
Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...
Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...
Mail.ru Group
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Ontico
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Колёса Крыша Маркет
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Mad Devs
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Ontico
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
Iosif Itkin
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Ontico
 
Кластеризация семантики
Кластеризация семантикиКластеризация семантики
Кластеризация семантики
NaZapad
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Sergey Xek
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
Pavlo Iuriichuk
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...rit2011
 
201107 Что происходит в хостинге?
201107 Что происходит в хостинге?201107 Что происходит в хостинге?
201107 Что происходит в хостинге?
Yuri Ustinov
 

Similar to Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Microservices on Go (20)

GDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в GoGDGNSK Работа с геоданными в Go
GDGNSK Работа с геоданными в Go
 
Работа с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in GoРабота с геоданными в Go GDGNSK / Work with Geodata in Go
Работа с геоданными в Go GDGNSK / Work with Geodata in Go
 
Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...
Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...
Как строить архитектуру для отказоустойчивой службы такси / How to Build a ...
 
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
Как собирать gps треки раз в секунду, экономя трафик / How to Collect GPS Tra...
 
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффикКак собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
 
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
Собираем GPS-треки от водителей в такси раз в секунду, экономя трафик / Андре...
 
Как мы делаем Banki.ru
Как мы делаем Banki.ruКак мы делаем Banki.ru
Как мы делаем Banki.ru
 
Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...
Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...
Как я написала платформу, взаимодействующую более чем с 15 странами по всему ...
 
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование Высоконагруженные трейдинговые системы и их тестирование
Высоконагруженные трейдинговые системы и их тестирование
 
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
Высоконагруженные трейдинговые системы и их тестирование (Иосиф Иткин)
 
Кластеризация семантики
Кластеризация семантикиКластеризация семантики
Кластеризация семантики
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server...
 
201107 Что происходит в хостинге?
201107 Что происходит в хостинге?201107 Что происходит в хостинге?
201107 Что происходит в хостинге?
 

More from Mad Devs

Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Mad Devs
 
Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество
Mad Devs
 
Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101. Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101.
Mad Devs
 
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Devs
 
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy FedorenkoMad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Devs
 
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Devs
 
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий КононенкоMaв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Mad Devs
 
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия КононенкоЛайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Mad Devs
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrain
Mad Devs
 
Flutter vs Native App Development
Flutter vs Native App DevelopmentFlutter vs Native App Development
Flutter vs Native App Development
Mad Devs
 
Mad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companiesMad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companies
Mad Devs
 
The paradox of choice in design
The paradox of choice in designThe paradox of choice in design
The paradox of choice in design
Mad Devs
 
Git and Github for Beginners
Git and Github for Beginners Git and Github for Beginners
Git and Github for Beginners
Mad Devs
 
How to hire freelancers
How to hire freelancersHow to hire freelancers
How to hire freelancers
Mad Devs
 
Ethereum blockchain
Ethereum blockchainEthereum blockchain
Ethereum blockchain
Mad Devs
 
"Outside In". Web application testing.
"Outside In". Web application testing."Outside In". Web application testing.
"Outside In". Web application testing.
Mad Devs
 
Asynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use itAsynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use it
Mad Devs
 
Ethereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактовEthereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактов
Mad Devs
 
Why we sleep. Michael Ivashenko
Why we sleep. Michael IvashenkoWhy we sleep. Michael Ivashenko
Why we sleep. Michael Ivashenko
Mad Devs
 
Удаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитикаУдаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитика
Mad Devs
 

More from Mad Devs (20)

Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
 
Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество
 
Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101. Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101.
 
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
 
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy FedorenkoMad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
 
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
 
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий КононенкоMaв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
 
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия КононенкоЛайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrain
 
Flutter vs Native App Development
Flutter vs Native App DevelopmentFlutter vs Native App Development
Flutter vs Native App Development
 
Mad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companiesMad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companies
 
The paradox of choice in design
The paradox of choice in designThe paradox of choice in design
The paradox of choice in design
 
Git and Github for Beginners
Git and Github for Beginners Git and Github for Beginners
Git and Github for Beginners
 
How to hire freelancers
How to hire freelancersHow to hire freelancers
How to hire freelancers
 
Ethereum blockchain
Ethereum blockchainEthereum blockchain
Ethereum blockchain
 
"Outside In". Web application testing.
"Outside In". Web application testing."Outside In". Web application testing.
"Outside In". Web application testing.
 
Asynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use itAsynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use it
 
Ethereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактовEthereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактов
 
Why we sleep. Michael Ivashenko
Why we sleep. Michael IvashenkoWhy we sleep. Michael Ivashenko
Why we sleep. Michael Ivashenko
 
Удаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитикаУдаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитика
 

Рефакторинг монолита в микросервисы на Go / Refactoring of Monolithe to Microservices on Go