Корпус инженерных заметок по архитектуре, данным, ИИ, инфраструктуре и прикладным разборам.
Инженерные заметки
Пишем о том, с чем работаем: архитектурные решения, выводы из реальных проектов, инструменты. Без маркетинга.
Рабочие направления: API, веб, инфраструктура, данные, мобильные приложения, ИИ и прикладные разборы.
Последняя опубликованная заметка в текущем наборе. Метрика строится по реальным датам карточек.
Непрерывный архив рабочих заметок по инженерным решениям, ошибкам, миграциям и архитектурным компромиссам.
Кейс: Миграция монолита в микросервисы для финансовой платформы
Монолит на 450 тыс. строк кода, выпуск раз в две недели, каждый релиз — лотерея. Поэтапная миграция, Kafka и независимые CI/CD-контуры. Время вывода изменений: 14 дней → 2 дня.
Когда техдолг убивает раунд: 5 красных флагов для инвестора
5 технических проблем, которые инвесторы находят при due diligence. Как их выявить и устранить до раунда.
Монолит не умер. Вы просто плохо его написали
Микросервисы – не серебряная пуля. Для большинства продуктов хорошо написанный монолит быстрее в разработке, дешевле в эксплуатации и проще в отладке. Когда стоит переходить, а когда – нет.
Внутренняя команда vs. внешний архитектор: калькуляция без иллюзий
Честное сравнение: нанять ещё одного инженера или привлечь внешнего архитектора. Стоимость, сроки, риски — без маркетинга.
Как мы сократили расходы на языковые модели в 12 раз
Кэширование инструкций, маршрутизация по сложности запроса, пакетная обработка, дистилляция под конкретную задачу. Конкретные числа из рабочего контура с миллионом запросов в день.
Кейс: Контур обработки данных для медицинского стартапа: от хаоса к аналитике в реальном времени
IoT-устройства, 5 тыс. приборов, данные теряются при пиках. Kafka + Flink + TimescaleDB. Задержка: 4 часа → 12 секунд, без потери данных.
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 как рабочая база: когда это оправдано
WAL mode, Litestream для репликации, aiosqlite для async. Когда SQLite быстрее PostgreSQL — и когда точно нет. Бенчмарки из реальных проектов.
Docker Compose в 2026: 12 паттернов для промышленной эксплуатации
Healthcheck, depends_on condition, profiles, режим наблюдения, secrets и изоляция сетей. Не основы, а практики для устойчивого рабочего контура.
CSS Container Queries: конец медиа-запросов?
@container, container-type, размерные запросы для компонентов. Паттерн адаптивного компонента, который не зависит от viewport.
FastAPI: ошибки, которые мы допускали (и вы тоже)
Sync в async, DI-ловушки, on_event вместо lifespan, response_model без exclude_unset. Каждая ошибка с «плохо/хорошо» примером.
Embeddings: как выбрать модель и не пожалеть
OpenAI text-embedding-3, sentence-transformers, Cohere. Размерность, latency, стоимость, MTEB-бенчмарки. Хранение: pgvector vs Qdrant.
Redis умирает? Valkey, DragonflyDB и что дальше
Redis сменил лицензию на BSL. Linux Foundation форкнул Valkey. DragonflyDB, KeyDB, Garnet. Бенчмарки, совместимость, миграция.
Наблюдаемость без дорогих платформ: журналы, метрики и трассировка
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: чек-лист выбора
Три подхода к работе в реальном времени. Сценарии, масштабирование через Redis PubSub, nginx-проксирование и резервная стратегия с примерами.
Миграции базы данных: как не уронить рабочий контур
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. Что выбрать для вашего продукта.
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. Что из обещанного работает в реальных проектах.