Как No-code ускоряет разработку продукта

Привет! Я программист. Я люблю писать код и хочу рассказать, как подход No-code позволяет мне делать это более качественно и эффективно.

Что такое No-code

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

Прелесть нового подхода в том, что он сочетается со старым, их можно легко комбинировать, получая хорошие результаты за короткое время. Это я и хочу продемонстрировать.

Какая у меня была проблема

Я разрабатываю конструктор сайтов Creatium, и у нас есть бесплатный тестовый период, который, к сожалению, привлекает мошенников.

Плохие люди регистрируются, создают сайты и размещают на них вредоносные скрипты, либо выдают себя за других и обманным путем получают данные клиента.

Далее, плохие люди используют ссылку на наш тестовый поддомен (*.creatium.site) с хорошей репутацией и таким образом подставляют нас.

Несколько раз нас блокировали VK и Google, показывая посетителям тестовых сайтов такое сообщение:

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

Как мы решали проблему раньше

Подход к решению проблемы простой — нужно обнаруживать и блокировать зловредные сайты до того, как их обнаружит Google.

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

Примеры фраз: розыгрыш, viagra, location.href, пароль и т.д.

Первая версия системы проверки сайтов разрабатывалась две недели, и у нее были существенные недостатки:

  1. Отсутствие аналитики. За несколько лет мы собрали около 6 тысяч подозрительных фраз, многие из которых в последствии ни разу не приводили к обнаружению новых зловредных сайтов. У нас не было понимания, какие фразы эффективны, а какие просто тратили наше время впустую.
  2. Повторные срабатывания. Если спустя сутки повторно опубликовать страницу, в Slack-канал придет еще одно уведомление, хотя эту страницу мы уже проверяли.
  3. Слабая проверка. Мы отслеживали только фразы, часто пропускали перенаправления на другие сайты и подключение подозрительных скриптов.

В один момент стало понятно, что нужно делать новую систему, исправляющую эти недостатки.

Новый подход к решению задач

Список подозритльных фраз из админки перенесли в «Google Таблицы», добавили колонки для отслеживания эффективности. Сразу стало удобнее работать.

Так было
А так стало

Переделали способ проверки страниц. Теперь они открываются в виртуальном браузере, в котором отслеживаются все внешние скрипты, перенаправления, фреймы и ссылки. Эта часть сделана кодом, поскольку No-code такого еще не умеет. Все, что кажется подозрительным, — отправляется в канал Slack.

Обратите внимание на кнопки снизу

Все, что происходит дальше — чистый No-code.

Обе кнопки запускают сценарий в Integromat через обычный вебхук.

Сценарий в Integromat

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

Кнопка «Заблокировано или исправлено» запускает другую ветку сценария, которая увеличивает счетчик блокировок в «Google Таблицах», чтобы мы отслеживали эффективность.

Помимо этого обе кнопки удаляют уведомление в Slack, чтобы с каналом можно было работать по методу Inbox Zero.

Экономия времени и денег

Если бы мы все это программировали, ушло бы недели 2. А так я в одиночку потратил 3 дня.

Мы сэкономили время на создании интерфейсов — для этого используем Slack-канал и «Google Таблицы». Сэкономили время на написании интеграций между отдельными частями системы — для этого используем Integromat. Правда, теперь мы платим за него 30 долларов в месяц.

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

Будущее за No-code?

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

No-code-разработка дешевле, занимает меньше времени, но имеет множество ограничений.

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

0
89 комментариев
Написать комментарий...
Max B

А потом, когда надоест в слаках и гуглодоксах мышкой тыкать, для No-Code придумают языки программирования: императивный, декларативный, функциональный, а затем еще несколько мультипарадигменных )))

Ответить
Развернуть ветку
Николай

Миллениалы изобрели Ансибл с Терраформом?

Ответить
Развернуть ветку
Max B

Ну нет, ansible - это не No-code, там, наоборот, "infrastructure as a code" ))
У меня, кстати, возникла мысль, что задача автора, наверное, может быть решена инструментами тестирования и CI/CD. Например, инициация проверки (тот же веб-хук или еще что-то) -> Selenium-тесты -> при непрохождении, допустим, инцидент (issue) в GitLab... Далее обработка инцидента человеком и управляющее войздействие по результатам обработки.
Правда, тоже совсем не No-code получается )

Ответить
Развернуть ветку
Николай

Я с намёком на то, что любой no-code это штука очень ограниченная, так как рано или поздно упрётся в развесистые пайплайны, которые проще и удобнее декларативно описывать ямлами. По сабжу - да, действительно, задачу можно было бы решить при помощи скрипта на Пайтоне, который периодически запускается в том же Gitlab CI, гоняет новые страницы на соответствие стоп-словам из словаря и кидает вебхук в Слак при наличии совпадения. Насколько это было бы проще, чем предложенное решение - трудно сказать. Особенно, без понимания, кто именно будет наполнять словарь со стоп-словами и какими этот кто-то обладает навыками

Ответить
Развернуть ветку
Max B

Это верно. Я тоже имел в виду, что есть два движения: одно - "не хочу программировать, дайте мне кнопку", а второе "ну и как на эту вашу кнопку нажать программно... а через раз... а по условию" ) Они все время сосуществуют.
На мой взгляд No-code - это слишком широкое понятие, под которым непонятно что лежит. Программист, подключающий и использующий библиотеку в отношении нее No-code? Использование подчас сводится всего лишь к одной аннотации (Spring, Lombok etc.)
Впрочем, среди относительно чистых No-code решений на ум сразу приходит 1С. В ней действительно можно соорудить развесистую учетную систему с типовыми или тривиальными процессами практически без программирования. И ее даже можно будет использовать. Но за это ее очень трудно будет развивать и делать удобной ))

Ответить
Развернуть ветку
Николай

Хороший пример no-code решения это система эмуляции виртуальных инструментов LabView от National Instruments. Вот там очень прикольно реализовано, кладёшь блоки на рабочую область, соединяешь проводами и выводишь нужную информацию на виртуальную панель управления инструментом. Но опять же, штука узкоспециализированная и там при желании можно добавить блок кода, соединив его проводами с другими блоками и присвоив имена переменных получившимся вводам и выводам

Ответить
Развернуть ветку
Pavel Ivanov

Парни, я прочитал вашу ветку полностью. Так вот... Вам не надо в No-Code =D

Ответить
Развернуть ветку
Gesund Meister

LabView - это не no code точно. Так как там существуют лупы, ивенты, параллелизм и все еще много всего от языков программирования.
Если вы использовали это один раз для автоматизации мультиметра - то это скорей пример простого кода. Хотя на питоне это можно было бы также уместить в пару строк.

Ответить
Развернуть ветку
Вячеслав Гримальский
Автор

В интегромате тоже есть циклы. А вебхуки это такой аналог ивентов, своеобразный. Но конечно, это еще не программирование.

Ответить
Развернуть ветку
Николай

В LabView можно создать полноценный виртуальный инструмент, не написав ни строчки кода.

Ответить
Развернуть ветку
Gesund Meister

"In computing, a visual programming language (VPL) is any programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually."
So there is a difference between text & visual programming languages, which you do not understand.

Ответить
Развернуть ветку
dss

У вас нет ни малейшего представления об 1С

Ответить
Развернуть ветку
86 комментариев
Раскрывать всегда