04 / блог

Инженерные заметки

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

31 публикаций с декабря 2024
// 2026

Кейс: Миграция монолита в микросервисы для fintech-платформы

Монолит на 450K LOC, деплой раз в 2 недели, каждый релиз — лотерея. Strangler fig pattern, Kafka, независимые CI/CD. Время деплоя: 14 дней → 2 дня.

Когда техдолг убивает раунд: 5 красных флагов для инвестора

5 технических проблем, которые инвесторы находят при due diligence. Как их выявить и устранить до раунда.

Монолит не умер. Вы просто плохо его написали

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

Внутренняя команда vs. внешний архитектор: калькуляция без иллюзий

Честное сравнение: нанять ещё одного инженера или привлечь внешнего архитектора. Стоимость, сроки, риски — без маркетинга.

Как мы сократили расходы на LLM в 12 раз

Кэширование промптов, маршрутизация по сложности запроса, батчинг, дистилляция под конкретную задачу. Конкретные числа из production-системы с миллионом запросов в день.

Кейс: Data pipeline для health-tech стартапа: от хаоса к real-time аналитике

IoT-устройства, 5K приборов, данные теряются при пиках. Kafka + Flink + TimescaleDB. Задержка: 4 часа → 12 секунд. Zero data loss.

TypeScript: паттерны, которые реально спасают

Discriminated unions, branded types, satisfies, infer в conditional types. Не теория из документации – паттерны, которые мы используем каждый день и которые ловят ошибки до рантайма.

Почему zero-downtime деплой сложнее, чем кажется

Rolling update, blue/green, canary – звучит просто. На практике: database migrations, feature flags, session affinity, backward-incompatible API changes. Разбираем каждый камень.

Кейс: AI-поиск для маркетплейса: +34% конверсии из поиска

2M SKU, 500K MAU, поиск на казахском не работает. Гибридный BM25 + semantic search, multilingual модели. Конверсия: +34%, null-results: 12% → 3%.

RAG в продакшне: что реально ломается

Chunking-стратегия, качество эмбеддингов, latency retrieval, hallucination под нагрузкой. На примере реального мониторингового сервиса.

Kubernetes для небольшой команды: когда он оправдан

K8s добавляет операционную сложность. Разбираем критерии: когда Docker Compose достаточно, а когда оркестрация реально нужна.

React Native в 2026: состояние экосистемы

New Architecture, Expo Router, Reanimated 3. Что стабилизировалось, что всё ещё болит, стоит ли смотреть на Flutter.

PostgreSQL под нагрузкой: индексы, которые реально помогают

Partial, covering, BRIN, GIN. Конкретные паттерны из проектов с миллионами строк и жёсткими SLA.

gRPC vs REST vs GraphQL: выбор под конкретную задачу

Тип клиента, требования к latency, количество потребителей. Без холиваров – только факторы принятия решения.

SQLite как production-база: когда это не шутка

WAL mode, Litestream для репликации, aiosqlite для async. Когда SQLite быстрее PostgreSQL — и когда точно нет. Бенчмарки из реальных проектов.

Docker Compose в 2026: 12 паттернов для production

Healthcheck, depends_on condition, profiles, watch, secrets, network isolation. Не основы — продвинутые паттерны для production-ready сетапа.

CSS Container Queries: конец медиа-запросов?

@container, container-type, размерные запросы для компонентов. Паттерн адаптивного компонента, который не зависит от viewport.

FastAPI: ошибки, которые мы допускали (и вы тоже)

Sync в async, DI-ловушки, on_event вместо lifespan, response_model без exclude_unset. Каждая ошибка с «плохо/хорошо» примером.

// 2025

Embeddings: как выбрать модель и не пожалеть

OpenAI text-embedding-3, sentence-transformers, Cohere. Размерность, latency, стоимость, MTEB-бенчмарки. Хранение: pgvector vs Qdrant.

Redis умирает? Valkey, DragonflyDB и что дальше

Redis сменил лицензию на BSL. Linux Foundation форкнул Valkey. DragonflyDB, KeyDB, Garnet. Бенчмарки, совместимость, миграция.

Observability для бедных: логи, метрики, трейсы без Datadog

OpenTelemetry + Grafana stack: Loki, Mimir, Tempo. Полная observability за $20/мес вместо $1500. Docker Compose setup.

htmx и возврат к серверному рендерингу

HTML over the wire вместо JSON API + SPA. Реальный дашборд на FastAPI + htmx + Jinja2 — 0 строк кастомного JavaScript.

WebSocket vs SSE vs Long Polling: чек-лист выбора

Три подхода к real-time. Сценарии, масштабирование через Redis PubSub, nginx-проксирование, fallback-стратегия с примерами.

Миграции базы данных: как не положить production

Expand-contract, CREATE INDEX CONCURRENTLY, pg_repack. Alembic best practices, тестирование миграций, rollback-стратегии.

Node.js, Deno, Bun: выбор рантайма в 2025

Node.js 22 LTS, Deno 2.0, Bun 1.1. Производительность, экосистема, миграция. Что выбрать для нового проекта.

Infrastructure as Code: Terraform vs Pulumi

HCL vs TypeScript для инфраструктуры. State management, drift detection, модули, cost estimation.

Error handling в распределённых системах

Circuit breaker, retry, dead letter queue, graceful degradation. Что делать, когда всё падает одновременно.

Кэширование: от HTTP-заголовков до distributed cache

Cache-Control, ETag, CDN, Redis patterns, cache invalidation. Два самых сложных слова в программировании.

Тестирование backend: стратегия, а не 100% coverage

Тестовая пирамида, integration vs unit, testcontainers, property-based testing. Как тестировать то, что ломается.

Аутентификация в 2025: JWT, sessions, passkeys

JWT refresh rotation, sessions, passkeys/WebAuthn, OAuth 2.1, MFA. Что выбрать для вашего продукта.

// 2024

CI/CD как код: от GitHub Actions до self-hosted runners

Автоматизация релизов. GitHub Actions, GitLab CI, monorepo CI, кэширование, self-hosted runners.

Next.js App Router через год: итоги

Server Components, Suspense, partial prerendering. Что из обещанного работает в реальных проектах.

Есть задача?

Мы проектируем и строим системы – от архитектуры до деплоя.

hello@qdev.run →