lenec ru

← все теги

#backend

25 постов

Rate limiting: алгоритмы, реализация и защита API от перегрузки

Любой публичный API без rate limiting — это приглашение к злоупотреблению. Один агрессивный клиент способен положить сервис для всех остальных. Rate limiting ограничивает количество запросов от…

0 16K
Светлана Морозова

Rust serde: сериализация и десериализация данных — tips и подводные камни

Serde — самая используемая библиотека в экосистеме Rust. Она обеспечивает сериализацию и десериализацию в любой формат: JSON, TOML, YAML, MessagePack, bincode. Derive-макросы делают базовое…

0 12K
code_kitchen

Connection pooling в Node.js: postgres, redis, HTTP keep-alive

Когда ваш Node.js-сервис начинает тормозить в проде — утечка памяти, внезапные CPU-спайки, медленные ответы — первый вопрос: где именно проблема? Логи молчат, метрики показывают только симптомы.…

0 13K
Sergey Morozov

Go generics на практике: паттерны, ограничения и реальные примеры

Generics появились в Go 1.18 и за два года стали частью повседневного кода. Но многие до сих пор используют их только для тривиальных случаев или избегают вовсе. Разберём синтаксис, полезные…

0 17K
code_kitchen

Кеширование HTTP-ответов в Node.js: ETag, Cache-Control, stale-while-revalidate

Когда ваш Node.js-сервис начинает тормозить в проде — утечка памяти, внезапные CPU-спайки, медленные ответы — первый вопрос: где именно проблема? Логи молчат, метрики показывают только симптомы.…

0 11K
Константин Веб-Разработчиков

Fastify vs Express в 2026: производительность, плагины и миграция

Когда Redis упирается в лимит памяти, он не падает молча — он начинает вытеснять ключи по заданной стратегии. Выбор правильной eviction policy определяет, потеряете ли вы критичные данные или…

0 12K
devnotes_ru

Оптимизация PostgreSQL запросов: индексы, EXPLAIN ANALYZE и query planning

В высоконагруженных микросервисах rate limiting — это не просто защита от DDoS, а инструмент управления ресурсами. Он предотвращает перегрузку сервисов, защищает от злоупотреблений API и обеспечивает…

0 17K
Дмитрий Кодеров

FastAPI dependency injection: паттерны для больших проектов

Передавать пароли через переменные окружения — привычно, но небезопасно. Любой с доступом к docker inspect видит все env в открытом виде. Docker secrets решают проблему: секреты монтируются как файлы…

0 17K
Мария Соколова

Python structlog: структурированное логирование для продакшена

GitOps меняет подход к деплою: вместо kubectl apply из CI-пайплайна вы коммитите манифесты в Git, а контроллер в кластере сам синхронизирует состояние. ArgoCD — самый популярный GitOps-контроллер для…

0 14K
Мария Соколова

Event loop в Node.js: phases, microtasks и оптимизация производительности

В высоконагруженных микросервисах rate limiting — это не просто защита от DDoS, а инструмент управления ресурсами. Он предотвращает перегрузку сервисов, защищает от злоупотреблений API и обеспечивает…

0 11K
Виктория Перформансова

REST API pagination: cursor vs offset на больших данных

# Semantic versioning и автоматический changelog Версионирование — это не просто цифры в package.json. Это контракт с пользователями: что сломается, что добавится, что исправится. Когда проект…

0 43
Дмитрий Соколов

Rust tokio: асинхронный runtime — практическое руководство

Rust не имеет встроенного async runtime — язык предоставляет синтаксис async/await и трейт Future, а исполнение futures отдаёт внешним библиотекам. Tokio — де-факто стандартный runtime для…

0 10K
code_kitchen

asyncio в Python: паттерны конкурентности, которые работают в проде

Когда Redis упирается в лимит памяти, он не падает молча — он начинает вытеснять ключи по заданной стратегии. Выбор правильной eviction policy определяет, потеряете ли вы критичные данные или…

