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

Как мы перебрали двигатель, не останавливая авт...

SECR 2019
November 14, 2019

Как мы перебрали двигатель, не останавливая автомобиль

Зураб Белый
Руководитель группы, Рексофт
SECR 2019

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

SECR 2019

November 14, 2019
Tweet

More Decks by SECR 2019

Other Decks in Programming

Transcript

  1. 12 Этап 1. Определение критических проблемных мест • Устаревшая версия

    CMS • Старые технологии • Отсутствие возможности локального запуска
  2. 13 Этап 1. Определение критических проблемных мест • Устаревшая версия

    CMS • Старые технологии • Отсутствие возможности локального запуска • Сложный процесс дебага
  3. 14 Этап 1. Определение критических проблемных мест • Устаревшая версия

    CMS • Старые технологии • Отсутствие возможности локального запуска • Сложный процесс дебага • Отсутствие тестов
  4. 15 Этап 1. Определение критических проблемных мест • Устаревшая версия

    CMS • Старые технологии • Отсутствие возможности локального запуска • Сложный процесс дебага • Отсутствие тестов • Сложный спагетти-код
  5. 16 Этап 1. Определение критических проблемных мест • Устаревшая версия

    CMS • Старые технологии • Отсутствие возможности локального запуска • Сложный процесс дебага • Отсутствие тестов • Сложный спагетти-код • Плохая масштабируемость
  6. 17 Этап 1. Определение критических проблемных мест • Устаревшая версия

    CMS • Старые технологии • Отсутствие возможности локального запуска • Сложный процесс дебага • Отсутствие тестов • Сложный спагетти-код • Плохая масштабируемость • Долгий процесс поставки обновлений
  7. 21 Этап 2. Изменения в процессах 1. Сменили тимлида 2.

    Добавили свежую кровь в команду
  8. 22 Этап 2. Изменения в процессах 1. Сменили тимлида 2.

    Добавили свежую кровь в команду 3. Починили покосившийся Agile
  9. 23 Этап 2. Изменения в процессах 1. Сменили тимлида 2.

    Добавили свежую кровь в команду 3. Починили покосившийся Agile 4. Изменили отношения внутри команды
  10. 24 Этап 2. Изменения в процессах 1. Сменили тимлида 2.

    Добавили свежую кровь в команду 3. Починили покосившийся Agile 4. Изменили отношений внутри команды 5. Тимбилдинги
  11. 25 Этап 2. Изменения в процессах 1. Сменили тимлида 2.

    Добавили свежую кровь в команду 3. Починили покосившийся Agile 4. Изменения отношений внутри команды 5. Тимбилдинги Переход к дружеским отношениям
  12. 35 Этап 3. Обновление кодовой базы Сервис AA Сервис локаций

    Другие сервисы Фронт-сервис Прокси-сервис Прокси-сервис Прокси-сервис Прокси-сервис
  13. 38 Этап 3. Обновление кодовой базы Создание сервисов • Каждый

    сервис - Spring Boot-приложение • Бизнес-логика написана с нуля (где возможно)
  14. 39 Этап 3. Обновление кодовой базы Создание сервисов • Каждый

    сервис - Spring Boot-приложение • Бизнес-логика написана с нуля (где возможно) • Весь новый функционал только в сервисах
  15. 40 Этап 3. Обновление кодовой базы Создание сервисов • Каждый

    сервис - Spring Boot-приложение • Бизнес-логика написана с нуля (где возможно) • Весь новый функционал только в сервисах • Общение со сторонними приложениями только через прокси-сервисы
  16. 48 Этап 5. Автоматизация деплоя • Автоматизируем все что можно

    • Связка Gradle + TeamCity • Более 100 скриптов оптимизации
  17. 49 Этап 5. Автоматизация деплоя • Автоматизируем все что можно

    • Связка Gradle + TeamCity • Более 100 скриптов оптимизации • Более 300 задач в CI-системе
  18. 50 Этап 5. Автоматизация деплоя • Автоматизируем все что можно

    • Связка Gradle + TeamCity • Более 100 скриптов оптимизации • Более 300 задач в CI-системе Сон разработчиков стал глубже и спокойнее
  19. 53 Этап 6. Собственная CMS • Нет подходящих решений на

    рынке • Сделать самим выгоднее в долгой перспективе
  20. 54 Этап 6. Собственная CMS • Нет подходящих решений на

    рынке • Сделать самим выгоднее в долгой перспективе • По мере реализации переносим контент в новую CMS
  21. 55 Этап 6. Собственная CMS • Нет подходящих решений на

    рынке • Сделать самим выгоднее в долгой перспективе • По мере реализации переносим контент в новую CMS • Отказ от платной версии не за горами
  22. 62 Что сейчас? • 26 сервисов • Собственная CMS •

    Полностью автоматизированные процессы
  23. 63 Что сейчас? • 26 сервисов • Собственная CMS •

    Полностью автоматизированные процессы • Современные технологии
  24. 64 Что сейчас? • 26 сервисов • Собственная CMS •

    Полностью автоматизированные процессы • Современные технологии • Автотесты для важного функционала
  25. 65 Что сейчас? • 26 сервисов • Собственная CMS •

    Полностью автоматизированные процессы • Современные технологии • Автотесты для важного функционала • Несколько успешных распродаж с рекордными нагрузками
  26. 66 Что сейчас? • 26 сервисов • Собственная CMS •

    Полностью автоматизированные процессы • Современные технологии • Автотесты для важного функционала • Несколько успешных распродаж с рекордными нагрузками • Мотивированные разработчики и тестировщики
  27. 67 Что сейчас? • 26 сервисов • Собственная CMS •

    Полностью автоматизированные процессы • Современные технологии • Автотесты для важного функционала • Несколько успешных распродаж с рекордными нагрузками • Мотивированные разработчики и тестировщики • Дружеские отношения с заказчиком