Как потратить 4 года
и мешок денег на рефакторинг
и ничего не запустить
Максим Чистяков,
Ultimate Guitar
Веб
Ресурс №1 для гитаристов
во всем мире
iPhone
Платное приложение №1
в разделе «Музыка» в App Store
iPad
11 000 000 скачиваний из
App Store
Android
Лучшее приложение 2014 года
по версии Google Play
Проблемы с серверным окружением
● FTP
● Сервер = домашний компьютер
● Холодный резерв
Проблемы БД
Проблемы кодовой базы
Проблемы кодовой базы
Проблемы кодовой базы
Проблемы кодовой базы
Проблемы кодовой базы
Проблемы кодовой базы
Ошибка №1
Не только рефакторинг, но и редизайн
Редизайн
Ошибка №2
Рефакторить и код, и базу данных
одновременно
Запуск проекта
Запуск проекта
Чем лучше мы понимаем, что нужно сделать,
тем больше отдаляемся
Ошибка №3.
Добавить ещё программистов
Фредерик Брукс, 1975
Мифический человеко-месяц
Ошибка №4.
Все равно писать свой велосипед
Своя ORM
● «Раньше у нас был MySQLi и не было экранирования из коробки»
● «У нас сложные связи между объектами, другие ORM не смогут
построить правильные отношения»
● «Остальные ORM генерируют слишком много запросов или
неоптимальные запросы»
● Все остальные ORM - плохие :-)
Overall rating
Sound: 9
+
Lyrics: 8
+
Impression: 9
-----------------------
Overall rating: 8.7 Superb
Ошибка №5
Переписать всё с нуля
Joel Spolsky, April 6, 2000
Things You Should Never Do,
Part I
«Идея о том, что новый код
лучше старого, явно абсурдна»
Слезть с иглы рефакторинга
Рефакторинг на аутсорс
Как же рефакторить backend без боли?
Как же рефакторить backend без боли?
Реновации
Измайлово
Рефакторинг
Измайлова
Рефакторинг
Измайлова
Поддержка кода
Получилось-то?
● 2009-2012: пилим-пилим новую версию
Получилось-то?
● 2009-2012: пилим-пилим новую версию
● 2013: holyshit php → монолит Yii1, PHP 5.1 → PHP 5.5
Получилось-то?
● 2009-2012: пилим-пилим новую версию
● 2013: holyshit php → монолит Yii1, PHP 5.1 → PHP 5.5
● 2014-2015: больше мониторинга и CI
Получилось-то?
● 2009-2012: пилим-пилим новую версию
● 2013: holyshit php → монолит Yii1, PHP 5.1 → PHP 5.5
● 2014-2015: больше мониторинга и CI
● 2016: Yii1 → Yii2, PHP 5.5 → PHP 7.0, микросервисы
Мораль
1. Не (рефакторить и редизайнить)
2. Не рефакторить код и базу
3. Не добавлять еще программистов
4. Не переписывать все сразу
5. Не выделять отдельное время на рефакторинг
6. Выливать сразу
7. Мониторить все что движется
Спасибо!
m.chistyakov@ultimate-guitar.com

Как потратить 4 года и мешок денег на рефакторинг и ничего не запустить / М.Чистяков