data pipeline — это цепочка последовательных операций обработки данных надёжность достигается за счёт обработки ошибок, повторных попыток и мониторинга масштабируемость обеспечивают распределённые системы и…
сервис для подсчёта просмотров видео в интернете основные требования: высокая производительность под нагрузкой, точность подсчётов и возможность масштабирования приём событий о просмотрах через API или SDK,…
Как проверять сервис, работающий с БД и внешними системами? Уровни тестирования: юнит-тесты, интеграционные тесты, e2e На уровне юнит-тестов использовать моки и стабы для внешних API и запросов к БД Проводить…
область: системы типов, интерфейсы в большинстве языков, включая Go и C#, реализация интерфейса неявная и не требует отдельной декларации тип считается реализующим интерфейс, когда в нём определены все методы…
изучить план выполнения с помощью EXPLAIN/EXPLAIN ANALYZE найти узкие места: сканирование таблиц и отсутствие индексов проверить и создать индексы для часто используемых колонок переписать запрос: упростить JOIN и по…
Профилирование запроса и поиск узких мест Индексация авторского поля: создание индекса по имени Кэширование результатов часто выполняемых запросов Вертикальное или горизонтальное масштабирование БД Переход на…
Аналитика и оптимизация запросов Подбирать подходящие индексы — B-tree, GIN или GiST — для ускорения выборок Использовать партиционирование для таблиц с диапазонными и временными данными Применять материализованные…
Hibernate — Java ORM, в котором по умолчанию используется ленивая загрузка Проблема N+1 возникает, когда один запрос выбирает основные данные, а ещё N запросов обращаются к связанным объектам при ленивой загрузке…
Как устранить проблему N+1 для связанных сущностей? Проблема N+1: вместо одного выполняется множество запросов Причина: отложенная (lazy) загрузка связанных данных Базовое решение: жадная загрузка (eager loading)…
Как устранить проблемы "волшебных чисел"? область разработки и качество кода "волшебные числа" — необъяснимые статические константы, напрямую записанные в коде усложняют чтение и сопровождение программы создают риск…
Spring DI — механизм внедрения зависимостей, работающий внутри IoC-контейнера Управлением объектами занимаются Bean Factory и ApplicationContext Компоненты автоматически создаются и связываются по типу или аннотациям…
в HTTP/1.1 предусмотрена поддержка постоянных соединений Keep-Alive оставляет TCP-соединение открытым после завершения запроса даёт возможность последовательно выполнять несколько запросов через одно соединение…