В один холодный ноябрьский день я осознал, что нормальные программисты из FAANG гребут бабло лопатой, а я получаю всего 300 тысяч. Я прошел определенный путь, побывал на тренингах по развитию банковского счета, но ничего не помогало. И вот я наткнулся на ютуб-канал дяди Скруджа. Дядя Скрудж открыл мне истину: чтобы зарабатывать не 300 тысяч, а 900 надо сделать 2 вещи
-
Устроиться на 3 работы
-
Чтобы успевать, нужно делать CRUD-бэкенды
Мой мир перевернулся с ног на голову! Также Дядя Скрудж сказал, что для любой доменной сущности достаточно 4 операции:
-
Create
-
Read
-
Update
-
Delete
Успеваю я за счет того, что этот подход полностью позволяет мне не думать – я просто реализую 4 операции, а бизнес-логику пишет фронтендер! Менеджерам я нравлюсь, потому что я всегда выполняю реализацию четырех операций в срок. Освободившееся время я направил на изучение инвестиций – “чем больше денег, тем больше их съедает инфляция”. Одним из советов было покупать акции тех компаний, о которых больше знаешь. На одной из работ я делал проект для КСО “Четверочки” и знал – CRUD-бэкенд не подведет и все вложил туда. Так три месяца я прожил в раю. Почему всего три?
Началась разработка фронтендов
Мне на почту пришло письмо от фронтендерки:
Привет, я Алиса! Сергей, менеджер, сказал что ты разрабатываешь новый бэкенд к кассовым терминалам Четверочки, которые не будут перезагружаться на полчаса в полночь. Открыла swagger, сравниваю с ТЗ и не вижу бизнес логики на эндпоинтах, только какие-то четыре странные операции продублированные 50 раз…
Я предложил созвониться и мы два часа беседовали, обсуждали философию CRUD-операций. Я объяснил ей, что задача бэкенда дать слой доступа к бизнес-сущностям и CRUD-операции полностью его обеспечивают. А если ей нужно оперировать больше чем одной сущностью, то эти четыре операции надо вызывать по очереди или в циклах. Таким образом, всё что нужно у неё есть и вся бизнес логика может быть написана на фронтенде. Так как архитектора у нас нет и , фактически, главный сначала Сергей, а потом я, то он был просто рад что мы с Алисой пришли к согласию и она приступает к работе.
Так как у Алисы было профильное образование, она задавала странные вопросы, но я не придал им значения и посоветовал ей забыть всё, чему её учили в университете!

В итоге ей понравилось, что она сама всё контролирует на фронтенде. Ведь на TypeScript так удобно писать асинхронные бизнес-операции, не то что на устаревшей Java.
Началась продуктовая эксплуатация
Однажды утро началось с отскока графиков Четверочки. Я был разозлен так как причин падать акциям не было. Не иначе – инсайдеры разоряют средний класс, подумал я. Вскоре позвонил Сергей и сказал чтобы я срочно подключился на встречу с директором департамента КСО Четверочки. Он рассказал, что внешние аудиторы PWC расследовали хронологию инцидента :
14 февраля 00:00. Происходит деплоймент нового ПО в сети Четверочки.
14 февраля 00:13. Первые жалобы.
Клиент пытался купить 20 валентинок по 50 рублей и пачку контрацептивов за 200. Когда клиент провел оплату, КСО показала недостаток средств, а на карте осталось 0 рублей. Со слов клиента, на счету у него было 1000 рублей и он неправильно рассчитал количество валентинок. Несмотря на то что чека не было, служба охраны вошла в положение: взяли в залог паспорт и отпустили с валентинками.
14 февраля 01:27. Перебои с электричеством в датацентрах Четверочки.
Автоматика произвела переход на резервные линии питания – прямое подключение к Калининской АЭС.
14 февраля 04:54. Реактор ВВЭР-1000 уходит в защиту, происходят аварийные отключения абонентов в московской области.
14 февраля 09:40. Директору департамента КСО звонят из Минэнерго и предлагают включить Первый канал.
Выводы:
-
Действительно, CRUD-операции обладают абсолютной композицией
-
Однако, композиция CRUD-операций бэкенда не обладает транзакционностью by-default
-
Однако, композиция CRUD-операций гарантирует лишь низкую производительность (N+1 problem)
Эта статья была нужна чтобы всем всё стало понятно про CRUD-операции. В следующий раз мы ответим на вопрос “Если не CRUD, то что?”.
N.B: Все события и персонажи вымышлены, любые совпадения случайны.
P.S. Поздравляем всех айтишников с прекрасным праздником дня святого Валентина. Вы можете поздравить своего коллегу, отправив ему эту валентинку ;-)
Автор: goodfup