Проектирование микросервисов на Go: типичные сложности и лучшие практики

Баланс между производительностью, читаемостью и поддерживаемостью — ключевая задача при разработке микросервисов на Go. На практике всё сложнее из-за неочевидных факторов: от влияния частоты вызовов GC на время отклика до последствий избыточной вложенности в контрактах API. Если не учесть эти нюансы, даже грамотно спроектированный сервис может просаживаться по RPS (requests per second) — или его может быть сложно обновлять и дорабатывать. Меня зовут Артём Кущ. Я Go-разработчик в команде VK Видео. В статье поделюсь подходами к оптимизации микросервисов и расскажу, как балансировать между скоростью и простотой.

https://habr.com/ru/companies/vk/articles/1021702/

#go #highload #микросервисы #производительность #читаемость #поддерживаемость #оптимизация

Проектирование микросервисов на Go: типичные сложности и лучшие практики

Баланс между производительностью, читаемостью и поддерживаемостью — ключевая задача при разработке микросервисов на Go. На практике всё сложнее из-за неочевидных факторов: от влияния частоты вызовов...

Хабр

CUBA: почему она спасала мои хакатоны и убивала мои продакшн-проекты

Если вы хоть раз занимались корпоративной разработкой на Java, вы наверняка слышали про CUBA Platform . И нет — это не про Карибы. CUBA — это full-stack Java-фреймворк для быстрой разработки бизнес-приложений: CRM, документооборот, ERP-подобные системы, внутренние инструменты и всё то, что принято называть словом «enterprise». Я работал с ним на нескольких хакатонах и в паре реальных проектов. И у меня к нему сложные чувства — поэтому и пишу.

https://habr.com/ru/articles/1019864/

#CUBA_Platform #Java #Spring #backend #enterprise #MVP #архитектура #highload #CRUD #Vaadin

CUBA: почему она спасала мои хакатоны и убивала мои продакшн-проекты

Если вы хоть раз занимались корпоративной разработкой на Java, вы наверняка слышали про CUBA Platform . И нет — это не про Карибы. CUBA — это full-stack Java-фреймворк для быстрой разработки...

Хабр

Монолит с отчётами на 30 секунд: как я переписал архитектуру и что из этого вышло

Пришёл в проект, там легаси погоняет легаси. Спагетти такие что уже в рот лезут. Отчёты по филиалам открывались 30 секунд. Команда реально боялась нажать кнопку в рабочее время, а вдруг база ляжет. Это была система управления розничной сетью: несколько филиалов, сотни тысяч записей о заказах, ежедневные отчёты по выручке и остаткам. На бумаге ничего страшного. На практике монолит на Django где бизнес-логика размазана по контроллерам так, что поменяй что-то одно и сломается три другого. Первое, что я сделал: открыл EXPLAIN ANALYZE. Как отчёты ускорились в 20 раз

https://habr.com/ru/articles/1019516/

#django #postgresql #ddd #python #highload #оптимизация #explain_analyze #архитектура #n+1 #backend

Монолит с отчётами на 30 секунд: как я переписал архитектуру и что из этого вышло

Пришёл в проект, там легаси погоняет легаси. Спагетти такие что уже в рот лезут. Отчёты по филиалам открывались 30 секунд. Команда реально боялась нажать кнопку в рабочее время, а вдруг база ляжет....

Хабр

Как прошёл AntiDDoD Meetup Wildberries & Russ

Привет, Хабр! 26 марта прошёл AntiDDoS-митап Wildberries & Russ. Поговорили про перфоманс-тесты и почему они спасают от сюрпризов в продакшене, про мощную защиту без ущерба для скорости и удобства интерфейса (UX), про то, как VM-обфускация меняет правила игры.

https://habr.com/ru/companies/wildberries/articles/1018490/

#информационная_безопасность #antiddos #meetup #highload #тестирование

Как прошёл AntiDDoD Meetup Wildberries & Russ

Привет, Хабр! 26 марта прошёл AntiDDoS-митап Wildberries & Russ. Поговорили про перфоманс-тесты и почему они спасают от сюрпризов в продакшене, про мощную защиту без ущерба для скорости и удобства...

Хабр

Геораспределенное резервирование Postgres при помощи Debezium

Всем привет, меня зовут Николай Голубев, я — техлид из компании HFLabs. Эта статья написана по мотивам моего выступления на конференции

https://habr.com/ru/companies/oleg-bunin/articles/1001862/

#highload #PostgreSQL #базы_данных #высоконагруженные_системы #Debezium #хранение_данных #Kafka #релоцирование

Геораспределенное резервирование Postgres при помощи Debezium

