Бэкенд sCRUDge McDuck’а

в 4:45, , рубрики: crud, CRUD RESTful API, crud операции, веб-приложения, Программирование, финансы в IT

В один холодный ноябрьский день я осознал, что нормальные программисты из FAANG гребут бабло лопатой, а я получаю всего 300 тысяч. Я прошел определенный путь, побывал на тренингах по развитию банковского счета, но ничего не помогало. И вот я наткнулся на ютуб-канал дяди Скруджа. Дядя Скрудж открыл мне истину: чтобы зарабатывать не 300 тысяч, а 900 надо сделать 2 вещи

  1. Устроиться на 3 работы

  2. Чтобы успевать, нужно делать CRUD-бэкенды

Мой мир перевернулся с ног на голову! Также Дядя Скрудж сказал, что для любой доменной сущности достаточно 4 операции:

  • Create

  • Read

  • Update

  • Delete

Успеваю я за счет того, что этот подход полностью позволяет мне не думать – я просто реализую 4 операции, а бизнес-логику пишет фронтендер! Менеджерам я нравлюсь, потому что я всегда выполняю реализацию четырех операций в срок. Освободившееся время я направил на изучение инвестиций – “чем больше денег, тем больше их съедает инфляция”. Одним из советов было покупать акции тех компаний, о которых больше знаешь. На одной из работ я делал проект для КСО “Четверочки” и знал – CRUD-бэкенд не подведет и все вложил туда. Так три месяца я прожил в раю. Почему всего три?

Началась разработка фронтендов

Мне на почту пришло письмо от фронтендерки:

Привет, я Алиса! Сергей, менеджер, сказал что ты разрабатываешь новый бэкенд к кассовым терминалам Четверочки, которые не будут перезагружаться на полчаса в полночь. Открыла swagger, сравниваю с ТЗ и не вижу бизнес логики на эндпоинтах, только какие-то четыре странные операции продублированные 50 раз…

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

Так как у Алисы было профильное образование, она задавала странные вопросы, но я не придал им значения и посоветовал ей забыть всё, чему её учили в университете!

Бэкенд sCRUDge McDuck’а - 1

В итоге ей понравилось, что она сама всё контролирует на фронтенде. Ведь на 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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js