Когда мы говорим с владельцами бизнеса о разработке, я слышу: «Мне нужен программист, который знает PHP, Java, базы данных, фронтенд, сервер — всё». Такой full-stack специалист стоит 200-300 тысяч рублей в месяц. И через год вы зависите от него, потому что никто другой не разберётся в его коде.
Но есть альтернатива — хранимые процедуры SQL. Это способ писать бизнес-логику прямо в базе данных. В Falcon Space мы используем именно его. Результат: вам не нужен дорогой full-stack. Достаточно одного SQL-специалиста (или даже обученного менеджера). Код проще, быстрее и надёжнее.
Расскажу, что такое хранимые процедуры, почему они выгоднее и как с ними работает Falcon Space.
Хранимая процедура — это программа, которая живёт внутри базы данных. Вы пишете на языке SQL последовательность действий: получить данные из таблицы, посчитать сумму, обновить статус, отправить уведомление. И даёте процедуре имя. Потом можно вызывать её по имени, передавая параметры.
Пример: процедура «сменить статус заказа». На вход передаёте номер заказа и новый статус. Внутри она выполняет UPDATE. Всё. Никаких контроллеров, моделей, репозиториев. Одна простая сущность.
В традиционной веб-разработке ту же логику пришлось бы писать на PHP или Java: создать контроллер, модель, сервис, написать миграцию, прикрутить роутинг. Это 10-20 файлов. Ошибка может быть где угодно. В хранимой процедуре — один файл, 5-10 строк.
1. Скорость разработки в 3-5 раз выше. Не нужно писать обвязку. Создал процедуру — и она готова к использованию. В Falcon Space вы пишете процедуру прямо в кабинете разработчика, нажимаете «Сохранить» — и она сразу работает. Никакого деплоя.
2. Дешевле специалисты. SQL-разработчик стоит 100-150 тыс. руб/мес. Full-stack — 200-300 тыс. руб/мес. Разница — минимум 100 тыс. руб/мес. За год — 1,2 млн рублей экономии на зарплате одного человека.
3. Проще найти замену. SQL — это стандарт. Любой SQL-специалист, даже не знакомый с вашим проектом, прочитает процедуру и поймёт, что она делает. В full-stack проекте код на Laravel или Symfony может быть уникальным, разобраться в нём новому человеку — недели.
4. Меньше ошибок. Код на SQL короче. Короткий код — меньше мест для багов. Кроме того, SQL Server оптимизирует выполнение запроса, проверяет синтаксис. В PHP же ошибку можно обнаружить только во время выполнения.
5. Высокая производительность. Процедура выполняется внутри базы данных, рядом с данными. Не нужно передавать данные на сервер приложений, обрабатывать их там и возвращать обратно. Для больших объёмов данных (миллионы строк) разница в скорости может быть в 10-100 раз.
6. Безопасность. Хранимые процедуры с параметрами исключают SQL-инъекции. Параметры строго типизированы, их нельзя подменить кодом. В PHP же многие начинающие разработчики пишут уязвимый код.
В платформе ваша задача — написать процедуры для трёх типов действий:
Процедуры в Falcon Space получают параметр @username — логин текущего пользователя. Это позволяет фильтровать данные (менеджер видит свои заказы, директор — все).
Пример процедуры для списка заказов менеджера:
CREATE PROCEDURE [app].[get_my_orders]
@username nvarchar(100)
AS
BEGIN
SELECT order_id, client_name, total_sum, status
FROM orders
WHERE manager_username = @username
ORDER BY created_at DESC;
END
Всё. Остальное — таблица на странице, кнопка экспорта в Excel, фильтры — платформа делает автоматически.
Вы можете написать сотню таких процедур. Это вся бизнес-логика вашего приложения. При этом у вас нет тысяч строк кода на PHP, которые нужно поддерживать.
В кейсе с CRM для нефтетрейдера (описан ранее) весь функционал (4 роли, отчёты, интеграция с эквайрингом) был реализован на 47 хранимых процедурах. Средний размер процедуры — 20 строк. Общий объём бизнес-логики — около 1000 строк SQL.
Если бы мы писали ту же логику на Java, потребовалось бы 10-15 тысяч строк кода (контроллеры, сервисы, репозитории). Поддерживать такой код в 10 раз дороже.
Клиент нанял одного SQL-специалиста на 0,5 ставки (60 тыс. руб/мес) для поддержки. При классической разработке ему пришлось бы держать full-stack программиста за 200 тыс. руб/мес. Экономия — 140 тыс. руб/мес, или 1,68 млн руб в год.
При этом скорость внесения изменений — 5-10 минут (изменить процедуру). При классической разработке — часы или дни (изменить код, провести компиляцию, задеплоить).
Честно: не всё можно и нужно писать на SQL. Вот случаи, где лучше использовать обычный язык:
Но для 95% бизнес-задач (учёт заказов, расчёт скидок, отчёты, статусы, логика согласования) SQL — идеальный инструмент.
Если вы хотите взять под контроль разработку, не нанимая нас на каждый чих:
Мы сами так обучали менеджеров в нашей компании. Теперь они пишут отчёты и добавляют мелкие поля в формы без нашего участия.
Хранимые процедуры — это не страшно. Это просто. И это экономит миллионы. Попробуйте — и вы уже не захотите возвращаться к классической разработке.