Upgrade to Pro — share decks privately, control downloads, hide ads and more …

«Итерационный подход в борьбе с legacy» — Алекс...

Badoo Tech
February 15, 2020

«Итерационный подход в борьбе с legacy» — Алексей Коротин, SuperJob

Очередная встреча сообщества PHP-разработчиков в офисе Badoo.

«Легаси — неизбежное явление для любого крупного проекта, и SuperJob тут не исключение. Я расскажу о том, что вообще можно считать легаси, как мы последовательно боремся с ним в своём проекте и какие инструменты для этого используем.

рассмотрим проблему легаси не только со стороны кода, но и со стороны данных;
поговорим о том, как организовать код проекта так, чтобы легаси не мешал быстрой разработке новых фич;
посмотрим на API как на способ изолировать плохой код от хорошего;
обсудим инструменты и подходы для выявления устаревшего кода и устаревших данных.

Badoo Tech

February 15, 2020
Tweet

More Decks by Badoo Tech

Other Decks in Programming

Transcript

  1. SuperJob — это: 10 млн пользователей в месяц более 30

    млн резюме 1.5 млн пользователей в сутки 2
  2. Легаси в коде • API • Версионирование • Борьба с

    легаси О чём поговорим 4 Легаси в данных • В БД • В кэше
  3. «Легаси — это код без тестов» M. Feathers, Working Effectively

    with Legacy Code «Легаси — это код без поддержки» Wikipedia «Код становится легаси сразу» A. Hunt, D. Thomas, The Pragmatic Programmer 6
  4. • Переписать всё с нуля: дорого и долго • Покрыть

    всё тестами: лишняя работа Что делать? 10
  5. 19

  6. Версионирование через фичи Feature A Feature B Feature C Server

    Client Feature D Feature C Feature E Feature D Feature F 23
  7. Версионирование через фичи Feature A Feature B Feature C Server

    Client Feature E Feature F Feature C Feature D Feature D 24
  8. 36

  9. 37

  10. Профиты подхода • Меньше кода: всё в конфигах • Легко

    искать ненужное: код обёрнут фичами 42
  11. Профиты подхода • Меньше кода: всё в конфигах • Легко

    искать ненужное: код обёрнут фичами • Меньше рефакторить: можем удалять старый код 43
  12. MySQL (5.7+): sys schema sys schema_table_statistics rows_fetched rows_inserted Такое название

    хотя бы можно запомнить (нет) rows_updated rows_deleted 54
  13. Подозрительные кэши • В кэш пишут, но не читают •

    Кэш пытаются удалить, но не пишут 62
  14. Подозрительные кэши • В кэш пишут, но не читают •

    Кэш пытаются удалить, но не пишут • Часто обращаются к несуществующим ключам 63
  15. 76 Наши планы • Автоматический поиск ненужного кода • Более

    детальный анализ данных • Обязательно что-нибудь ещё :)