The Head
64 subscribers
290 photos
9 videos
9 links
Публичный чатик — https://t.me/+PaqLdFsiU30zZDQy

Мы придумываем идеи, разрабатываем дизайн для социальных сервисов, интернет-магазинов и приложений. Мы создаем и улучшаем технологии. Наши проекты всегда находят отклик в сердцах людей.
Download Telegram
Рисуем домики
Финтех — он такой…
3🫡3🐳1👀1
Есть у нас один проект, переданный нам уже готовым для развития и поддержки. Делала его когда-то одна именитая компания из Екатеринбурга.

Мы сразу заподозрили неладное: небольшой региональный магазин построен с попытками построить архитектуру, присущую большим сервисам и командам: здесь можно найти и несколько админок на разных стеках — для работы всего двух человек (и обе приходится использовать), и кластер k8s, и балансировщик нагрузки (traefik), стоящий перед единственным nginx, и аналог s3 для хранения штук 5 PDF и сотни jpeg'ов. Конечно, все это работает на единственном недорогом виртуальном сервере — даже не физическом — с уже давно неподдерживаемой ОС и никогда не обновлявшимися пакетами.

О документации ко всему безобразию, конечно, и говорить не приходится — ни единой строчки.

На днях к нам приходит запрос: клиенты не могут просматривать некоторые свои заказы в личном кабинете и не могут оплачивать их.

Начинаем разбираться. Небольшие заказы можно просмотреть и оплатить без каких-либо проблем. Но если в заказе более 100 позиций, сервер долго обрабатывает запрос на получение. данных заказа и возвращает 500–504 ошибки.

Первая мысль разработчиков: классическая N+1 при работе с БД через ORM (ошибки есть только при наличии 100+ наименований в заказе).
А оплата сама по себе может быть недоступна из-за ограничений фискальных накопителей — длина документа сильно ограничена, и чтобы уложиться в нее в драйверах и API часто устанавливают ограничение в 99 наименований для чека и транзакции в платежном сервисе).
Начали исследовать выборки из БД и ответы бекенда на разные запросы. И вот, что увидели (см. скриншоты).

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

Конечно, выбрать из БД такой массив данных занимает немало времени. Да и объем данных был, мягко говоря, большим.

Мы убрали выборку лишних данных, стали возвращать только товарные позциии — ровно то, что требовалось показать в личном кабинете. И тут же все стало работать как часы.

Тем не менее, оплатить такой заказ все еще было нельзя. Здесь уже сработало то самое ограничение на 99 товаров в заказе.
🔥4😁31
Признание Ларе от Саши
❤‍🔥81
А вы все о деньгах, да о деньгах…
🔥5
Перерыв на покушать
🔥1🌭1
Сегодня мы вам предлагаем поучаствовать в нашей игре «Угадай мелодию по коду».

Правила очень просты: на картинках в посте написан код - это зашифрованные песни. Для ответа вам нужно написать в личные сообщения @a_na_naska номер карточки с кодом, название трека и исполнителя. Первые трое правильно узнавших все треки получат памятный приз. Ответы принимаются до воскресенья (включительно).
Более подробный код представлен по ссылке: https://contest.thehead.ru/

Всем желаем успехов!
🔥5🍓1
В эту пятницу, вечером после работы наши ребята собрались поиграть в настолки. Они были детективами и разгадывали преступление, учились понимать друг друга через ассоциации и просто весело проводили время. Надеемся, что в следующий раз к нам присоединятся и другие ребята.
8
Сегодня подведем итоги нашей недавней игры «Угадай мелодию по коду».

Правильные ответы:
1. DEAD BLOND — Пионерка
2. The Subways — Rock & Roll Queen
3. Charlie Puth — Attention
4. Владимир Клявин — Планы
5. Daft Punk — Technologic
6. Raffaella Carra — Pedro
7. Post Malone, 21 Savage — Rockstar

🎁Двое первых, узнавших все песни, получат памятные призы (для этого мы свяжемся с ними). Всех будем ждать в нашем следующем конкурсе.
🤯3🍓1🤪1
Команда price-port.ru
👍54🍓1