0 18K
Мария Соколова

Go embed: встраиваем файлы в бинарник — статика, шаблоны, миграции

Деплой Go-сервиса — это один бинарник. Никаких зависимостей, никакого рантайма. Но что делать со статикой, шаблонами и SQL-миграциями? Раньше приходилось таскать файлы рядом с бинарником или…

0 12K
Игорь Беляев

Go sync.Map vs RWMutex: когда какой примитив синхронизации выбрать

Если вы работали с Go и горутинами, то наверняка видели панику fatal error: concurrent map writes. Встроенный map в Go не потокобезопасен — любой конкурентный доступ без синхронизации приводит к…

0 13K
Игорь Беляев

Кэширование в Redis: стратегии, TTL, eviction policies и cache stampede

Redis — это не просто key-value хранилище, а архитектурный компонент, который определяет latency и throughput всего приложения. Неправильная стратегия кэширования приводит к cache stampede, низкому…

0 19K
Максим Асинхронов

Профилирование Node.js приложений в production: clinic.js, 0x и встроенный profiler

WebSocket — это полнодуплексный протокол для real-time коммуникации между клиентом и сервером. В отличие от HTTP, где клиент инициирует каждый запрос, WebSocket позволяет серверу отправлять данные…

0 12K
Максим Асинхронов

Streams в Node.js: readable, writable, transform и backpressure handling

Streams в Node.js — это не просто абстракция для работы с данными по частям. Это фундаментальный паттерн для обработки больших объёмов информации с постоянным потреблением памяти. Разберём типы…

0 12K
Анна Бэкендова

JWT pitfalls: 7 типичных ошибок при работе с токенами в продакшене

JWT стал стандартом де-факто для аутентификации в SPA и микросервисах. Но простота формата обманчива — за ней скрываются ловушки, которые превращают токен из инструмента безопасности в уязвимость.…

0 13K
backend_diary

SSRF атаки: как защитить бэкенд от server-side request forgery

Дефолтный nginx обрабатывает тысячи запросов в секунду. Но когда трафик растёт до десятков тысяч RPS, дефолты начинают мешать: соединения к upstream пересоздаются на каждый запрос, буферы слишком…

0 11K
backend_diary

Собеседование на мидла Backend: что реально спрашивают в 2026

В 2026-м мидл-бэкенд — это уже не «знаю синтаксис языка и SQL». Чтобы пройти на сильную позицию, нужно держать в голове сетевые штуки, базы и параллельность. Я работаю как HR-консультант с…

363 16K
Дина Кречетова

Redis Streams vs Pub/Sub: выбираем механизм обмена сообщениями

Вы написали сервис, он работает в tmux на проде, и вы молитесь, чтобы никто не закрыл сессию. Знакомо? Systemd решает эту проблему: автозапуск, рестарты, изоляция, логи — всё из коробки. Нужен только…

0 14K
backend_diary

CORS deep dive: почему запросы блокируются и как настроить правильно

«Access to fetch has been blocked by CORS policy» — ошибка, которую видел каждый фронтенд-разработчик. Реакция обычно одна: поставить Access-Control-Allow-Origin: * и забыть. Но CORS — это не баг…

0 15K
backend_diary

Node.js Streams: обработка больших файлов без утечек памяти

Вызов fs.readFile('data.csv') на файле в 10 GB — гарантированный OOM. Весь файл загружается в память целиком. Streams решают проблему: данные обрабатываются порциями (chunks), и в памяти одновременно…

0 18K
Николай Ломов

WebSocket vs SSE vs Long Polling: выбираем real-time транспорт для веб-приложения

HTTP создавался для request-response: клиент спрашивает, сервер отвечает. Но современные приложения требуют push-данных от сервера — уведомления, чаты, live-обновления. Три основных подхода: Long…

0 16K
backend_diary