Подборка материалов · Middle

118 статей для Middle Backend-разработчика: большая подборка

Материалы для самостоятельной разработки сервисов: проектирование API, транзакции, очереди, кэширование, архитектура, наблюдаемость и доставка в production.

118 статей · 10 тем · материалы на русском языке

Проектирование API

  1. REST vs gRPC. Межсервисная интеграция для начинающих

    Чтобы проектировать понятные и стабильные API.

  2. От REST к gRPC и GraphQL: современный подход к API

    Чтобы проектировать понятные и стабильные API.

  3. REST API vs GraphQL: в чём между ними разница

    Чтобы проектировать понятные и стабильные API.

  4. GraphQL или REST: Какой API выбрать, чтобы не прогадать?

    Чтобы проектировать понятные и стабильные API.

  5. Документирование ASP .Net Core Web API с помощью OpenAPI/Swagger. Библиотека Swashbuckle

    Чтобы использовать возможности браузера из кода.

  6. Реализация REST API-метода с пагинацией на примере JSON-Schema и OpenAPI

    Чтобы передавать структурированные данные между системами.

  7. RESTForms — REST API для ваших классов InterSystems Caché

    Чтобы проектировать понятные и стабильные API.

  8. GraphQL-gRPC API Gateway на Java

    Чтобы проектировать понятные и стабильные API.

  9. Rest шлюз для gRPC сервисов на го — gRPC-gateway

    Чтобы проектировать понятные и стабильные API.

  10. Миграция API с REST на gRPC в WePay

    Чтобы проектировать понятные и стабильные API.

  11. Мифы про REST API. Часть 3

    Чтобы проектировать понятные и стабильные API.

  12. Разрабатываем REST API с помощью TypeScript, NestJS, Prisma, AdminJS и Swagger

    Чтобы находить ошибки типов до запуска.

  13. Как мы превратили Swagger из документации в двигатель API-автотестов

    Чтобы проектировать понятные и стабильные API.

Базы данных, индексы и транзакции

  1. Уровни изоляции транзакций: практическая механика и сравнение PostgreSQL, MySQL, Oracle, SQL Server и DB2

    Чтобы ускорять запросы и сохранять целостность данных.

  2. Топ полезных SQL-запросов для PostgreSQL

    Чтобы ускорять запросы и сохранять целостность данных.

  3. DevConf: переход Uber с PostgreSQL на MySQL

    Чтобы ускорять запросы и сохранять целостность данных.

  4. Что нового в PostgreSQL 11: INCLUDE-индексы

    Чтобы ускорять запросы и сохранять целостность данных.

  5. Оптимизация SQL запросов

    Чтобы ускорять запросы и сохранять целостность данных.

  6. Уровни изоляции транзакций в PostgreSQL, MySQL, MSQL, Oracle с примерами на Go

    Чтобы ускорять запросы и сохранять целостность данных.

  7. PostgreSQL 16. Изоляция транзакций. Часть 2

    Чтобы ускорять запросы и сохранять целостность данных.

  8. Шардированный не значит распределённый: что важно знать, когда PostgreSQL становится мало

    Чтобы ускорять запросы и сохранять целостность данных.

  9. BRIN, GIN, B‑Tree: полный гайд по индексам PostgreSQL для highload

    Чтобы ускорять запросы и сохранять целостность данных.

  10. Перекрестная репликация между PostgreSQL и MySQL

    Чтобы ускорять запросы и сохранять целостность данных.

  11. Транзакция, ACID, CAP теорема и уровни изоляций транзакций простыми словами

    Чтобы ускорять запросы и сохранять целостность данных.

  12. Сравнение транзакционных систем Oracle и PostgreSQL

    Чтобы ускорять запросы и сохранять целостность данных.

  13. Гетерогенная распределенная система как способ миграции больших и не очень баз данных с MSSQL Server на PostgreSQL

    Чтобы ускорять запросы и сохранять целостность данных.

Асинхронность и очереди

  1. Часть 2: Как я реализовал взаимодействие микросервисов — Kafka и gRpc

    Чтобы выполнять асинхронные операции без блокировок.

  2. Изучаем Kafka — Уровень 1

    Чтобы выполнять асинхронные операции без блокировок.

  3. Асинхронность vs. многопоточность: что выживет в эпоху No GIL?

    Чтобы выполнять долгие операции без зависания.

  4. Выбор между RabbitMQ и Apache Kafka

    Чтобы выполнять асинхронные операции без блокировок.

  5. Соседняя очередь всегда движется быстрее

    Чтобы выполнять асинхронные операции без блокировок.

  6. Kafka, go и параллельные очереди

    Чтобы выполнять асинхронные операции без блокировок.

  7. Архитектура сервиса распределённых очередей сообщений в Яндекс.Облаке

    Чтобы выполнять асинхронные операции без блокировок.

  8. Event-Driven подход в пет-проекте: автоматизация Telegram-канала на NiFi, Kafka и n8n

    Чтобы выполнять асинхронные операции без блокировок.

  9. Аналитика событий на опасном производстве, или зачем «Цифровому рабочему» Kafka, Esper и ClickHouse

    Чтобы выполнять асинхронные операции без блокировок.

  10. Event-Driven Architecture в высоконагруженном ДБО: наш опыт

    Чтобы выполнять асинхронные операции без блокировок.

  11. Не Кафкой единым: как наладить асинхронный обмен сообщениями между микросервисами

    Чтобы выполнять долгие операции без зависания.

  12. Брокеры сообщений Kafka и RabbitMQ в реальной жизни

    Чтобы выполнять асинхронные операции без блокировок.

  13. RabbitMQ и Kotlin: делаем свою event-driven Jira на Spring

    Чтобы выполнять асинхронные операции без блокировок.

Кэширование и производительность

  1. Как подружить Spring Boot и Redis для эффективного кэширования

    Чтобы снижать задержки и нагрузку на систему.

  2. Кэширование и трекинг. Как YOLO экономит время и нервы

    Чтобы снижать задержки и нагрузку на систему.

  3. Проектирование высокопроизводительных кэширующих решений с использованием Redis и Memcached

    Чтобы снижать задержки и нагрузку на систему.

  4. Разработка высокопроизводительного кеш-слоя на основе Redis в телеграм-боте

    Чтобы снижать задержки и нагрузку на систему.

  5. Redis больше не нужен?! Реализуем реактивный кэш на чистом PostgreSQL и Go

    Чтобы снижать задержки и нагрузку на систему.

  6. Мифы и легенды о производительности Python

    Чтобы снижать задержки и нагрузку на систему.

  7. Экстремальная настройка производительности HTTP: 1,2M API RPS на инстансе EC2 с 4 виртуальными процессорами (vCPU)

    Чтобы снижать задержки и нагрузку на систему.

  8. REDIS: такой простой и такой сложный

    Чтобы снижать задержки и нагрузку на систему.

  9. Профилирование Python-программ и анализ их производительности

    Чтобы снижать задержки и нагрузку на систему.

  10. Разбираемся с Redis

    Чтобы снижать задержки и нагрузку на систему.

  11. Атаки на веб-кэширование. Отравление кэша: теория и практика

    Чтобы снижать задержки и нагрузку на систему.

  12. Гибридный кэш на базе Redis в серверной разработке

    Чтобы снижать задержки и нагрузку на систему.

  13. Оптимизируем производительность веб-приложения с Redis

    Чтобы снижать задержки и нагрузку на систему.

Архитектура, DDD и границы модулей

  1. Главная проблема «чистых архитектур»

    Чтобы связать архитектуру с бизнес-логикой.

  2. Про архитектуру приложений для тех, кому мало Чистой архитектуры

    Чтобы связать архитектуру с бизнес-логикой.

  3. Value Object: как победить примитивную одержимость без DDD

    Чтобы связать архитектуру с бизнес-логикой.

  4. Domain-Driven Design: чистая архитектура снизу доверху

    Чтобы связать архитектуру с бизнес-логикой.

  5. Из легаси монолита в модульную архитектуру: проводим рефакторинг и наводим порядок в проекте

    Чтобы связать архитектуру с бизнес-логикой.

  6. Семь раз отмерь, а SOLID все равно не про ООП. Монолог об архитектуре

    Чтобы связать архитектуру с бизнес-логикой.

  7. Вам не нужна Чистая архитектура. Скорее всего

    Чтобы связать архитектуру с бизнес-логикой.

  8. Почему мы построили монолит на чистой архитектуре. И почему это взбесило системных аналитиков

    Чтобы связать архитектуру с бизнес-логикой.

  9. Domain Driven Design и модульный монолит в Python

    Чтобы связать архитектуру с бизнес-логикой.

  10. Разбираем архитектуру. Часть 1. Чистая архитектура и её корни: история и взаимосвязи

    Чтобы связать архитектуру с бизнес-логикой.

  11. Вы за это заплатите! Цена Чистой Архитектуры. Часть 1

    Чтобы связать архитектуру с бизнес-логикой.

  12. Event Sourcing и Saga с помощью Marten и Wolverine на C# и немного модульного монолита

    Чтобы связать архитектуру с бизнес-логикой.

  13. DDD, CQRS, EDA, ES, Clean, Layer, Hexagonal in one application

    Чтобы связать архитектуру с бизнес-логикой.

Тестирование и качество

  1. Тестирование Node.js-проектов. Часть 1. Анатомия тестов и типы тестов

    Чтобы находить ошибки до выпуска продукта.

  2. Контрактные тесты с Pact: гарантия стабильности микросервисов

    Чтобы находить ошибки до выпуска продукта.

  3. Автоматизация тестирования микросервисов: плюсы и минусы тестов на Go

    Чтобы находить ошибки до выпуска продукта.

  4. Мобильное тестирование, автоматизация и тестирование API: С чем нужно уметь работать тестировщику в 2021 году

    Чтобы находить ошибки до выпуска продукта.

  5. Еще раз про интеграционное тестирование ASP.NET Core c testserver и testcontainers

    Чтобы находить ошибки до выпуска продукта.

  6. [обновлено] Как нагрузочное тестирование процессинга обошлось нам в €157 000 и почему никого не уволили

    Чтобы находить ошибки до выпуска продукта.

  7. Контрактное тестирование без единой строки кода: наш инструмент, наши грабли и честный разбор альтернатив

    Чтобы находить ошибки до выпуска продукта.

  8. Нагрузочное тестирование: наш опыт, методология и результаты. Делимся внутренней кухней

    Чтобы находить ошибки до выпуска продукта.

  9. Долой оверхед: как мы избавились от зависимостей в интеграционном тестировании микросервисов

    Чтобы находить ошибки до выпуска продукта.

  10. Тестирование BMС: поговорим о нагрузочном тестировании

    Чтобы находить ошибки до выпуска продукта.

  11. Тестирование умерло, да здравствует тестирование

    Чтобы находить ошибки до выпуска продукта.

  12. Стратегия тестирования REST API: что именно вам нужно тестировать?

    Чтобы находить ошибки до выпуска продукта.

  13. Обзор программы Heisenbug 2017 Moscow: сколько нужно тестировщиков, чтобы запустить тесты на атомной электростанции?

    Чтобы находить ошибки до выпуска продукта.

Логи, метрики и трассировка

  1. «База» по метрикам в Prometheus

    Чтобы быстро находить причины сбоев.

  2. Мониторинг и логирование DWH, часть 2: Prometheus, Grafana, Zabbix, ELK, OpenSearch, Loki — как выбрать рабочий стек

    Чтобы быстро находить причины сбоев.

  3. Как мы наблюдаем за метриками в дата-центре и развиваем наш мониторинг

    Чтобы быстро находить причины сбоев.

  4. Как внедрить наблюдаемость в микросервисное приложение с помощью OpenTelemetry, Jaeger и Prometheus

    Чтобы быстро находить причины сбоев.

  5. Наблюдаемость SRE: пространства имен и структура метрик

    Чтобы быстро находить причины сбоев.

  6. Распределенное логирование и трассировка для микросервисов

    Чтобы быстро находить причины сбоев.

  7. Одна платформа, чтобы мониторить всех: как мы осуществляем трассировку, работаем с логами и метриками во всей экосистеме

    Чтобы быстро находить причины сбоев.

  8. Мониторинг Strimzi Kafka через kube-prometheus-stack

    Чтобы быстро находить причины сбоев.

  9. Трассировка OpenTelemetry в 200 строк кода

    Чтобы быстро находить причины сбоев.

  10. Масштабирование приложения в Kubernetes на основе метрик из Prometheus

    Чтобы быстро находить причины сбоев.

  11. OpenTelemetry как единый стандарт наблюдаемости для распределённых систем

    Чтобы быстро находить причины сбоев.

  12. Мониторинг веб-приложения на Rust с использованием Prometheus и Grafana

    Чтобы быстро находить причины сбоев.

  13. Мониторинг, который кричал «Волк»! Что мы придумали для корректного сбора метрик

    Чтобы быстро находить причины сбоев.

