Блог инженера

History is written by its contributors

Go Runtime: как GC влияет на P99 latency в высоконагруженных API

2025-12-27 время чтения 10 мин Go Performance

У вас отличный API с медианной задержкой 5ms, но P99 внезапно подскакивает до 500ms? Клиенты жалуются на периодические зависания? Добро пожаловать в мир Go Garbage Collector и его влияния на tail latency.

В этой статье разберем реальную проблему: как 10ms GC пауза превращается в 500ms задержку для пользователей, и что делать, чтобы держать P99 latency под контролем.

Читать далее

Redis как Message Broker: когда он лучше RabbitMQ

2025-07-23 время чтения 6 мин Redis Ilya Brin

Redis часто воспринимают только как кеш. Но Redis - это полноценный message broker, который в некоторых сценариях работает лучше RabbitMQ, Kafka и других специализированных решений.

Разберём, когда Redis - правильный выбор, а когда лучше взять что-то другое.

Читать далее

Protobuf или FlatBuffers: что выбрать?

2025-05-24 время чтения 7 мин Postgresql Ilya Brin

Привет, performance-инженер! ⚡

JSON API тормозит под нагрузкой? MessagePack уже не спасает? Пора переходить на серьёзную артиллерию - бинарные протоколы сериализации.

Пока другие спорят о красоте JSON, мы разберемся, когда Protobuf идеален для микросервисов, а FlatBuffers - для игр и real-time систем.
Под капотом только реальные кейсы от Google и Facebook. Лет го!

Читать далее

C Memory Management для Go разработчиков: malloc, calloc, realloc и free

2025-05-01 время чтения 5 мин C Language Ilya Brin

Если вы Go разработчик, привыкший к автоматическому управлению памятью, работа с языком C может показаться архаичной. Но понимание malloc/free критично для CGO и низкоуровневой оптимизации.

Читать далее

Как избежать проблем с блокировками в Postgres

2025-04-25 время чтения 3 мин Database Postgresql Performance Optimization Ilya Brin

Блокировки (locks) в PostgreSQL - это механизм, который обеспечивает согласованность данных при параллельных операциях. Однако неправильное управление ими может привести к дедлокам (deadlocks), долгим транзакциям и простою приложений.

В этой статье разберём:

  • Какие бывают блокировки в Postgres
  • Как обнаруживать конфликты
  • Практические способы избежать проблем

Кратко и по существу! 🚀

Читать далее

NSQ: идеальная очередь сообщений для real-time систем (когда Redis уже не справляется)

2025-04-21 время чтения 8 мин Distributed-Systems Message-Queues Nsq Ilya Brin

Привет, архитектор распределённых систем! 🚀

Замучился с настройкой RabbitMQ?
Устал от потери сообщений в Redis?
Нужно что-то, что просто работает на любом масштабе?

NSQ - очередью сообщений, которая используется в Discord, Bitly и других высоконагруженных системах.

На примерах разберёмся, когда NSQ не просто полезен, а абсолютно идеален для задачи.

Читать далее