Серии и карты
Все серии статей и тематические карты-навигаторы: с чего начать и как связаны материалы
Все серии
ClickHouse и аналитические БД
Индексы в базах данных
Docker в production
- 1 Multi-stage builds в Docker: собираем Go-приложение правильно
- 2 Production-сборка Docker-образов: secrets, proxy, healthcheck и CI
- 3 Golden builder image и Docker Registry: ускоряем сборку и публикуем образы
- 4 Docker volumes: как использовать тома правильно для скорости, надёжности и контроля доступа
- 5 Docker Buildx и multi-arch образы: одна сборка для amd64 и arm64
- 6 Docker Compose для production без Kubernetes
- 7 Rootless Docker: стоит ли переходить
Событийные паттерны
- 1 Событийная архитектура без магии: карта понятий
- 2 Что кладём в событие: notification vs event-carried state transfer
- 3 Гарантии доставки и идемпотентность: как получить effectively-once
- 4 Transactional Outbox/Inbox: события без распределённой транзакции
- 5 Контракты событий: schema evolution без боли
- 6 Event Sourcing: когда история важнее текущего состояния
- 7 CQRS: разделяем чтение и запись без лишнего пафоса
- 8 Saga: распределённые транзакции без двухфазного коммита
- 9 Хореография vs оркестрация: кто знает бизнес-процесс
- 10 Temporal: durable workflows вместо самодельных очередей
Go: глубокое погружение
- 1 Go: конфигурация через env без хаоса
- 2 Graceful shutdown в Go: завершаемся правильно
- 3 Когда env уже мало: layered configuration в Go с confita
- 4 PGX в Go: зачем уходить с pq и где проходит граница пользы
- 5 ORM в Go: где он уместен и что выбрать между GORM и go-jet
- 6 sqlc и SQL-builders в Go: генерация кода из SQL vs конструирование запросов
- 7 Профилирование и бенчмаркинг в Go: как измерять без самообмана
JVM backend: Java и Kotlin
Архитектура лунной базы
- 1 Архитектура, аналитика и лунная база: о чём эта серия
- 2 Почему аналитику недостаточно только требований
- 3 Problem statement: симптомы, причины и метрики
- 4 Требования как архитектурные драйверы
- 5 DDD для аналитика без культа терминов
- 6 Как доменная модель ломает и спасает архитектуру
- 7 C4-модель для аналитика: не рисовать красиво, а думать точно
- 8 Взаимодействия и интеграции: где ломается кажущаяся простота
- 9 Согласованность данных: где нужна строгая, а где достаточно «в итоге»
- 10 Эксплуатация в архитектуре: как инженеры возвращают схему в реальность
- 11 Сквозной итоговый кейс: собираем рабочую систему лунной базы
Погружение в NATS
- 1 NATS для тех, кто знает Kafka и RabbitMQ: subjects, Core и request/reply
- 2 JetStream: как NATS получает persistence, streams и гарантии доставки
- 3 Классический кластер NATS: routes, RAFT и надёжный failover
- 4 Геораспределённый NATS: superclusters, gateways, leaf nodes и mirror-стримы
- 5 Надёжность и производительность NATS: гарантии, репликация и tuning
- 6 NATS из Go: nats.go, Core и JetStream паттерны
- 7 NATS из Java: jnats, Core и JetStream паттерны
- 8 Безопасность и multi-tenancy в NATS: accounts, JWT, nkeys и TLS
- 9 Эксплуатация NATS: nats CLI, мониторинг, backup и обновление кластера
OpenSearch: глубокое погружение
- 1 OpenSearch: установка кластера через Ansible, авторизация и работа с индексами
- 2 OpenSearch: индексы, маппинги и шаблоны
- 3 Сбор данных в OpenSearch: API, клиенты и bulk-загрузка
- 4 Полнотекстовый поиск в OpenSearch: запросы, анализаторы и подсветка результатов
- 5 Retention в OpenSearch: ISM, rollover и жизненный цикл индексов
- 6 OpenSearch Dashboards: Discover, визуализации и дашборды
- 7 Семантический поиск в OpenSearch: k-NN, эмбеддинги и гибридный поиск
Производительность: низкая задержка под нагрузкой
- 1 Бюджет задержки и выбор транспорта: highload под SLA < 300 мс
- 2 HAProxy L4 vs L7 и HTTP/2: как масштабировать обработку между серверами
- 3 Go-клиент под нагрузкой: пул HTTP/2-соединений и потоки
- 4 JVM-сервис под нагрузкой: virtual threads, пулы и reactive для 1000 in-flight
- 5 JVM-клиент под нагрузкой: gRPC ManagedChannel и HttpClient на HTTP/2
Высокодоступный RabbitMQ
- 1 Отказоустойчивый RabbitMQ: quorum-очереди и failover без потерь
- 2 Не потерять сообщение в RabbitMQ: durability, confirms, ack и DLQ
- 3 Связываем кластеры RabbitMQ: Federation и Shovel
- 4 Эксплуатация RabbitMQ: мониторинг и продакшн-чеклист
- 5 Streams в RabbitMQ: Kafka-подобный лог и можно ли заменить Kafka
Rust: глубокое погружение
Транзакции и изоляция
- 1 Аномалии и уровни изоляции: фундамент транзакций
- 2 Транзакции в реляционных БД на практике: PostgreSQL, изоляция и нагрузочный стенд
- 3 KV и документные: «транзакций» почти нет — Redis, MongoDB, ScyllaDB
- 4 Брокеры и стриминг: транзакции в очереди и логе — RabbitMQ и Kafka
- 5 Мульти-хранилищный стенд: один сценарий по всем БД и карта выбора