SlideShare a Scribd company logo
1 of 52
Software Craftsmanship
meetup #10
Распределенные транзакции
Павел Вейник
CEO @ Hard & Soft Skills
Мы снова новом месте
Зарегистрировались 88 человек
Фаталисты?
Наш первый митап в Digital Unicorn
При поддержке Sam Solutions
План митапов
6. Как Software Craftsmanship фиксит проблемы Agile
7. БД: проектирование, масштабирование,
шардирование, реплицирование…
8. Процессы и инструменты для CI/CD
9. Логирование и мониторинг
10. Распределенные транзакции
Что интересует вас
 ACID в dtx
 Dtx – car
 Шаблоны для dtx
 Dtx – логгирование, сбои,
согласованность
 Dtx scaling
 Целостность tx
 Опыт с dtx
 Надо ли мне dtx?
 Выбор между хорошими
решениями
 Хаос в процессах
 Нет видения
 Нет свободного времени
Что интересует вас
 Dtx Saga
 Баланс техники и бизнеса
 Целостность данных
 Поиск проблем в распред
среде
 Много джуниоров
 Вызов API изнутри tx
 Нечеткие требования
 Непрозрачные решения
 Нет возможности учиться
 Legacy
 Сроки
Что интересует вас
 Accidental complexity
 Отладка интеграций
 Целостность данных
 Scaling
 Transactions
 Лень
 Как мотивировать
разработчиков делать well-
crafted решения
 Необходимость отвечать на
обязательные вопросы
План этого митапа
1. Какие бывают транзакции
2. Проблема dtx
3. Уровни изоляции dtx
4. Подходы и шаблоны
Какие бывают транзакции
Плоские
Вложенные
Распределенные
Плоские или вложенные
Парадокс двух армий
Как генералам договориться о времени атаки?
Непредсказуемое поведение сети
Ваши варианты
1.
2.
3.
Длинные бизнес транзакции
Резервирование денег на карте на
время проживания в отеле
две технические короткие tx
Не ACID
Абстрактные участники транзакции
Resource
Transaction client
Resource manager
Transaction manager
Один update, одна бд
Две бд
Two phase commit
Запуск общей распределенной
транзакции
Voting phase
Commit phase
Two phase commit
Dtx и реальный мир
A и C недостижимы на 100%
Есть промежуток между
коммитами
Window of Inconsistency
Бд1 -> очередь -> Бд2
Dtx и cloud
Ресурсы могут включаться и
выключаться
Включая resource manager
Включая tx manager
Ведет к блокировке ресурсов
навсегда
Dtx и cloud
Можно использова tx log на
другом окружении
Но чаще выбор – жить без dtx
Dtx и cloud. Вариант 1
Нужно обновить 2 ресурса
Обновить только 1
Ошибку писать в лог и игнорировать
Dtx и cloud. Вариант 2
2 phase commit вручную
Как будто собственный tx manager
Dtx и cloud. Вариант 3
Изменения на р1 и р2 разнесены по
времени, сначала р1
Batch processing
Очереди
Запланированная и recoverable ошибка
Dtx и cloud. Вариант 4
Обновляется р1
Обновляется р2
При ошибке р1 откатывается в отдельной
транзакции
Избегаем dtx. Вариант 1
Избегаем dtx. Вариант 2
Пишем в бд job и регулярно пробегаем по
нему
Как будто свой tx log и свой tx manager
Избегаем dtx. Вариант 3
Pessimistic time-base locking
Добавляем в качестве lock поля id транзакции
в состояние объекта, который хотим изменить
Обнуляем поле при commit/rollback
Обнуляем поле по timeout
Избегаем dtx. Вариант 4
Optimistic locking
Служит для обнаружения, а не для избежания
ошибок
Сначала обновляем локальную запись
Потом пытаемся обновить remote
Откатываем локальную при ошибке
Избегаем dtx. Вариант 4
Optimistic locking
Можно откатывать локальное изменения в
batch job, или с помощью лога транзакций
Idempotence - повторяемость
Когда удаленное обновление успешно, но мы
не получили уведомления об этом
Проблема double submit
Idempotence - повторяемость
Idempotence - повторяемость
Нужно уметь распознавать повторные запросы
и делать сервисы repeatable
Возвращать уже существующий ответ на
повторный запрос
Очень сильно снижает сложность системы
микросервисов
Idempotence - повторяемость
Можно использовать tx id для определения
повторного запроса
Но как шарить tx id в кластере одинаковых
микросервисов?
Получается shared state, и требуются доп
усилия
Избегаем dtx. Вариант 5
Вручную своим кодом
Нет tx manager
Каждая tx рассматривается отдельно
Проблема с нетранзакционными сервисами,
которые нельзя откатить
Избегаем dtx
Сформулируйте алгоритмы и потоки данных
так, чтобы они работали с eventual
constistency
Боритесь с бизнесом за eventual constistency
Избегаем dtx
Делайте repeatable сервисы
Или делайте грамотные откаты для optimistic
сценариев
В существующей системе
Упрощайте алгоритмы
Облака
Удобны для деплоя
Удобны для scaling
Кошмар для consistency и atomicity
Стратегии, шаблоны
2 phase commit
Saga
3 phase commit
1 phase commit
Плюсы 2pc
Гарантирует atomicity
Дает read-write изоляцию
Изменения не видны пока не закомитили
Синхронный
Клиент уведомляется об окончании
Минусы 2pc
Синхронный
Медленный для микросервисов
Зависит от tx manager
Блокирует ресурсы
Ведет к замедлению
Ведет к deadlocks
Saga
Вспоминаем митап 4 «Интеграция систем и
очереди сообщений»
Дает eventual consistency
Микросервисы общаются через event bus
Хореография или оркестрация
Оркестрированная Saga
Оркестрированная Saga
Оркестрированная Saga
Избегать циклических зависимостей
Использовать tx id
Избегать синхронных операций
Логировать запросы для повторного запуска в
случае ошибок
Плюсы Saga
Один микросервис – одна транзакция
Нет блокировок
Не нужно блокирование ресурсов
Хорошо для scaling и нагрузки
Минусы Saga
Нет read изоляции
Support hell при большом количестве
микросервисов
Saga vs 2pc
Saga
большой throughput, большой latency
2pc
Меньше throughput, меньше latency
Возможны deadlocks
Ссылки
Введение
 https://www.ibm.com/developerworks/cloud/library/cl-manage-cloud-transactions_1/index.html
 https://www.ibm.com/developerworks/cloud/library/cl-manage-cloud-transactions_2/index.html
 https://rise.cs.berkeley.edu/blog/an-overview-of-the-calm-theorem/
 https://towardsdatascience.com/distributed-transactions-and-why-you-should-care-116b6da8d72
 https://queue.acm.org/detail.cfm?id=3025012
 https://thoughts-on-java.org/distributed-transactions-microservices/
 http://wiki.c2.com/?DistributedTransactionsAreEvil
 https://softwareengineering.stackexchange.com/questions/290917/what-is-the-most-accepted-
