...

Доставка решений. От ручных операций к DevOps инструментам построения CI/CD конвейера.

Тема в разделе "Примеры решений и дополнительных модулей", создана пользователем arestov, 2 май 2024.

  1. arestov

    arestov Участник

    Текст выступления на конференции ELMA Day 2024 Алексея Пушкарёва
    Доставка решений
    upload_2024-5-2_20-0-46.png
    От ручных операций к DevOps инструментам построения CI/CD конвейера

    Термины
    upload_2024-5-2_20-1-17.png

    Решение – это некий набор программных компонентов, который решает какую-то бизнес-функцию.

    Доставка – процесс, который происходит между разработкой этого решения и тем как пользователи начинают им пользоваться. И главный вопрос, на который отвечает эта доставка: «Как наше решение сделать качественным, чтобы пользователи оставались довольными и не случалось проблем на пути от разработчика к пользователю?».

    Зачем думать о процессах доставки и разработки решений в Low-code системе?
    upload_2024-5-2_20-1-53.png

    Как правило вендоры говорят: «У нас low-code раз раз сделали решение и вот оно работает». Но на самом деле не всегда так получается. Поскольку происходит разработка, то неизбежны ошибки, появляющиеся в процессе. И желательно их не проверять на пользователе. Иногда нужно просто проверить гипотезу, просто показать заказчику и уточнить, то ли это, что он хотел, не затрагивая весь пул пользователей. Из этого вытекает необходимость тестирования, где мы смотрим что у нас получилось. Проверяем сценарии на корректность и можем проверить производительность решения. Также, в конце концов, собираем обратную связь от пользователей. Не во всех компаниях у разработчиков должен быть доступ к бизнес-данным и их нужно оградить об бизнес-данных. Если мы ведём разработку на одной среде с пользователями, то изолировать данные не получается.

    Жизненный цикл решения.
    upload_2024-5-2_20-4-15.png

    Цикл разработки.
    upload_2024-5-2_20-4-58.png
    Планирование. Собираем данные планируем как будем делать, разрабатываем архитектуру.

    Разработка. Разрабатываем, делаем отладку, проводим ревью кода и проверяем качество на уровне разработки.

    Тестирование. Тестировщики изучают насколько выполняются бизнес-цели и показываем заказчику. Формируем документацию.

    Эксплуатация. Публикация для пользователей, осуществление настроек, в т.ч. прав доступа и собираем обратную связь при эксплуатации.

    Схема цикла CI/CD
    Доставка фокусируется на этих шагах. И если это происходит один раз, то достаточно этих этапов, но если это происходит постоянно, то это становится бесконечным процессом. То есть происходит постоянная доработка старых решений, создание новых. Это значит, что для успешной работы этот цикл должен быть как можно короче и с минимальными накладными расходами.

    Подходы к low-code разработке и доставке в ELMA 365
    upload_2024-5-2_20-5-25.png
    Для решения задачи по оптимизации жизненного цикла разработки существует 2 подхода.

    Разработка на живую. Выглядит страшно, но для некоторых не критичных решений он подходит. Мы лишаемся всех проблем с доставкой, не задумываемся над тем, как правильно сделать решение. И если бизнес от ошибок не рухнет, то можно отлаживать на рабочей система. Отладить мы сможем. Если что-то пойдёт не так, то пользователь может потерпеть.

    Второй подход — это разработка с несколькими средами.

    Окружения.
    upload_2024-5-2_20-5-46.png

    Использование нескольких окружений. Когда мы создаём не одну платформу ELMA, а несколько для доставки результатов разработки. Мы рекомендуем использовать 3 стенда:

    - среда разработки - где происходит непосредственная разработка и создание решений;

    - среда тестирования – где подключаются тестировщики и осуществляется демонстрация бизнес-заказчику

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

    Иногда добавляют стейдж среду, где проверяется корректная работа на актуальных данных, перед продуктовой средой.

    Архитектура.
    upload_2024-5-2_20-6-25.png

    Обратим внимание на то, что мы разрабатываем и из чего это состоит. В основе всего, очевидно, лежит сама платформа, а то, что мы разрабатываем относится к конфигурации. Конфигурация состоит из системных решений, которые мы получаем вместе с платформой:

    - что-то мы можем из стора поставить, но для нас это как готовые внешние компоненты

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

    Изоляция решений и совместная разработка.
    upload_2024-5-2_20-6-52.png

    Разделы и модули можно объединять в пользовательские решения. Разделы и модули лучше всего группировать в решения, это нам позволит формировать зависимости между решениями и доставлять их по частям, так как не всегда получается всё в одном разделе уместить и приходится разбивать. Решения нам помогут эту особенность обходить. Желательно формировать решения по принципу: одна бизнес функции, одно решение. Нужно стараться не использовать процессы или подобное на уровне конфигурации, а уносить всю эту логику на уровень решения. Это позволит легко переносить на другие площадки всю логику. Более подробные рекомендации находятся в low code буке по ссылке, где можно познакомиться с информацией и рекомендациям по разработке.

    Ручной перенос решений.
    upload_2024-5-2_20-7-24.png

    Ручной перенос нам позволяет интерфейс платформы. Отмечаем, что переносим, система проверяет можно ли это выгрузить. Если у нас есть какие-то ошибки, связанные с зависимостью, то система предложит добавить зависимости. В результате мы получим ELMA пакет, то есть отдельный файлик.

    ELMA365pm
    upload_2024-5-2_20-7-51.png

    Инструмент, который больше подходит для компаний, у которых сильный IT отдел, компаний, которые профессионально занимаются разработкой. Это ELMA365pm. Консольное приложение, которое также умеет загружать выгружать решения как в веб-интерфейсе, но помимо этого, приложение умеет распаковывать решения, то есть разложить на отдельные файлики, то, что было реализовано в low-code и позволяет работать off-line с этим решением. Например, это удобно для код ревью, мы можем открыть файлы решения в любимой IDE и поправить то, что мы хотим. А самое главное это можно использовать для внешней системы контроля версий Gitlab или Gitea. С помощью ELMA365pm можно автоматизировать процесс CI/CD, т.е. процесс непрерывной выкладки и доставки нашего решения.

    upload_2024-5-2_20-8-22.png

    Новое дерево решений
    Мы недавно добавили в ELMA365pm дополнительную фичу, где изменили дерево решений, где мы изменили дерево решений, которые теперь больше похоже на то, что мы видим в интерфейсе, а не что разделено по типам сущностей как раньше. Каждому рекомендую попробовать работу с этой утилитой.

    Вложения:

  2. arestov

    arestov Участник

    CI/CD
    upload_2024-5-2_20-12-15.png
    upload_2024-5-2_20-13-1.png
    upload_2024-5-2_20-13-51.png
    upload_2024-5-2_20-14-13.png
    upload_2024-5-2_20-14-43.png
    Допустим есть несколько команд, со своими задачами и есть 3 окружения DEV, TEST, PROD. Как всё происходит? Команда делает свою задачу, потом с помощью утилиты ELMA365pm делает выгрузку, распаковывает это решение и загружает в систему контроля версий, где уже настроен специальный пайплайн. Пайплайн соберёт это решение, мы проверим насколько оно импортируется экспортируется. Если у нас взрослые процессы и мы проводим код ревью, то здесь мы сможем эти же инструменты помогут нам осуществить код ревью. После команды смогут синхронизироваться между собой на сервер DEV и использовать общую кодовую базу. После того как мы накопили фичи мы сливаем это на среду тестирования, где подключается тестировщики. Далее могут происходить какие-то автоматизированные тесты, ещё что-то. В результате мы должны получить отлаженное готовое решение, которые не страшно выгрузить на продакшн. Выгрузка на продакшн. В результате решение начинает работать у всех пользователей.

    CI/CD. GitLab
    upload_2024-5-2_20-15-7.png

    Предлагаю пройти по ссылкам. Здесь статьи по настройке данного пути на примере гитлаба.

    Low-code CI/CD
    upload_2024-5-2_20-15-31.png

    Если у нас менее профессиональная команда, и мы не готовы себе ставить гитлаб. То мы хотим предложить новый инструмент low-code CI/CD, в которой уже в графическом виде можно настроить автоматизацию выгрузку решений между средами разработки.

    Интерфейс настройки привязок Low-code CI/CD.
    upload_2024-5-2_20-16-9.png

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

    Интерфейс настройки профиля переноса Low-code CI/CD.
    upload_2024-5-2_20-17-0.png

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

    Интерфейс настройки объектов переноса Low-code CI/CD.
    upload_2024-5-2_20-17-28.png

    Указываем объекты, которые переносим.

    Интерфейс сравнения конфигураций Low-code CI/CD.
    upload_2024-5-2_20-18-26.png


    Также этот инструмент позволяет осуществлять сравнение конфигураций. При сравнении можно увидеть, чем отличается на целевой площадке и на площадке разработчика решение, увидеть, что изменилось, будет подсвечено оранжевым, что новое, зелёненьким, и что отсутствует. Это нам позволит увидеть потенциальные места для ошибок.

    Интерфейс экспорта Low-code CI/CD.
    upload_2024-5-2_20-19-26.png

    Сам экспорт выполняется одной кнопкой. Экспорт выполняется в фоновом режиме и в конце нам предоставляется лог с ходом процесса. Нажимаем «выполнить» и можем продолжать работать в системе.
    upload_2024-5-2_20-20-12.png
    upload_2024-5-2_20-20-38.png

    Вложения:

    Последнее редактирование: 2 май 2024
  3. arestov

    arestov Участник