The post has been translated automatically. Original language: Russian Russian
Low-code platforms allow you to create applications using graphical user interfaces (GUIs) instead of writing code. They are attracting more and more attention, as they help business users quickly create applications without programming knowledge.
Thousands of companies use low-code platforms to develop mission-critical business solutions. Everyone who has already worked with such tools was able to appreciate their reliability and convenience. However, when a business reaches a certain level of maturity, its ecosystem may require non-standard approaches that the basic low-code platforms are not able to provide.
Low-code is great for large-scale development, but there are situations when it is necessary to borrow methods from traditional programming. This allows you to significantly improve the quality of solutions, reduce the number of routine tasks and facilitate the work of the development team, thus reducing project costs.
In this article, we share our experience in solving complex development tasks on the low-code platform using non -standard approaches.
Client
Our experts were invited to help several teams developing a CRM system for a large bank using the low-code platform. The group consisted of more than 50 people of various roles: developers of different levels, QA specialists, business analysts and engineers. The bank's activities cover many areas, including retail lending, corporate lending and mortgage lending, and each team was engaged in functionality for its own area. The releases took place independently, but all the teams created a single universal application.
The main difficulties of the team were related to the quality of the releases and the complexity of their installation.
Evaluating the quality of the application
Many low-code platforms have built -in tools to ensure the quality of applications. These are dashboards that display the general state of the application, the ability to view the developed functionality in branches and track the functionality through tests.
Unfortunately, when several groups are working on the same application, the functionality developed by one team may implicitly affect the work of another team.
Conducting a full-fledged cross-review and regression testing is not always possible, so the logical solution was to apply the best practices from traditional programming. The world of development on Java offers mature application quality control practices that have been developing for over 20 years. Atomazing specialists decided to adapt some of them for the low-code platform:
- Modular testing in Java
- Control Build quality
- Code review using external tools
1. Unit testing
The main problem was the lack of complex integration tests that could verify the operation of the set business rules in aggregate, excluding interaction with external systems that may not be available. Such functionality is often missing in low-code platforms, but deep knowledge of Java has solved this problem.
With the help of Java unit testing tools , our team quickly wrote the necessary unit tests and integration tests that allowed us to check builds and identify problem areas. The Java toolkit is so extensive that it allows you to create tests for all the necessary business scenarios.
2. Build quality control
Our specialists sought to automate the quality control of a potential release after assembly. The team has added new warnings and restrictions to the development environment. We created a stage in the pipeline that checked the compliance of the assembly with the established criteria:
- The lack of warnings without explanation from the developer.
- The lack of medium and high level warnings.
- The lack of performance-related warnings.
- Coverage More than 85% of new features have been tested.
If the build did not meet the criteria, pipeline automatically rejected it.
3. Code review
The built-in code review tools on low-code platforms are suitable for standard projects, but they are often limited for customized applications. We have integrated tools from traditional programming.
Convenient text representations of changes have been created for all low-code elements , allowing reviewers to leave comments on specific lines. This accelerated and improved the review process.
Automation of the assembly pipeline
Most low-code platforms support CI/CD processes, but their flexibility is often insufficient. For example, a release may include not only a new application, but also changes to the database, complex data migration, and instructions for configuring environment variables.
The Atomazing team adapted the pipeline using Java approaches. Based on the configuration file, the build server unloaded the necessary artifacts, executed SQL scripts, and performed migrations. This approach minimized manual operations and the number of errors.
Conclusion
Low-code platforms provide extensive business opportunities. However, if the built-in functions are not enough, it is always possible to integrate the best practices of traditional programming to achieve the best results.
Low-code платформы позволяют создавать приложения с помощью графических пользовательских интерфейсов (GUI) вместо написания кода. Они привлекают всё больше внимания, так как помогают бизнес-пользователям быстро создавать приложения без знаний программирования.
Тысячи компаний используют платформы low-code для разработки критически важных решений для бизнеса. Все, кто уже успел поработать с такими инструментами, смогли оценить их надежность и удобство. Однако, когда бизнес достигает определенного уровня зрелости, его экосистема может потребовать нестандартных подходов, которые базовые low-code платформы обеспечить не в состоянии.
Low-code отлично подходит для крупномасштабной разработки, но бывают ситуации, когда необходимо заимствовать методы из традиционного программирования. Это позволяет значительно улучшить качество решений, уменьшить количество рутинных задачи и облегчить работу команде разработчиков, сократив таким образом расходы на проекте.
В этой статье мы делимся своим опытом решения сложных задач разработки на платформе low-code с использованием нестандартных подходов.
Клиент
Наших экспертов пригласили помочь нескольким командам, разрабатывающим CRM систему для крупного банка с использованием платформы low-code. Группа состояла из более чем 50 человек различных ролей: разработчиков разного уровня, QA специалистов, бизнес-аналитиков и инженеров. Деятельность банка охватывает множество направлений, включая розничное кредитование, кредитование юридических лиц и ипотечное кредитование, и каждая команда занималась функционалом для своего направления. Релизы проходили независимо, но все команды создавали единое универсальное приложение.
Основные трудности команды были связаны с качеством релизов и сложностью их установки.
Оценка качества приложения
Многие платформы low-code имеют встроенные инструменты для обеспечения качества приложений. Это дашборды, отображающие общее состояние приложения, возможности просмотра разработанного функционала в ветках и отслеживания функционала через тесты.
К сожалению, когда несколько групп работают над одним приложением, функционал, разработанный одной командой, может неявно влиять на работу другой команды.
Проведение полноценного кросс-обзора и регрессионного тестирования не всегда возможно, поэтому логичным решением стало применение лучших практик из традиционного программирования. Мир разработки на Java предлагает зрелые практики контроля качества приложений, которые развиваются уже более 20 лет. Специалисты Atomazing решили адаптировать некоторые из них для платформы low-code:
- Модульное тестирование на Java
- Контроль качества сборки
- Код-ревью с использованием внешних инструментов
1. Модульное тестирование
Основная проблема заключалась в отсутствии сложных интеграционных тестов, которые могли бы проверять работу множества бизнес-правил в совокупности, исключая взаимодействие с внешними системами, которые могут быть недоступны. Такая функциональность часто отсутствует в платформах low-code, но глубокие знания Java позволили решить эту проблему.
С помощью инструментов модульного тестирования Java наша команда быстро написала необходимые юнит-тесты и интеграционные тесты, которые позволяли проверять сборки и выявлять проблемные места. Набор инструментов Java настолько обширен, что позволяет создавать тесты для всех нужных бизнес-сценариев.
2. Контроль качества сборки
Наши специалисты стремились автоматизировать контроль качества потенциального релиза после сборки. Команда добавила новые предупреждения и ограничения в среду разработки. Мы создали этап в pipeline, который проверял соответствие сборки установленным критериям:
- Отсутствие предупреждений без объяснения разработчика.
- Отсутствие предупреждений среднего и высокого уровня.
- Отсутствие предупреждений, связанных с производительностью.
- Покрытие тестами более 85% новых функций.
Если сборка не соответствовала критериям, pipeline автоматически её отклонял.
3. Код-ревью
Встроенные инструменты для код-ревью на платформах low-code подходят для стандартных проектов, однако для кастомизированных приложений они часто ограничены. Мы интегрировали инструменты из традиционного программирования.
Для всех элементов low-code были созданы удобные текстовые представления изменений, позволяющие ревьюерам оставлять комментарии к конкретным строкам. Это ускорило и улучшило процесс ревью.
Автоматизация сборочного pipeline
Большинство платформ low-code поддерживают процессы CI/CD, но их гибкости часто недостаточно. Например, релиз может включать не только новое приложение, но и изменения в базе данных, сложную миграцию данных и инструкции для настройки переменных среды.
Команда Atomazing адаптировала pipeline, используя подходы Java. На основе конфигурационного файла сервер сборки выгружал необходимые артефакты, выполнял SQL-скрипты и проводил миграции. Этот подход минимизировал ручные операции и количество ошибок.
Заключение
Платформы low-code предоставляют широкие возможности для бизнеса. Однако если встроенных функций недостаточно, всегда можно интегрировать лучшие практики традиционного программирования, чтобы достичь наилучшего результатов.