Всем привет, меня зовут Николай Голубев, я — техлид из компании HFLabs. Эта статья написана по мотивам моего выступления на конференции Saint HighLoad++ . Мы с командой развиваем крупнейший в России...

Хабр

Как мы автоматизировали модерацию карточек товаров с помощью Computer Vision в Wildberries

Привет! Я Дмитрий Колесников, Team Lead DS-команды «Платформа модерации» в Wildberries & Russ. В этой статье по мотивам моего доклада на HighLoad расскажу, как у нас получилось превратить сотни Computer Vision моделей в единый масштабируемый пайплайн, который ежедневно обрабатывает 15 млн карточек товаров (50+ млн изображений и 500K видео).

https://habr.com/ru/companies/oleg-bunin/articles/992716/

#ml #machine_learning #data_science #cv #computer_vision #компьютерное_зрение #tritoninferenceserver #highload #wildberries #moderation

Как мы автоматизировали модерацию карточек товаров с помощью Computer Vision в Wildberries

Привет! Я Дмитрий Колесников, Team Lead DS-команды «Платформа модерации» в Wildberries & Russ. В этой статье по мотивам моего доклада на HighLoad расскажу, как у нас получилось превратить сотни...

Хабр

@visuallyperfect MAX как кейс: типичные баги, архитектурные провалы и почему это закономерно

Если отбросить маркетинг и смотреть на MAX как на инженерный продукт, то картина довольно прозрачная: перед нами типичный “быстро собранный мессенджер”, который пытаются масштабировать раньше, чем он стал устойчивым.

Разберём по слоям.

---

1. Доставка сообщений: не гарантия, а вероятность

Симптоматика знакома: — сообщения приходят пачками
— дублируются
— часть переписки просто исчезает

Это классический признак плохо настроенной eventual consistency. Судя по поведению, backend не обеспечивает строгую гарантию доставки (at-least-once / exactly-once), а плавает где-то между retry-логикой и race conditions.

Что это значит на практике: — повторная отправка → дубликаты
— сбой на клиенте → рассинхрон
— reconnect → “догоняющие” сообщения

Если система не умеет детерминированно разрешать конфликты — это не баг, это следствие архитектуры.

---

2. Push-уведомления: рассинхрон между слоями

Типичный кейс: — пуш пришёл → сообщения нет
— сообщение есть → пуша нет
— всё приходит через 10–15 минут

Основной подозреваемый — интеграция с Firebase Cloud Messaging.

Но проблема глубже: — нет единого источника истины (source of truth)
— пуш и сообщение живут в разных транзакционных контекстах
— отсутствует нормальная idempotency

В нормальной системе push — это просто триггер, а не отдельная сущность с собственной логикой.

---

3. Клиент: UI как узкое место

Фризы, дерганый скролл, зависания — это не “мелкие баги”, это сигнал:

— список сообщений плохо виртуализирован
— перерасчёт layout идёт на основном потоке
— есть memory leaks

Типичный стек-проблем: — RecyclerView захлёбывается на больших чатах
— битмапы не освобождаются
— кеширование сделано “на глаз”

В результате: UI начинает быть bottleneck быстрее, чем сеть.

---

4. Медиа: слабое место всех “быстрых” мессенджеров

Симптомы: — фото не уходят
— видео ломается
— загрузка зависает

Это почти всегда: — нестабильный upload (chunking / retry)
— проблемы на CDN
— отсутствие контроля целостности

Если нет нормального pipeline: encode → upload → verify → deliver
— медиа будет ломаться системно.

---

5. Сессии и авторизация

Самый раздражающий класс багов: — выкидывает из аккаунта
— слетает история
— “переавторизуйтесь”

Это почти гарантированно: — проблемы с токенами
— гонки при обновлении сессии
— рассинхрон между клиентом и сервером

Если auth не атомарен — вся система начинает вести себя хаотично.

---

6. Краши и память

Если приложение: — падает при отправке файлов
— жрёт RAM
— умирает в фоне

значит: — lifecycle не контролируется
— ресурсы не освобождаются
— тестирование на edge-кейсах отсутствует

Это не “надо допилить” — это долг на уровне архитектуры клиента.

---

7. Безопасность: отсутствие ясной модели

Ключевой вопрос — не “есть ли шифрование”, а: кто контролирует ключи и где происходит дешифровка?

Если нет прозрачной end-to-end модели, как у Signal, то: — сервер потенциально видит всё
— безопасность декларативная

Даже Telegram с его спорной моделью MTProto выглядит более зрелым решением на фоне MAX.

---

8. Масштабирование: система не держит нагрузку

Периодические “падения” — это не случайность.

