История создания Falcon

В этом небольшом эссе я расскажу как мы пришли к идее создания Falcon Space.

Заказная разработка -
долго, дорого, ошибки

Изначально мы делали проекты на заказную разработку по полному стеку разработки. Т.е. нужно написать ТЗ с макетами, сверстать внешний вид, реализовать базу данных, затем написать backed код, далее frontend код, все это необходимо интегрировать между собой. Это довольно долго, дорого, утомительно. При внедрении в эксплуатацию часто вылезала куча ошибок.

Готовый продукт - нет гибкости

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

Проблемы fullstack разработки

Работа по полному стеку разработки имела еще 2 негативных фактора.

Сложно создать программиста

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

Легко создать утечку
памяти и процессора

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

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

Нет готовых решений - нет роста

Рождение идеи

Разработка - в кабинете,
бизнес-логика - в SQL

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

Скорость решает

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

Наконец пришла идея.

Что, если разработчик может полностью работать из кабинета управления? Что, если он сможет не только менять контент,но и разрабатывать возможности системы на базе SQL без внешних инструментов типа Visual Studio и без компиляции?

Почему SQL?

SQL - это круто!

В качестве основы будущей системы мы решили взять язык SQL. Т.е. вся бизнес-логика должна реализовываться на SQL языке. Это хорошо по следующим причинам:

Многие знают SQL SQL позволяет эффективно извлекать данные? а скорость - это приоритет Не требуется перекомпиляция проекта Можно добиться того, что разработчик может знать только SQL для поддержания и развития проекта. Другие технологии ему просто не нужны для развития системы. Правильный чистый SQL - быстрая система. Нам не надо использовать никакие прослойки типа Entity Framework, LINQ, которые создают плохой SQL код.

Клиент сам руками
ничего не делает

Конечно можно возразить - не каждый клиент сможет делать что-то на SQL. Но это и не требуется от клиента - у него есть привычный кабинет с его типовыми простыми операциями. По опыту, все что касается изменения в системе лучше делать специалистам. Да и клиенту это проще - не вникать в технические детали работы системы.

95% разработки - типовая рутина

В 95% времени разработчик не создает ничего нового. Он также выводит некие формы, таблицы, реализует работу кнопок. Мы сделали так, что ему необходимо задумываться только о ключевом - структуре данных и бизнес-логике. Все остальное система берет на себя, что значительно уменьшает время разработки и риск внесения ошибки.

Ускорение создания
типовых элементов - в 7 раз!

Мы определили базовые потребности в разработке, нашли возможных изменений в поведении компонента и реализовали это! В результате время разработки некой таблицы или формы сократилось более чем в 5-7 раз! Если раньше реализация некой таблицы могло занять 5-7 часов, то сейчас ее можно сделать менее чем 1,5 часа.

Самостоятельная разработка

Более продвинутому заказчику, который знает и любит язык SQL, мы даем возможность самому определять, как развивать систему под себя. Есть документация на все компоненты и систему в целом. Если есть желание активно участвовать в развитии своей системы, вы можете это делать - нужно знать только SQL и щепотку базовых знаний по верстке - азы Bootstrap 4.

Об универсализме

Универсальная база - медленно,
сложно сопровождать, ошибки

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

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

И второе - это скорость обработки данных. Универсальная структура усложняет применение техник оптимизации (индексы, ограничения по типам и т.д.). Если это работает медленно - можно считать, что это не работает.

За все надо платить

Универсальное решение - сложное решение и возможные проблемы оптимизации

В целом - что мы сейчас имеем

1. Скорость разработки критически возросла за счет использования типовых компонентов и готовых подсистем (множество связанных компонентов с готовым SQL). 2. Для ведения проекта не нужно держать команду в 5-10 человек. 2 человека на проекте вполне справятся с созданием больших систем. 3. Уменьшились требования к компетенциям. По сути знать надо только SQL и фреймворк верстки Bootstrap 4. 4. Меньше времени тратится на отладку. Элементы ядра улучшаются с каждым проектом, а также меньше точек входа для возможных проблем в коде. 5. Создаются новые готовые подсистемы и накапливается кодовая sql база в рамках готовых решений.

А что насчет кастомизации и развития?

Первый уровень. Основное развитие системы делается на SQL. Вы можете прописать практически любую бизнес-логику, а также создать любую таблицу, форму или панель показателей.

Второй уровень. Использование JS и CSS. Мы сразу заложили возможность кастомизации в системе за счет придания дополнительной динамики страницам через JavaScript.

Третий уровень. Для сложных нетиповых случаев имеется возможность создания дополнительных модулей - классическая заказная разработка по всему стеку.

Интегация в внешним миром

Создание любого API в виде
XML/JSON HTTPS на SQL

Мы реализовали систему API так, что вы можете управлять ею через SQL. Вы создаете новые методы API и реализуете бизнес-логику на SQL для этих методов и возвращаете результат в виде JSON или XML.

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

Наши планы

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

Типовые решения
ускоряют проект

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

И третье - интеграция с важнейшими внешними системами: платежные шлюзы, геолокационные сервисы, учетные, логистические системы и т.д.

На этом пока все. Если вас заинтересовал наш подход к разработке, либо у вас есть вопросы по системе, то пожалуйста пишите на info@web-automation.ru

Есть идея проекта. Что с ней делать?
Заполните форму по ссылке для начала проработки концепции вашего проекта. На выходе вы получите структурированное описание основных аспектов вашего проекта.
Title

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.