transaction-strategy-for-microservices
Ссылки
Глубоко
 https://softwareengineering.stackexchange.com/questions/290917/what-is-the-most-accepted-transaction-
strategy-for-microservices
 https://dzone.com/articles/microservices-using-saga-pattern
 http://www.vldb.org/pvldb/vol10/p685-zamanian.pdf
 http://lig-membres.imag.fr/leroyv/wp-content/uploads/sites/125/2016/10/4-DistTXCourt.pdf
 http://www.cnds.jhu.edu/courses/cs437/Week6.pdf
Шаблоны
 https://dzone.com/articles/microservices-using-saga-pattern
 https://developers.redhat.com/blog/2018/10/01/patterns-for-distributed-transactions-within-a-microservices-
architecture/
 https://medium.com/swlh/handling-transactions-in-the-microservice-world-c77b275813e0
 https://blog.bernd-ruecker.com/saga-how-to-implement-complex-business-transactions-without-two-phase-
commit-e00aa41a1b1b
 https://medium.com/@ijayakantha/microservices-the-saga-pattern-for-distributed-transactions-c489d0ac0247
Ссылки
Книги
 https://www.oreilly.com/library/view/distributed-systems-2nd/9781466552975/
 https://www.oreilly.com/library/view/practical-microservices-architectural/9781484245019/
 https://www.oreilly.com/library/view/practical-microservices-architectural/9781484245019/
 https://www.oreilly.com/library/view/hands-on-reactive-programming/9781787284951/

More Related Content

What's hot

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 pipelinePavel Veinik
 
Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellencePavel Veinik
 
вебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазинавебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазинаАндрей Степенко
 
Подход и инструменты измерения эффективности процесса разработки или как держ...
Подход и инструменты измерения эффективности процесса разработки или как держ...Подход и инструменты измерения эффективности процесса разработки или как держ...
Подход и инструменты измерения эффективности процесса разработки или как держ...HOWWEDOIT
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps_Fest
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияAlexander Byndyu
 
Александр Андронов, Engineering Assessment
Александр Андронов, Engineering AssessmentАлександр Андронов, Engineering Assessment
Александр Андронов, Engineering AssessmentScrumTrek
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Ontico
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование системMedia Gorod
 
Дмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкойДмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкойScrumTrek
 
131024 производственное планирование как метод решения проблем itsm forum r...
131024   производственное планирование как метод решения проблем itsm forum r...131024   производственное планирование как метод решения проблем itsm forum r...
131024 производственное планирование как метод решения проблем itsm forum r...Андрей Степенко
 
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
 
рентабельный код
рентабельный кодрентабельный код
рентабельный кодMax Arshinov
 
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileКонстантин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileScrumTrek
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest
 

What's hot (20)

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
 
Software craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellenceSoftware craftsmanship meetup 22. engineering excellence
Software craftsmanship meetup 22. engineering excellence
 
20070414 Toc Pm
20070414 Toc Pm20070414 Toc Pm
20070414 Toc Pm
 
вебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазинавебинар 2601 эффективность интернет магазина
вебинар 2601 эффективность интернет магазина
 
Подход и инструменты измерения эффективности процесса разработки или как держ...
Подход и инструменты измерения эффективности процесса разработки или как держ...Подход и инструменты измерения эффективности процесса разработки или как держ...
Подход и инструменты измерения эффективности процесса разработки или как держ...
 
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
DevOps Fest 2020. Максим Безуглый. DevOps - как архитектура в процессе. Две к...
 
Микросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс РоссияМикросервисы, чистый PaaS и конкурс Мисс Россия
Микросервисы, чистый PaaS и конкурс Мисс Россия
 
Александр Андронов, Engineering Assessment
Александр Андронов, Engineering AssessmentАлександр Андронов, Engineering Assessment
Александр Андронов, Engineering Assessment
 
CCPM Vebinar 21 01 2010
CCPM Vebinar 21 01 2010CCPM Vebinar 21 01 2010
CCPM Vebinar 21 01 2010
 
CCPM DBR Vebinar 28 01 2010
CCPM DBR Vebinar 28 01 2010CCPM DBR Vebinar 28 01 2010
CCPM DBR Vebinar 28 01 2010
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
 
Быстрое масштабирование систем
Быстрое масштабирование системБыстрое масштабирование систем
Быстрое масштабирование систем
 
Дмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкойДмитрий Грибов, Трава и грибы как средства управления разработкой
Дмитрий Грибов, Трава и грибы как средства управления разработкой
 
131024 производственное планирование как метод решения проблем itsm forum r...
131024   производственное планирование как метод решения проблем itsm forum r...131024   производственное планирование как метод решения проблем itsm forum r...
131024 производственное планирование как метод решения проблем itsm forum r...
 
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
Software craftsmanship meetup 20. транзакции и data constistency в микросерви...
 
рентабельный код
рентабельный кодрентабельный код
рентабельный код
 
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по AgileКонстантин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
Константин Бажин, ТОП 10 не могу или что нужно сделать, чтобы жить по Agile
 
Wild microservices and imaginary DevOps
Wild microservices and imaginary DevOpsWild microservices and imaginary DevOps
Wild microservices and imaginary DevOps
 
20100309-DBR potencial
20100309-DBR potencial20100309-DBR potencial
20100309-DBR potencial
 
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
CodeFest 2014. Шипилёв А. — Java Benchmarking: как два таймстампа записать!
 

Similar to Software craftsmanship 10: распределенные транзакции

Kubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rusKubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rusIvan Glushkov
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"IT Event
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
 
Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...
Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...
Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...DevPoint Kyiv
 
самое интересное в мире блокчейн, опыт и рецепты от сбербанка
самое интересное в мире блокчейн, опыт и рецепты от сбербанкасамое интересное в мире блокчейн, опыт и рецепты от сбербанка
самое интересное в мире блокчейн, опыт и рецепты от сбербанкаСбертех | SberTech
 
