Как мы пришли к созданию платформы - узкий стек, снижение издержек, стандартизация (SQL Driven подход)
История создания Falcon - основные предпосылки создания платформы бизнес-приложений
В этой статье мы поговорим о возникновении идеи создать платформу с готовыми решениями, которые можно дорабатывать и адаптировать под себя. Мы поговорим о создании нашего продукта - Falcon Space.
Заказная разработка -
долго, дорого, ошибки
Изначально мы делали проекты на заказную разработку по полному стеку разработки. Т.е. нужно написать ТЗ с макетами, сверстать внешний вид, реализовать базу данных, затем написать backed код, далее frontend код, все это необходимо интегрировать между собой. Это довольно долго, дорого, утомительно. При внедрении в эксплуатацию часто вылезала куча ошибок.
Готовый продукт - нет гибкости
Конечно, мы рассматривали вариант использования готовых коробочных решений, но в большинстве случаев заказчику нужна кастомизация и гибкость, а готовые решения редко дают такую возможность. Поэтому мы брали за основу свою заготовку проекта с некоторыми готовыми модулями и создавали на ее базе проект.
Проблемы fullstack разработки
Работа по полному стеку разработки имела еще 2 негативных фактора.
Сложно создать программиста
Во-первых, очень сложно было вырастить fullstack программиста. Необходимо знать сразу множество технологий и требуется время, чтобы стать хорошим fullstack разработчиком. Для этой цели мы организовали бесплатный курс по нашему стеку и, таким образом, обучали людей + присматривались к ним для поиска подходящих кандидатов.
Легко создать утечку
памяти и процессора
Второй неприятный момент - очень легко создать проблемный код, когда работа идет по всему стеку разработки. Это могут быть проблемы оптимизации, либо неявная ошибка бизнес-логики, либо отсутствие проверки прав. Необходимо постоянно следить, чтобы никто ничего не упустил по коду.
Также меня тревожило то, что не получается копить кодовую базу. Да, появлялись компоненты общего назначения. Но при этом часто возникала ситуация, что на проектах делается некий типовой функционал, который уже был реализован в другом проекте. Но при этом его было не так просто извлечь оттуда из-за высокой связности с проектом.
Нет готовых решений - нет роста
Рождение идеи
Разработка - в кабинете,
бизнес-логика - в SQL
Все эти факторы подтолкнули нас искать новые пути развития нашей системы. Постепенно сформировалась идея - сделать решение, которое может собираться из блоков, при этом требуется минимум знания технологий. Обязательно должна быть возможность бесконечного наращивания функций системы.
Скорость решает
При этом очень желательно, чтобы возможные ошибки и последующая отладка свелись к минимуму, хотелось максимально упростить разработку для минимизации ошибок. Ключевое требование - скорость. Тугодумная система вызывает отторжение у пользователя. Скорость вывода страниц, скорость разработки, скорость освоения функционала.
Наконец пришла идея.
Что, если разработчик может полностью работать из кабинета управления? Что, если он сможет не только менять контент,но и разрабатывать возможности системы на базе SQL без внешних инструментов типа Visual Studio и без компиляции?
Почему SQL?
SQL - это круто!
В качестве основы будущей системы мы решили взять язык SQL. Т.е. вся бизнес-логика должна реализовываться на SQL языке. Это хорошо по следующим причинам:
Клиент сам руками
ничего не делает
Конечно можно возразить - не каждый клиент сможет делать что-то на SQL. Но это и не требуется от клиента - у него есть привычный кабинет с его типовыми простыми операциями. По опыту, все что касается изменения в системе лучше делать специалистам. Да и клиенту это проще - не вникать в технические детали работы системы.
95% разработки - типовая рутина
В 95% времени разработчик не создает ничего нового. Он также выводит некие формы, таблицы, реализует работу кнопок. Мы сделали так, что ему необходимо задумываться только о ключевом - структуре данных и бизнес-логике. Все остальное система берет на себя, что значительно уменьшает время разработки и риск внесения ошибки.
Ускорение создания
типовых элементов - в 7 раз!
Мы определили базовые потребности в разработке, нашли возможные изменения в поведении компонента и реализовали это! В результате время разработки некой таблицы или формы сократилось более чем в 5-7 раз! Если раньше реализация некой таблицы могло занять 5-7 часов, то сейчас ее можно сделать менее чем 1,5 часа.
Самостоятельная разработка
Более продвинутому заказчику, который знает и любит язык SQL, мы даем возможность самому определять, как развивать систему под себя. Есть документация на все компоненты и систему в целом. Если есть желание активно участвовать в развитии своей системы, вы можете это делать - нужно знать только SQL и щепотку базовых знаний по верстке - азы Bootstrap 4.
Об универсализме
Универсальная база - медленно,
сложно сопровождать, ошибки
Крайне важный момент - мы не используем универсальную базу. Т.к. рано или поздно это сказывается на производительности, на удобстве и скорости разработки, а сложность приводит в итоге к ошибкам
Идея универсальной структуры базы очень притягательна тем, что она неизменна, и не надо писать код под конкретный проект. Но при этом этот "готовый" код настолько сложен для сопровождения, что влезать в него подобно проникновению в электрическую будку. Обычно это очень сложный, ошибкоемкий код, которого все сторонятся. Мы за то, чтобы код был максимально простым и легко меняемым под возникающие требования проекта. И поэтому база в проекте должна быть максимально адаптирована.
И второе - это скорость обработки данных. Универсальная структура усложняет применение техник оптимизации (индексы, ограничения по типам и т.д.). Если это работает медленно, можно считать, что это не работает.
За все надо платить
Универсальное решение - сложное решение и возможные проблемы оптимизации
В целом - что мы сейчас имеем
А что насчет кастомизации и развития?
Первый уровень. Основное развитие системы делается на SQL. Вы можете прописать практически любую бизнес-логику, а также создать любую таблицу, форму или панель показателей.
Второй уровень. Использование JS и CSS. Мы сразу заложили возможность кастомизации в системе за счет придания дополнительной динамики страницам через JavaScript.
Третий уровень. Для сложных нетиповых случаев имеется возможность создания дополнительных модулей - классическая заказная разработка по всему стеку.
Интеграция в внешним миром
Создание любого API в виде
XML/JSON HTTPS на SQL
Мы реализовали систему API так, что вы можете управлять ею через SQL. Вы создаете новые методы API и реализуете бизнес-логику на SQL для этих методов и возвращаете результат в виде JSON или XML.
Если требуется интеграция с нетиповой внешней системой, например, обращение к внешней веб-службе, то разрабатывается дополнительный модуль под эти потребности проекта на заказ.
Наши планы
Наш главный приоритет - сделать процесс разработки в системе максимально помехозащищенным, чтобы минимизировать риски внесения ошибок в код. Для этого мы вводим сниппеты разметки, типовые блоки и проверки корректности данных.
Типовые решения
ускоряют проект
Второе важное направление - создание типовых решений. По сути, типовое решение - это большой кусок SQL кода, который реализует бизнес-логику целой подсистемы проекта в виде связанных компонентов и страниц.
И третье - интеграция с важнейшими внешними системами: платежные шлюзы, геолокационные сервисы, учетные, логистические системы и т.д.
На этом пока все. Если вас заинтересовал наш подход к разработке, либо у вас есть вопросы по системе, то пожалуйста пишите в чат справа внизу.
Документация по веб-платформе
Первые шаги разработчика в платформе
Falcon Space как веб-оболочка для SQL Server
История создания продукта и переход от проектов к продуктам
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта