Рубрики
Uncategorized

Как вы подходите к проекту устаревшего технологии?

Определение закономерности для улучшения устаревших систем. Tagged с обсуждением, Legacy, DevOps, Architecture.

В настоящее время я работаю над небольшой командой, чтобы «модернизировать» какое -то устаревшее программное обеспечение, которое имеет решающее значение.

Эта работа немного отличается от того, к чему я привык. Это включает в себя много планирования и много «людей людей» — мы работаем с существующей командой и будем влиять на будущую структуру этой команды и как она работает. Мы рассмотрим такие вещи, как препятствия для легкого развертывания кода, риски безопасности и устаревшие технологии, которые затрудняют нанимать и удерживать сотрудников, которые готовы работать над этими приложениями.

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

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

Образец 1: принять более современный инструмент сборки

Контекст

  • Существующие сценарии сборки использовали муравей
  • У нас было несколько артефактов сборки, сценариев муравья и файлов свойств
  • Большая часть конфигурации была нацелена в определенной среде и ОС (Windows)
  • Зависимости были связаны с проектом (или хранились где -то в общей среде разработки) как .jar файлы

Проблемы

  • Сценарии сборки было трудно понять
  • Муравей — это не технология, которую мы используем для других проектов, поэтому разработчики не знакомы с ней
  • Управление зависимостями было сложнее, чем нужно было

Решение

  • Мы создали новые сценарии сборки с помощью Gradle
  • Мы проверили сборки сборки, были идентичны тем, которые производились старой сборкой, перечисляя содержимое файлов JAR/WAR и запустив инструмент для сравнения бинарной совместимости пакетов

Новый контекст

  • Файлы сборки намного более краткие и просты для понимания
  • Зависимости объявляются в одном месте и извлекаются из хранилища Maven во время сборки, в соответствии с 12 Факторное приложение рекомендации

Контекст

  • Команда поделилась средой разработки, которая была единственным местом, где приложение может быть построен
  • У каждого разработчиков были свои собственные конфигурации для создания программного обеспечения
  • Для каждой среды был построен другой артефакт
  • Кодовые филиалы были давно прожили, и изменения превратились в запланированные релизы
  • У нас были некоторые автоматические тесты, но многие из них не бежали
  • Команда мигрировала в GIT из SVN, поэтому старый процесс сборки не был разработан с учетом GIT с учетом GIT

Проблемы

  • При разработке изменений не было никаких немедленных отзывов
  • Команда не была уверена, что артефакты, которые они выпускали, содержали изменения, которые они ожидали
  • Мастер -филиал не мог быть развернут в короткие сроки, поэтому нам пришлось сделать филиалы Hotfix и отслеживать их

Решение

  • Мы создали конфигурацию Circleci, которая запускает сборку Gradle, создавая файлы .war
  • Мы рассмотрели тесты, исправляя некоторые, которые не работали, и удаляя других, которые нам не нуждались, поэтому весь комплект работает в CI
  • У нас был разговор со всей командой о филиалах в GIT и разработка на основе багажника

Новый контекст

  • Master содержит код, который прошел CI, и мы рады выпустить, поэтому в филиалах Hotfix меньше необходимости
  • Тесты дают нам некоторую уверенность в том, что запрос на притяжение не сломает существующую функциональность
  • В краткосрочной перспективе мы намерены создать специфичные для среды артефакты из CI и развернуть их, что облегчит просмотр связи между развернутым артефактом и исходным кодом, который он был построен из

Как вы думаете, что -то подобное было бы полезно при работе с другими устаревшими проектами? Как вы подходите к улучшению процесса в своей работе?

Эффективно работаю с устаревшим кодом Это «Go To Book on Legacy Code», но многие советы фокусируются на внесении изменений в сам код, а не на системы вокруг кода. Вы бы порекомендовали посмотреть на какие -либо другие ресурсы по этой теме?

Оригинал: «https://dev.to/matmooredev/how-do-you-approach-a-legacy-technology-project-4pi7»