GeorgyShuklin (Selectel) @ CodeCamp2011
GeorgyShuklin (Selectel) @ CodeCamp2011GeorgyShuklin (Selectel) @ CodeCamp2011
GeorgyShuklin (Selectel) @ CodeCamp2011CodeCamp
 
Software craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionSoftware craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionPavel Veinik
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Ontico
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
Частное облако для CIO и CxO
Частное облако для CIO и CxOЧастное облако для CIO и CxO
Частное облако для CIO и CxOMichael Kozloff
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Tanya Denisyuk
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиFProg
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Vadim Madison
 
Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1
Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1
Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1Michael Kozloff
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхPavel Grushetzky
 
Легко ли продавать контейнеры на базаре (Павел Емельянов)
Легко ли продавать контейнеры на базаре (Павел Емельянов)Легко ли продавать контейнеры на базаре (Павел Емельянов)
Легко ли продавать контейнеры на базаре (Павел Емельянов)Ontico
 

Similar to Software craftsmanship 10: распределенные транзакции (20)

Kubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rusKubernetes is not needed to 90 percents of the companies.rus
Kubernetes is not needed to 90 percents of the companies.rus
 
Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"Алексей Рагозин "Java и linux борьба за микросекунды"
Алексей Рагозин "Java и linux борьба за микросекунды"
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...
Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...
Панаскин Денис: Архитектура для Internet of Things проектов с учетом расходов...
 
самое интересное в мире блокчейн, опыт и рецепты от сбербанка
самое интересное в мире блокчейн, опыт и рецепты от сбербанкасамое интересное в мире блокчейн, опыт и рецепты от сбербанка
самое интересное в мире блокчейн, опыт и рецепты от сбербанка
 
GeorgyShuklin (Selectel) @ CodeCamp2011
GeorgyShuklin (Selectel) @ CodeCamp2011GeorgyShuklin (Selectel) @ CodeCamp2011
GeorgyShuklin (Selectel) @ CodeCamp2011
 
Software craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interactionSoftware craftsmanship 17: Microservices interaction
Software craftsmanship 17: Microservices interaction
 
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
Частное облако для CIO и CxO
Частное облако для CIO и CxOЧастное облако для CIO и CxO
Частное облако для CIO и CxO
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
Максим Барышников, Что такое типовые проблемы нагруженных проектов и как их р...
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
 
Purely practical data structures
Purely practical data structuresPurely practical data structures
Purely practical data structures
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?Чему мы научились разрабатывая микросервисы?
Чему мы научились разрабатывая микросервисы?
 
Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1
Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1
Куда летят облака? Примеры внедрений, вопросы и прогнозы развития в России v.1.1
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложениях
 
Легко ли продавать контейнеры на базаре (Павел Емельянов)
Легко ли продавать контейнеры на базаре (Павел Емельянов)Легко ли продавать контейнеры на базаре (Павел Емельянов)
Легко ли продавать контейнеры на базаре (Павел Емельянов)
 
Highload 2011-demona
Highload 2011-demonaHighload 2011-demona
Highload 2011-demona
 

More from Pavel Veinik

System Engineering Webinar
System Engineering WebinarSystem Engineering Webinar
System Engineering WebinarPavel 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 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencySoftware craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencyPavel Veinik
 
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithSoftware craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithPavel Veinik
 
Software craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsSoftware craftsmanship 12 online highload systems
Software craftsmanship 12 online highload systemsPavel 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 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3Pavel Veinik
 
Women in technology_week-women_leadership
Women in technology_week-women_leadershipWomen in technology_week-women_leadership
Women in technology_week-women_leadershipPavel Veinik
 
Программирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовПрограммирование и лингвистика: как понять язык и извлечь знания из текстов
Программирование и лингвистика: как понять язык и извлечь знания из текстовPavel Veinik
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Pavel Veinik
 

More from Pavel Veinik (12)

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 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and ResiliencySoftware craftsmanship 15 online: Reliability and Resiliency
Software craftsmanship 15 online: Reliability and Resiliency
 
Software craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the MonolithSoftware craftsmanship 14 online Splitting the Monolith
Software craftsmanship 14 online Splitting the Monolith
 
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 3
Software craftsmanship 3Software craftsmanship 3
Software craftsmanship 3
 
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 10: распределенные транзакции