- PVSM.RU - https://www.pvsm.ru -
Это первая статья серии о том, как мы внедрили непрерывную интеграцию в процесс разработки CRM и облегчили жизнь финансовому отделу.
Прежде, чем описать технические подробности, расскажу о предпосылках к разработке системы и о том, как финансовый отдел работал раньше.
Раньше для автоматизации технических процессов в финансовом отделе мы использовали такую структуру.
Для создания счетов использовали Ronin [1].
С его помощью мы:
Но у Ronin был ряд недостатков:
От части недостатков избавила 1С. Она может:
Чтобы 1С генерировала красивые счета с периодом оказания услуги и данными договора, в наименование товара на стороне Ronin приходилось дописывать макросы, которые потом на стороне 1С обрабатывались:
"Администрирование серверов Июня 2016 года<-- 1c -->Администрирование серверов {#month#+1} {#year_of_month#+1} по договору № #contract_num# от #contract_date#{#act_month#+1}<-- artikul -->support</-- artikul --></-- 1c -->"
1С работала по следующей схеме:
1С решила не все проблемы — приходящие от клиентов платежи нужно как-то учитывать.
Недостающий функционал добавили в админку centos-admin.ru [2].
Следующие фичи легли на плечи Ruby on Rails, который используется в качестве бэк-енда для сайта:
Все платежи создавались не только в базе сайта, но и отправлялись в Ronin. С Ronin же брались данные о счетах и клиентах.
В этой схеме главным узлом был Ronin, а с ним независимо синхронизировались 1С и сайт.
Был ряд недостатков:
Работу бухгалтера передали сервисам «Эльба» и «Диадок» и теперь с радостью рекомендуем [3] нашим клиентам.
Остальной функционал Ronin, 1С и сайта решили объединить в собственной CRM-системе. Сперва перенесли с сайта прием платежей, обработку выписок и графики. Потом реализовали у себя функционал Ronin так, чтобы обойтись без 1С .
По возможности писали тесты, но не всегда и не везде, так как хотелось поскорее избавиться от костылей и начать пользоваться своей полноценной системой. Для этого даже взяли дополнительного разработчика в команду.
Через пару месяцев после запуска системы стали периодически повторяться одни и те же грабли — то срочно нужно добавить какую-то фишку ради клиента, которому нужно выписать счет на английском, то решим упростить логику, убрать лишний код и поля из базы. Вроде всё учитываешь, выкатываешь в продакшен, всё работает как надо, но вдруг какая-то редко используемая функция вылетает с багом как раз тогда, когда она понадобилась.
На баг пишется тест, баг исправляется, и свежий код снова в продакшене. Так количество тестов росло. В настоящий момент все тесты прогоняются минут за 7.
Бывает, пренебрегаем тестами, когда несколько релизов в день. Иногда выяснялось — зря. Приходилось срочно фиксить то, что можно было пофиксить до деплоя, если бы запустили тесты.
После пары таких ситуаций и решили внедрить CI. Благо в Gitlab [4], который мы используем для хранения кода, эта фича подаётся из коробки.
В следующей статье расскажем, как настраивали Gitlab CI [5], а после поделимся тем, что из этого вышло.
Автор: Centos-admin.ru
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/agile/186288
Ссылки в тексте:
[1] Ronin: https://www.roninapp.com/
[2] centos-admin.ru: https://centos-admin.ru/
[3] рекомендуем: https://centos-admin.ru/docs
[4] Gitlab: https://about.gitlab.com/
[5] Gitlab CI: https://about.gitlab.com/gitlab-ci/
[6] Источник: https://habrahabr.ru/post/309472/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.