CI/CD, Docker и Kubernetes

  1. Как я уменьшил Docker-образ Go-приложения с 1.92 GB до 9 MB

    Чтобы одинаково запускать приложение в любой среде.

  2. Как запустить контейнер Docker внутри конвейера GitLab CI

    Чтобы одинаково запускать приложение в любой среде.

  3. Настройка GitLab CI/CD: понимаем принципы работы и запускаем первый pipeline

    Чтобы одинаково запускать приложение в любой среде.

  4. Запуск werf в GitLab CI/CD без Docker-сервера

    Чтобы одинаково запускать приложение в любой среде.

  5. Сборка и деплой однотипных микросервисов с werf и GitLab CI

    Чтобы одинаково запускать приложение в любой среде.

  6. Почему ваш Docker-контейнер взломают завтра (и как этого избежать)

    Чтобы одинаково запускать приложение в любой среде.

  7. 3-way merge в werf: деплой в Kubernetes с Helm «на стероидах»

    Чтобы одинаково запускать приложение в любой среде.

  8. Практика с dapp. Часть 2. Деплой Docker-образов в Kubernetes с помощью Helm

    Чтобы одинаково запускать приложение в любой среде.

  9. Масштабируем OpenClaw: Docker, Kubernetes и отказоустойчивость

    Чтобы одинаково запускать приложение в любой среде.

  10. Динамическая сборка и деплой Docker-образов с werf на примере сайта версионированной документации

    Чтобы одинаково запускать приложение в любой среде.

  11. Миграция приложения из Docker Compose в Kubernetes. Как, зачем и с какими проблемами я столкнулся

    Чтобы одинаково запускать приложение в любой среде.

  12. Деплой в Docker Swarm

    Чтобы одинаково запускать приложение в любой среде.

  13. Сборка проектов с GitLab CI: один .gitlab-ci.yml для сотни приложений

    Чтобы одинаково запускать приложение в любой среде.

Безопасность и управление доступом

  1. Вайбкод и безопасность: как не задеплоить уязвимости вместе с фичами

    Чтобы ограничивать доступ и защищать учётные записи.

  2. Разработчики всё ещё путают JWT, JWKS, OAuth2 и OpenID Connect — разбираем на примерах. Часть 2

    Чтобы ограничивать доступ и защищать учётные записи.

  3. Локальное хранилище или куки? Безопасное хранение JWT на клиенте

    Чтобы ограничивать доступ и защищать учётные записи.

  4. OAuth 2.0 -> OAuth 2.1. Что дальше?

    Чтобы ограничивать доступ и защищать учётные записи.

  5. RBACX — универсальный RBAC/ABAC-движок авторизации для Python

    Чтобы ограничивать доступ и защищать учётные записи.

  6. Токены доступа и API Gateway: как обеспечить безопасность запросов

    Чтобы ограничивать доступ и защищать учётные записи.

  7. OAuth 2.0

    Чтобы ограничивать доступ и защищать учётные записи.

  8. Реализация сервиса сканирования на основе OWASP ZAP

    Чтобы ограничивать доступ и защищать учётные записи.

  9. «РБПО для бедных»: сказ о том, как стартап безопасность прикручивал

    Чтобы ограничивать доступ и защищать учётные записи.

  10. Безопасность приложений на Typescript от А до Я: гайд по защите от очевидных и не очень уязвимостей

    Чтобы находить ошибки типов до запуска.

  11. Шпаргалки по безопасности: JWT

    Чтобы ограничивать доступ и защищать учётные записи.

  12. CI/CD Kubernetes платформа Gitorion. Реестр Docker-образов Harbor c аутентификацией в Keycloak и доступом по ролям RBAC

    Чтобы одинаково запускать приложение в любой среде.

  13. OWASP API Security Top 10 RC

    Чтобы ограничивать доступ и защищать учётные записи.

Планирование разработки

  1. Планирование проекта

    Чтобы выбрать приоритеты и согласовать действия.

Все подборки для Backend-разработчика →