С двойки на тройку: как мы перешли на Python 3 за 72 часа Сеть, бэкенд и web-разработка

Доклад принят в программу конференции
Кирилл Борисов
Booking.com

За 12 лет в индустрии Кирилл прошел долгий путь, усеянный костылями и посыпанный битым кодом. От монолитных учетных систем до микросервисов авторизации - эта непростая дорога была усеяна гниющими каркасами старых систем.
Но все было не зря: это путешествие наградило его немалым опытом, прохладными историями и некоторым количеством ценных советов, которым он уже не первый год делится на конференциях и митапах.
Характер нордический, есть коты.

Тезисы

2020! Год победившего Python 3! Все больше и больше систем встает на новые рельсы, библиотеки гордо отказываются от поддержки старого языка и кажется ничто уже не остановит победную поступь новой эпохи...

Но энтузиазм разработчиков быстро угасает, когда речь заходит об апгрейде старых монолитов. Кто не морщился от мысли о копании в древнем коде? Их можно понять, ведь зачастую он состоит из сомнительных решений длиной в тысячу строчек и благих намерений многолетней давности. Часто это отвращение приводит к решению о продолжении работы над проектом с использованием Python 2.

Что же это означает на деле:

* Отказ от перехода на новые версий сторонних библиотек;
* Необходимость бэкпортить нужные куски из чужого кода на Python 3;
* Невозможность использовать asyncio и прочие прогрессивные вещи из новых версий языка.

Именно в такой ситуации оказалась наша команда, когда очередная попытка склонить менеджмент на сторону прогресса не увенчалась успехом. 50 тысяч строчек нашего продукта были mission critical, чему здесь удивляться.

Но мы не пали духом, ведь на носу был ежегодный хакатон: 72 часа, никакого контроля и бесконечный бекон! Наша команда решила воспользоваться этим шансом и перевести весь продукт на Python 3, попытавшись не нанести непоправимого урона родной компании.

Как мы это сделали? Уложились ли в сроки? Все ли остались живы??

Ответы на эти и другие вопросы вы найдете в этом докладе.

Фреймворки
,
API
,
Python
,
Бэкенд / другое
,
Логирование и мониторинг
,
Интеграционное тестирование
,
Юнит-тестирование

Другие доклады секции Сеть, бэкенд и web-разработка