109 статей для Senior Backend-разработчика: большая подборка
Инженерные разборы для проектирования и развития сложных систем: распределённость, высокая нагрузка, данные, события, надёжность, безопасность и архитектурные решения.
Распределённые системы
- Алгоритмы консенсуса Paxos, Raft и Zab в распределённых системах
Чтобы разделять систему и контролировать связи сервисов.
- Во что обойдется линеаризуемость в распределенной системе
Чтобы разделять систему и контролировать связи сервисов.
- Кот Шрёдингера без коробки: проблема консенсуса в распределённых системах
Чтобы разделять систему и контролировать связи сервисов.
- Распределённая конференция о распределённых системах: анонс Hydra 2021
Чтобы разделять систему и контролировать связи сервисов.
- Распределённые транзакции в микросервисах: от SAGA до Two‑Phase Commit
Чтобы разделять систему и контролировать связи сервисов.
- О ключах идемпотентности
Чтобы разделять систему и контролировать связи сервисов.
- Проектируем микросервисы с Reactive Manifesto: 4 принципа распределенных систем
Чтобы разделять систему и контролировать связи сервисов.
- Инженерная надежность и отказоустойчивость распределенной системы
Чтобы разделять систему и контролировать связи сервисов.
- Распределенный монолит: тихий убийца мечты о микросервисах
Чтобы разделять систему и контролировать связи сервисов.
- Страх и ненависть в распределённых системах
Чтобы разделять систему и контролировать связи сервисов.
- Смартфон как элемент эшелонированной системы обнаружения БПЛА: архитектура распределенной сенсорной сети
Чтобы разделять систему и контролировать связи сервисов.
- 11 граблей распределенных систем: личный опыт backend-разработчика с практическими советами
Чтобы разделять систему и контролировать связи сервисов.
Высокая нагрузка и масштабирование
- Балансировка нагрузки и масштабирование долгоживущих соединений в Kubernetes
Чтобы выдерживать рост трафика и данных.
- NSX Advanced Load Balancer – умный автомасштабируемый балансировщик нагрузки. Часть 1: архитектура и особенности
Чтобы выдерживать рост трафика и данных.
- Первый HighLoad Cup: как мы это пережили
Чтобы выдерживать рост трафика и данных.
- Введение в современную сетевую балансировку и проксирование
Чтобы выдерживать рост трафика и данных.
- Балансировка нагрузки: проблемы, решения, практические рекомендации
Чтобы выдерживать рост трафика и данных.
- Сравнение алгоритмов балансировки нагрузки: Round Robin vs. Least Connections vs. IP Hash
Чтобы выдерживать рост трафика и данных.
- Балансировка нагрузки: простыми словами о всей мощи двух случайных вариантов
Чтобы выдерживать рост трафика и данных.
- Архитектура MRC для создания AI/ML-сетей любого масштаба: обзор технологии
Чтобы выдерживать рост трафика и данных.
- Что мы расскажем на Highload++ 2017
Чтобы выдерживать рост трафика и данных.
- Как Контур балансирует нагрузку в микросервисах
Чтобы выдерживать рост трафика и данных.
- Балансировка нагрузки и поддержка непрерывности в режиме катастрофоустойчивости
Чтобы выдерживать рост трафика и данных.
- Зачем хорошему инженеру идти на HighLoad++?
Чтобы выдерживать рост трафика и данных.
Архитектура и эволюция баз данных
- Целостность данных в микросервисной архитектуре — как её обеспечить без распределенных транзакций и жёсткой связности
Чтобы надёжно хранить данные приложения.
- Горизонтальное масштабирование базы данных. Репликация. Партицирование. Шардирование
Чтобы надёжно хранить данные приложения.
- Как правильно выбрать базу данных для разработки: понимание моделей репликации
Чтобы надёжно хранить данные приложения.
- Оптимизация реляционных баз данных без даунтайма на примере самой нагруженной БД в Badoo
Чтобы надёжно хранить данные приложения.
- Репликация в PostgreSQL: Write-Ahead Logging (WAL) и Logical Replication
Чтобы надёжно хранить данные приложения.
- CDC и логическая репликация для баз данных, реализованных на стеке open source-решений
Чтобы надёжно хранить данные приложения.
- Путеводитель по репликации баз данных
Чтобы надёжно хранить данные приложения.
- Репликация баз данных MySQL. Введение
Чтобы надёжно хранить данные приложения.
- Распределенные транзакции для разнородных баз данных в MS .NET
Чтобы надёжно хранить данные приложения.
- Сага распределенных транзакций
Чтобы надёжно хранить данные приложения.
- Общие подходы к классическому PostgreSQL в Kubernetes
Чтобы надёжно хранить данные приложения.
- Миграция с Firebird на PostgreSQL. Что может пойти не так? Часть 2
Чтобы надёжно хранить данные приложения.
Очереди, события и надёжность
- Авторизация в Kafka: управление изменениями, когда у тебя тысячи клиентов и миллионы RPS
Чтобы обрабатывать задачи асинхронно и надёжно.
- Как подключить Kafka UI к кластеру Kafka в DBaaS
Чтобы обрабатывать задачи асинхронно и надёжно.
- Apache Kafka в гарантиях или как надежно доставить сообщение
Чтобы обрабатывать задачи асинхронно и надёжно.
- Kafka для начинающих: работа с Kafka транзакциями на практике — когда они нужны, а когда только вредят?
Чтобы обрабатывать задачи асинхронно и надёжно.
- Kafka для начинающих: Гарантии доставки на практике и идемпотентность
Чтобы обрабатывать задачи асинхронно и надёжно.
- Микросервисы на основе событий с Kafka Streams и Spring Boot
Чтобы обрабатывать задачи асинхронно и надёжно.
- Как синхронизировать сотни таблиц базы в Kafka, не написав ни одного продюсера
Чтобы обрабатывать задачи асинхронно и надёжно.
- Шина данных поверх Kafka — когда каждому хочется иметь своё число консьюмеров для топика
Чтобы обрабатывать задачи асинхронно и надёжно.
- Как мы четыре раза переписали Outbox
Чтобы обрабатывать задачи асинхронно и надёжно.
- Очередь задач на Postgres: SKIP LOCKED + lease/heartbeat + backpressure (практический опыт)
Чтобы обрабатывать задачи асинхронно и надёжно.
- Зеркалирование топиков Kafka по-бруклински
Чтобы обрабатывать задачи асинхронно и надёжно.
- Транзакционный паттерн Outbox: теперь с «оптимистичной отправкой»
Чтобы обрабатывать задачи асинхронно и надёжно.
Микросервисы, DDD и платформы
- Заметки теоретика. Платформенная инженерия: Как выбрать тип платформы для вашей компании?
Чтобы разделять систему и контролировать связи сервисов.
- Разбираемся в проектировании микросервисов. Основные паттерны (Часть 1)
Чтобы разделять систему и контролировать связи сервисов.
- Библиотека разработчика микросервисов. Полезные книги на русском языке
Чтобы разделять систему и контролировать связи сервисов.
- Распутывание микросервисов или балансировка сложности в распределенных системах
Чтобы разделять систему и контролировать связи сервисов.
- Как мы в ПСБ с монолита на микросервисы переходили: шаблоны, нюансы, чек-листы от команды системных аналитиков
Чтобы разделять систему и контролировать связи сервисов.
- Что такое платформенная инженерия: как она связана с DevOps и SRE?
Чтобы разделять систему и контролировать связи сервисов.
- Архитектурные антипаттерны в микросервисах и способы их избежания
Чтобы разделять систему и контролировать связи сервисов.
- Busrpc — фреймворк для разработки микросервисов
Чтобы разделять систему и контролировать связи сервисов.
- Заметки теоретика. Платформенная инженерия: ваш цифровой конструктор Lego
Чтобы разделять систему и контролировать связи сервисов.
- Платформенный инжиниринг как следующий этап развития DevOps
Чтобы разделять систему и контролировать связи сервисов.
- Декомпозиция микросервисов: 5 паттернов против распределённого монолита
Чтобы разделять систему и контролировать связи сервисов.
- Декомпозируем систему и проектируем устойчивую микросервисную архитектуру
Чтобы разделять систему и контролировать связи сервисов.
Наблюдаемость и эксплуатация
- SLO-Scout: AI для автоматического создания SLO и SLA в SRE
Чтобы быстро находить причины сбоев.
- «Цель SRE — надёжная система». Обзор основных метрик SRE
Чтобы быстро находить причины сбоев.
- Практические истории из наших SRE-будней. Часть 6
Чтобы быстро находить причины сбоев.
- Как Лёха стал инженером по SRE: выдуманная история про невыдуманные проблемы
Чтобы быстро находить причины сбоев.
- CNCF White Paper по observability: инструменты, виды, стратегии и проблемы
Чтобы быстро находить причины сбоев.
- 6 практических историй из наших SRE-будней
Чтобы быстро находить причины сбоев.
- Наблюдаемость сетевой инфраструктуры Kubernetes. Часть первая
Чтобы быстро находить причины сбоев.
- Инцидент-менеджмент с нуля: практический гайд для растущих команд
Чтобы быстро находить причины сбоев.
- OpenTelemetry с нуля до 100: пример внедрения Норвежским управлением труда и соцобеспечения
Чтобы быстро находить причины сбоев.
- Как я сделал локальный RAG-сервис для SRE: ищем по документации, ранбукам и коду через Ollama
Чтобы быстро находить причины сбоев.
- Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 3
Чтобы быстро находить причины сбоев.
- Мониторинг и анализ производительности бэкенда с помощью ClickHouse и Grafana. Часть 1
Чтобы быстро находить причины сбоев.
Безопасность и моделирование угроз
- Как работает безопасность, когда никто никому не доверяет — Zero Trust на пальцах
Чтобы снизить риски и защитить систему.
- От Threat Modeling до безопасности AWS: 50+ open-source инструментов для выстраивания безопасности DevOps
Чтобы снизить риски и защитить систему.
- Cloud Trust vs Zero Trust: стандарты безопасности в гибридном окружении
Чтобы снизить риски и защитить систему.
- Zero Trust для подрядного доступа: четыре слоя Identity, Device, Access и Monitoring
Чтобы снизить риски и защитить систему.
- Актуальные угрозы безопасности в Large Language Model Applications
Чтобы снизить риски и защитить систему.
- От защиты периметра к Zero Trust. Как NAC-системы обеспечивают защиту и контроль доступа в корпоративной сети
Чтобы снизить риски и защитить систему.
- Что такое Zero Trust? Модель безопасности
Чтобы снизить риски и защитить систему.
- Защита серверов и данных: Zero Trust и 20 фич для вашей кибербезопасности
Чтобы снизить риски и защитить систему.
- Будущее архитектуры безопасности: Сетчатая архитектура кибербезопасности
Чтобы снизить риски и защитить систему.
- Как мы строили безопасную микросервисную архитектуру с Service Mesh: интеграция с базами данных
Чтобы снизить риски и защитить систему.
- Как мы строили безопасную микросервисную архитектуру с Service Mesh: интеграция с базами данных и масштабированиe
Чтобы снизить риски и защитить систему.
- «Интегрируй, доверяй»: почему появилась концепция zero trust, и как мы объединили три ее компонента в едином продукте
Чтобы снизить риски и защитить систему.
Инфраструктура и Kubernetes
- Обзор операторов PostgreSQL для Kubernetes. Часть 1: наш выбор и опыт
Чтобы управлять контейнерами и масштабированием.
- Как мы тестируем Kubernetes‑операторы в MWS Cloud Platform
Чтобы управлять контейнерами и масштабированием.
- Внедрение Kubernetes-операторов в корпоративных средах
Чтобы управлять контейнерами и масштабированием.
- DEVops: Разрабатываем свой Kubernetes оператор с кастомными ресурсами на Go
Чтобы управлять контейнерами и масштабированием.
- Разработка Kubernetes оператора с Operator Framework
Чтобы управлять контейнерами и масштабированием.
- Сказ о том, как мы Tarantool Kubernetes Operator писали
Чтобы управлять контейнерами и масштабированием.
- Операторы в Kubernetes
Чтобы управлять контейнерами и масштабированием.
- Оператор в Kubernetes для управления кластерами БД. Владислав Клименко (Altinity, 2019)
Чтобы управлять контейнерами и масштабированием.
- Как мы в Авито автоматически лечим ноды в Kubernetes
Чтобы управлять контейнерами и масштабированием.
- Персонализация инфраструктуры облачных вычислений с помощью Kubernetes
Чтобы управлять контейнерами и масштабированием.
- Кастомизация инфраструктуры облачных вычислений с помощью Kubernetes
Чтобы управлять контейнерами и масштабированием.
- Пишем оператор Kubernetes: руководство для начинающих
Чтобы управлять контейнерами и масштабированием.
Архитектурные решения и технический долг
- Итоги двадцати лет работы — технический долг и неподдерживаемый код
Чтобы принимать устойчивые архитектурные решения.
- Технический долг захватил глобальную экономику
Чтобы принимать устойчивые архитектурные решения.
- Как я пришел от architecture as code к живой архитектурной модели
Чтобы принимать устойчивые архитектурные решения.
- Что будет, если скрестить конструирование компиляторов, DDD и Clean Architecture? Опыт HydraScript
Чтобы принимать устойчивые архитектурные решения.
- Архитектура микросервисов
Чтобы принимать устойчивые архитектурные решения.
- Когда технический долг и legacy-системы тянут CIO вниз
Чтобы принимать устойчивые архитектурные решения.
- ADR (Architecture Decision Record) или Мы же теперь умные?
Чтобы принимать устойчивые архитектурные решения.
- Архитектурные решения в backend: 5 практических приёмов, которые помогают держать баланс
Чтобы принимать устойчивые архитектурные решения.
- Ловушка семантики и атрибутивных конструкций, или Почему architecture decision — это не архитектурное и не решение?
Чтобы принимать устойчивые архитектурные решения.
- Технический долг как тетрис
Чтобы принимать устойчивые архитектурные решения.
- Архитектурные практики в «кровавом энтерпрайзе»: данные, управление сложными системами и влияние AI
Чтобы принимать устойчивые архитектурные решения.
- Эволюционная архитектура ПО: уроки теории Дарвина
Чтобы принимать устойчивые архитектурные решения.
Техническое лидерство
- Что такое Загруженность команды: как использовать и для чего
Чтобы улучшить совместную работу и развитие команды.