Это означает: — нет горизонтального масштабирования
— нет нормального load balancing
— система не тестировалась под реальную нагрузку

Типичная ошибка: сначала релиз → потом попытка масштабировать → потом firefighting.

---

Итог

MAX — не “глючный мессенджер”.

MAX — это: — backend без строгих гарантий
— клиент без оптимизации
— инфраструктура без запаса прочности

Все наблюдаемые баги — не случайные. Они логично следуют из архитектурных решений.

---

Почему это важно

Такие системы создают ложное ощущение стабильности: пока нагрузка низкая — “вроде работает”.

Но при росте: — баги становятся нормой
— доверие падает
— продукт превращается в технический долг

---

Коротко

Если описать одной строкой:

MAX сейчас — это не продукт уровня production-grade мессенджера, а MVP, который по ошибке выпустили в массовое использование.

---

Если нужно, могу разобрать: — как бы выглядела нормальная архитектура такого мессенджера
— или сравнить MAX с WhatsApp / Signal / Telegram на уровне протоколов и backend-дизайна

#MAX
#Мессенджеры
#Инженерия
#SoftwareEngineering
#Backend
#DistributedSystems
#EventualConsistency
#MessageQueues
#PushNotifications
#FCM
#AndroidDev
#MobileDev
#UX
#Performance
#MemoryLeaks
#Scalability
#Reliability
#HighLoad
#DevOps
#Microservices
#CDN
#Security
#EndToEndEncryption
#Signal
#Telegram
#ITАнализ

[LogXide — 12.5배 빠른 Rust 기반 Python 로깅 프레임워크

LogXide는 Rust로 작성된 Python 로깅 프레임워크로, Python의 기본 logging 모듈보다 최대 12.5배 빠른 성능을 제공합니다. Rust 기반의 비동기 I/O와 GIL(Global Interpreter Lock) 문제 해결을 통해 고부하 환경에서 로깅 병목을 해결하며, OTLP, HTTP, Sentry 등 다양한 핸들러를 내장하고 있습니다. 기존 Python 로깅 코드와의 호환성을 유지하면서도 성능과 기능성을 크게 향상시켰습니다.

https://news.hada.io/topic?id=27875

#rust #python #logging #performance #highload

LogXide — 12.5배 빠른 Rust 기반 Python 로깅 프레임워크

<p>안녕하세요, Python 웹 애플리케이션 및 데이터 파이프라인과 같은 고부하 환경에서 파일 I/O 및 로깅 병목을 겪는 분들을 위한 <strong>LogXid...

GeekNews

BRIN, GIN, B‑Tree: полный гайд по индексам PostgreSQL для highload

Индексы есть, а запросы всё равно тормозят? Или наоборот — индексов слишком много, и они только увеличивают нагрузку на запись? Многие разработчики и администраторы баз данных попадают в ловушку: ставят B-Tree на всё подряд и надеются на лучшее. Но в highload-системах это может привести к катастрофе. В этой статье я делюсь реальным опытом работы с PostgreSQL. Статья будет полезна разработчикам, архитекторам и администраторам, которые хотят не просто «поставить индекс», а понять, как работает PostgreSQL под капотом и как проектировать базы данных, выдерживающие миллионы запросов в секунду.

https://habr.com/ru/companies/otus/articles/1008372/

#архитектура #PostgreSQL #индексы #оптимизация_запросов #highload #базы_данных #BTree #BRIN

BRIN, GIN, B‑Tree: полный гайд по индексам PostgreSQL для highload

Всем привет, меня зовут Сергей Прощаев , и в этой статье я расскажу про индексы в PostgreSQL. Точнее, про то, как из блага они превращаются в проклятие, когда их...

Хабр

Про избыточность WAL в Postgres

WAL — один из ключевых компонентов внутреннего устройства Postgres. Файлы WAL для истории бэкапов ужимаются в несколько раз, что говорит об избыточности. Изменяя физические параметры кластера, можно существенно повысить и эффективность локальной записи, и пропускную способность репликации, а можно создать неприятные инциденты. Привет, Хабр! Я — Андрей Бородин, работаю над Postgres и Apache Cloudberry для Yandex Cloud и вообще. Поддерживаю WAL-G, SPQR, Odyssey и всякое такое. В этой статье на основе доклада для конференции

https://habr.com/ru/companies/oleg-bunin/articles/995820/

#postgres #высоконагруженные_системы #highload #wal #база_данных #PostgreSQL

Про избыточность WAL в Postgres

WAL — один из ключевых компонентов внутреннего устройства Postgres. Файлы WAL для истории бэкапов ужимаются в несколько раз, что говорит об избыточности. Изменяя физические параметры кластера, можно...

Хабр