Менеджер транзакций в GoLang

Резерв

#Бэкенд / другое
#Организация доступа к базам данных, ORM, собственные драйвера
#GO

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Часто в Go приходится носить технические атрибуты в бизнес-логику. Одним из таких атрибутов является TX для базы данных. Данный доклад представит OpenSource-фреймворк, который позволит перестать его носить.

Целевая аудитория

Go-разработчики, работающие с вложенными сценариями и несколькими моделями в одной СУБД-транзакции.

Тезисы

Я объясню, как обычно устроен менеджер транзакций и почему его нельзя скопировать "в лоб" в Go из других языков.

Покажу, как сохранить транзакционность при работе с вложенными сценариями и несколькими репозиториями, не привязываясь к конкретной СУБД и не передавая транзакции как аргумент.

Расскажу, как в реалиях GoLang реализовать "идеальный" паттерн-репозиторий из книжек посредством менеджера транзакций.

https://github.com/avito-tech/go-transaction-manager/

Go-писатель в продуктовой команде, работу которого можно увидеть в категории "Телефоны".

Авито

На Авито каждый может найти что-то свое среди миллионов частных объявлений и предложений компаний по всей России: от квартиры и автомобиля до работы и кандидатов на вакансии. Сервис делают более 1300 инженеров. В Авито небольшой монолит на PHP, несколько сотен микросервисов на Go и Python, фронтенд на JavaScript, базы данных PostgreSQL, MongoDB и Redis, автоматические тесты, обученная на данных система модерации и поисковый движок Sphinx. Продуктом каждый месяц пользуется треть населения России.

Видео