Привет, Хабр!
Я работаю в сфере BI уже несколько лет, и за это время успела познакомиться со множеством инструментов и платформ для анализа и визуализации данных. Среди них, разумеется, популярные no-code BI-платформы: Qlik Sense, Power BI, Tableau и DataLens. Кроме того, мне доводилось работать с FineBI (платформа с акцентом на self-service BI для корпоративных пользователей), DeltaBI ( она предлагает гибкие возможности для настройки отчетов) и Apache Superset (мощная открытая BI-платформа, гибкая, с возможностью кастомизации).
Однажды мне предложили поучаствовать в проекте: нужно было перенести приложение, разработанное на основе продуктов Microsoft, таких как Power Apps, на платформу Appsmith. Оно взаимодействовало с базой данных и позволяло фильтровать данные, управлять элементами интерфейса и выполнять различные операции.
Основные различия между Power Apps и Appsmith: стоимость, гибкость и интеграция.
У Appsmith есть бюджетный вариант — бесплатная community-версия. Это независимый инструмент с очень гибким функционалом, можно даже использовать кастомные виджеты. Кроме того, Appsmith поддерживает управление версиями, интегрируясь с системами контроля версий, например GitLab, и позволяет переносить приложения с помощью файлов JSON.
Power Apps — интегрированный продукт в экосистеме Microsoft. Конечно, это делает работу с другими продуктами Microsoft более удобной, но, с другой стороны, есть и ограничения. Например, приложения, созданные в Power Apps, могут не поддерживать сложную логику и функциональные возможности, которые доступны в более гибких инструментах.
Appsmith появилась недавно, в 2019 году, но развивается она достаточно быстро. Обновления выходят регулярно, и за время моей работы с ней версия обновилась с 1.5 до 1.19. На момент написания статьи текущая версия — 1.37. Сообщество довольно активное и отзывчивое, быстро реагирует на вопросы и всегда готово поделиться советом. Платформа же постоянно дополняет программу теми функциями, о которых просят пользователи.
Мои первые шаги в Appsmith начались с бесплатной community-версии, которую можно развернуть на собственных серверах (self-hosted). Она даёт все необходимые инструменты для разработки и управления приложениями, позволяет эффективно работать над проектом без дополнительных затрат.
![](https://habrastorage.org/getpro/habr/upload_files/d9e/138/395/d9e13839546b806d8305f9bbe630acf1.jpg)
В community-версии Appsmith есть все необходимые визуальные элементы и функционал для успешной разработки и работы приложения. Тем не менее, мы столкнулись с проблемами в области управления доступом. Например, не было возможности восстановить или сбросить пароль, а иногда случались сбои при доставке оповещений на электронную почту о приглашениях в рабочее пространство.
Моим первым приложением было одностраничное решение, предназначенное для того, чтобы запускать процедуры в базе данных с передачей параметров (срезы, период с/по и пользователь). В проекте использовались: Appsmith для интерфейса, Apache Airflow для оркестрации процессов и Greenplum как базу данных.
![](https://habrastorage.org/getpro/habr/upload_files/880/18c/f8f/88018cf8fb9b17ba5f3cd609d135720e.png)
Второе приложение, состояло уже из трёх страниц: главной и двух вспомогательных. Его основная задача — отображать текущее состояние записей в базе данных, давать возможность редактировать их (создавать или разрывать связи между записями) и показывать историю изменений.
![](https://habrastorage.org/getpro/habr/upload_files/4ad/e3a/6a8/4ade3a6a8546e6668928fcfe5875617f.png)
Теперь о пользовательском интерфейсе. Размещать объекты на экране достаточно просто. Виджеты легко можно выбрать в левом меню, перетащить на холст и отредактировать, насколько это позволяет программа. Однако на этом этапе были замечены несколько важных нюансов. Во-первых, блоки виджетов оказались довольно громоздкими. В первом приложении использовали минимальные размеры шрифтов и полей, а элементы были плотно прижаты друг к другу.
Таким образом получилось разместить больше информации на экране. Но даже при этом количество элементов, которые можно было отобразить на холсте, оставалось ограниченным. Особенно это стало заметно при использовании стандартного виджета «Таблица», где даже на экране с высоким разрешением умещалось не более 13-14 строк, а остальная информация уходила в область прокрутки или разбивалась на дополнительные страницы.
![](https://habrastorage.org/getpro/habr/upload_files/498/d61/414/498d61414375fc90eb1523e97efa6ed2.png)
На мой взгляд, можно выделить несколько плюсов и минусов. Основной минус — размеры стандартных виджетов. Они занимают много места и оставляют большие зазоры между элементами. Их минималистичный дизайн может ограничивать гибкость настроек. Например, в виджете со списком «Срезы» нельзя выровнять или расположить пункты по своему усмотрению. Однако стоит отметить и плюс: возможность создания кастомных виджетов, что даёт больше свободы в настройке интерфейса. Но это уже другая история.
С адаптивностью интерфейса к различным экранам у Appsmith тоже не всё гладко. При сужении экрана виджеты наползают друг на друга, а это неудобно. В итоге оптимальным вариантом стал режим Desktop.
![](https://habrastorage.org/getpro/habr/upload_files/e62/529/92d/e6252992d0a628c0c2e95b3fcfd87d15.png)
В этом случае, хоть и едва заметно, но появляются скроллы по бокам экрана, зато элементы не накладываются друг на друга.
![](https://habrastorage.org/getpro/habr/upload_files/a9f/4a2/e1d/a9f4a2e1d3d08dfdf8f7fcb9346d686e.png)
Режим Fluid width тоже был протестирован. С одной стороны, он вызывает «кучкование» всех колонок слева, и только последняя колонка растягивается на всю ширину экрана. Но этот режим может быть полезен в проектах, где мало кнопок, но много текста или таблиц (как во втором приложении), где важно показать данные в удобном для чтения формате.
Режима Auto-layout (beta) подошел еще меньше: блоки не только накладывались друг на друга, но и их положение приходилось вручную восстанавливать. Это очень усложняло процесс создания адаптивного интерфейса.
![](https://habrastorage.org/getpro/habr/upload_files/ba2/0ca/49b/ba20ca49b68961e44d3fdf99144e8a5f.png)
Итак, можно отметить следующие минусы: нет полноценной адаптивности канвы, это особенно заметно, когда невозможно «приклеить» нижний край контейнера с таблицей к рабочему окну. Приходится ограничиваться фиксированным экраном. В случаях, когда виджетов мало, можно использовать режим «растягивания по ширине», но тогда появляется пустое пространство справа в таблицах с данными, а это выглядит неаккуратно.
Кстати, если вы разрабатываете в браузере с использованием community-версии Appsmith, не забывайте регулярно сохранять свою работу в Git, чтобы ничего не потерять. В этой версии доступна только одна ветка разработки — Main, что уже является преимуществом по сравнению с Power Apps, где таких возможностей вообще не было и CI/CD не поддерживался. Из ветки Main можно восстановить последние сохраненные изменения и избежать потери данных.
Ещё один вариант — экспортировать приложение на локальный компьютер в формате JSON. Этот файл можно без труда импортировать обратно под ролью администратора или перенести в другую среду, что упрощает миграцию. Также отмечу отсутствие тайм-аутов при исходящих запросах, которые в Power Apps часто происходили после 180 секунд ожидания. Это делает работу с Appsmith более стабильной.
Возможно, кому-то перечисленные выше минусы покажутся не такими значительными, но важно быть готовым к тому, что базовый набор Appsmith больше ориентирован на функциональность, а не на визуальные изыски. Да, через кастомизацию можно добиться нужного результата, но придётся потратить время и приложить усилия.
По моему опыту, бизнес-пользователи часто ожидают красивой визуализации: столбцов или блоков нужной ширины, аккуратных подписей с привлекательными значками, кнопок нужной формы и формата. Однако в ограниченной версии Appsmith возможностей для творчества немного, и это может стать препятствием, если важен внешний вид приложения.
Собственно, функциональность и раскрывает преимущества Appsmith перед PowerApp.
Одно из главных преимуществ Appsmith — возможность интеграции с существующими системами, например Airflow. Это значительно расширяет функционал и упрощает решение одной из задач интерфейса: дать пользователю возможность мониторить процесс обработки его запроса в реальном времени.
В Power Apps таблица с логами операций отображалась только после завершения работы Power Automate и показывала итоговые статусы — Success или Failed. Используя Appsmith в интеграции с Airflow можно отображать информацию не только о конечных результатах из базы данных, но и напрямую из оркестратора. Это гораздо удобнее для пользователей. Не нужно вручную переделывать записи стандартных логов из базы данных в более читабельный формат, вместо этого можно задать автоматическое преобразовывание данных из построчного в колоночный вид, и это делает интерфейс более user-friendly.
Кроме того, появились дополнительные статусы, например Queued и Running, которые помогают отслеживать процесс выполнения запроса. Теперь не только видно конечный результат, но и понятно, на каком этапе что-то не запустилось или возникли ошибки. Работа с системой стала более прозрачной, а диагностика проблем упростилась.
Ещё одно преимущество — возможность блокировать кнопку запуска процесса у всех пользователей одновременно, пока не завершится текущий процесс. Это позволяет системе давать обратную связь пользователям и предотвращать запуск параллельных процессов кем-то еще. В общем, одновременное управление доступом возможно, а конфликты при повторных попытках запуска исключены.
![Было Было](https://habrastorage.org/getpro/habr/upload_files/e0d/81f/b93/e0d81fb93598508eb13b91b8b77f1fb4.jpg)
![Стало Стало](https://habrastorage.org/getpro/habr/upload_files/660/847/08a/66084708ad740f554edeceee3cd04ba3.png)
Ещё одно преимущество веб-разработки на Appsmith — запуск изменения прямо с клавиатуры, например с помощью кнопки Enter. Это удобно и привычно. В Power Apps, чтобы обновить данные по новым параметрам, нужно нажать отдельную кнопку «Обновить».
Теперь, при выборе пункта из выпадающего фильтра, например «Сообщество», больше не нужно нажимать кнопку для обновления данных — фильтр автоматически применяется к таблице.
![Было Было](https://habrastorage.org/getpro/habr/upload_files/702/73f/04f/70273f04fd74f28fdbdc0badf76a3236.jpg)
![Стало Стало](https://habrastorage.org/getpro/habr/upload_files/ae2/cc9/72c/ae2cc972c2b930d2b9e2769254de0367.jpg)
Ещё один приятный момент в работе с Appsmith: не нужно использовать офсетное разбиение данных для постраничного вывода. Встроенный стандартный виджет делает это сам, что значительно упрощает логику запросов к базе данных. Это также дает большую гибкость при настройке отображения данных в таблице.
Кроме того, не нужно создавать отдельные кнопки для листания страниц: вся навигация по данным происходит автоматически внутри виджета. Это не только ускорило разработку, но и сделало интерфейс более удобным и интуитивно понятным.
Среда разработки Appsmith отличается простотой в понимании разделов и независимостью от сложной пакетной логики. Не нужно постоянно переходить между разными меню и подменю в поисках настроек, как это часто бывает в других no-code решениях, где требуется ставить множество галочек и кнопок. В таких средах работа не всегда интуитивно понятная, а если пропустить какой-то важный шаг, приложение просто не будет работать. Например, перед началом работы с Power Apps нужно сначала разобраться с запутанной логикой инструмента, прежде чем создавать приложение.
В Appsmith всё более структурировано и логично. Среда разработки состоит из нескольких основных разделов: Settings для настройки и администрирования рабочего пространства (Workspace), Data для настройки подключений к системам внутри приложения, Editor для создания и описания запросов (Queries), управления объектами в разделе JS Objects и разработки пользовательского интерфейса в разделе UI.
Примером может служить процесс создания кнопок-индикаторов.
![](https://habrastorage.org/getpro/habr/upload_files/a03/46e/0de/a0346e0de85b6ddfcfd65f2a4639854b.png)
В Appsmith для этого пишется код, тогда как в Power Apps приходится переключаться между режимами индикаторов (настройки применяются только в выбранном состоянии). Это добавляет сложности и затрудняет настройку.
![](https://habrastorage.org/getpro/habr/upload_files/028/b29/1a1/028b291a187a77a35a119667b5922b85.png)
Благодаря простоте и интуитивно понятному интерфейсу, Appsmith легко освоить, в нём просто ориентироваться. Но, наверное, такая программа больше подойдет специалисту с опытом, который знает, чего хочет достичь, и может самостоятельно реализовать задуманное, чем тем, кто привык работать с готовыми шаблонами. Новичкам будет сложнее оценить преимущества программы и эффективно ее использовать.
Часто специалисты в области BI либо осваивают Python для работы с данными и файлами, либо не используют языки программирования вообще, ведь многие BI-платформы ориентированы на лёгкий вход и предлагают no-code-решения. Для таких пользователей пакетные продукты кажутся удобными и адаптированными для решения бизнес-задач, даже с учётом ограниченных возможностей. Эти программы предлагают достаточно функций, чтобы реализовать требования бизнеса и упростить процесс работы. Однако такие коммерческие продукты часто стремятся к изоляции, то есть требуют использования только компонентов своей экосистемы.
Они также предлагают расширение возможностей через собственные языки выражений, например, Power Fx в Power Apps. Это затрудняет перенос решений на другие платформы: каждый раз приходится изучать новый адаптированный язык.
Поэтому в своей практике мне не довелось полноценно использовать JavaScript. Но сейчас я понимаю, что мои опасения касательно перехода на low-code-платформу и неуверенность в изучении нового языка были неоправданны. Для начала работы в Appsmith хватило базовых знаний JavaScript, без углубленного понимания React или Angular. Appsmith позволяет не заботиться о том, чтобы вручную прописывать стили или размеры объектов. Всё, что нужно, — это описать логику работы объектов и операции с ними.
Если кратко
Работа с BI-инструментами и переход на платформу Appsmith позволили мне не только накопить ценный опыт в разработке приложений, но и оценить преимущества Appsmith: гибкость, и независимость, интуитивно понятный интерфейс, быструю интеграцию, поддержку кастомных виджетов и контроль версий через Git.
Appsmith привлекает быстрой настройкой интерфейсов, интеграцией с оркестраторами, (например Apache Airflow), улучшенным мониторингом, простотой переноса приложений через JSON и отсутствием проблем с тайм-аутами запросов. Однако программа больше ориентирована на функциональность, чем на визуальные изыски, а это может стать ограничением для пользователей, ожидающих более эстетичного интерфейса. Appsmith позволяет избежать сложной логики, типичной для других no-code-платформ. Для работы достаточно базовых знаний программирования на JavaScript, чтобы создавать мощные приложения без глубокого изучения сложных фреймворков.