JuniorPython Developer > Основы Python > Надёжность сервисов
Короткий ответ Retry — повторная попытка выполнить запрос после сбоя; без аккуратной настройки он может привести к дублированию операций и усилить нагрузку на уже перегруженный сервис. Как это работает подробнее Клиент перехватывает ошибку/таймаут и повторяет запрос через паузу, иногда с ограничением числа попыток. Пример кода Что использовать на практике Практика. Retry безопасен для идемпотентных операций (GET, PUT) или при защите идемпотентности; для операций без такой защиты (например, POST оплаты) повтор может задвоить списание. Подводные камни Риск. Ретраить без задержки (retry storm усиливает нагрузку на упавший сервис); ретраить ошибки, которые не являются временными (например, 400 Bad Request).
fault-tolerancereliability
JuniorPerformance Marketer > Google Ads > Рекламные платформы и форматы
Короткий ответ Quality Score — диагностическая оценка ключевого слова по шкале от 1 до 10, основанная на ожидаемом CTR, релевантности объявления и качестве целевой страницы. Компоненты помогают найти проблему, но сама оценка не является прямой ставкой в каждом аукционе. Как это работает подробнее В интерфейсе три компонента обычно показаны как выше среднего, средние или ниже среднего. Ожидаемый CTR оценивает вероятность клика, релевантность — соответствие текста запросу, а качество страницы — её полезность и удобство. Диагностика. Смотри на слабый компонент, а не только на итоговую оценку. Аукцион. Не путай Quality Score в интерфейсе с полной системой расчёта Ad Rank. Что использовать на практике Исправляй слабый компонент: объявление при низком CTR или релевантности, посадочную страницу при недостатке соответствующего контента. Подводные камни Не пытайся повысить Quality Score только увеличением ставки: она не исправляет релевантность или качество страницы.
expected-ctrgoogle-ads
JuniorDevOps Engineer > Контейнеры и доставка > Надёжность и инцидент-менеджмент
Короткий ответ Постмортем — это структурированный документ-разбор инцидента, описывающий хронологию, влияние (impact), корневые причины и план действий по предотвращению повторения; он "безвиновный", потому что фокусируется на системных причинах и процессах, а не на поиске конкретного виновного сотрудника. Как это работает подробнее blameless-подход основан на предположении, что люди не совершают ошибки специально — ошибки возникают из-за недостатков системы (неясная документация, отсутствие защитных механизмов, плохой UX инструментов), и именно эти недостатки нужно устранять. Пример / кейс Ожидаемое поведение: формулировка причины указывает на отсутствие процесса (нет review), а не обвиняет конкретного человека, и содержит измеримый, назначенный на команду action item. Пример кода Что использовать на практике Практический подход. Постмортем пишут после каждого значимого инцидента, включая таймлайн событий, итоговое влияние на пользователей, корневые причины (часто несколько) и конкретные action items с владе
blameless-cultureincident-response
JuniorDevOps Engineer > Контейнеры и доставка > Безопасность и DevSecOps
Короткий ответ Принцип наименьших привилегий — предоставление субъекту (пользователю, сервису, процессу) минимального набора прав, необходимого для выполнения его задач, и не больше. Как это работает подробнее вместо выдачи широких ролей (admin, root, *:*) права формируются по конкретным действиям и ресурсам, которые действительно нужны. Это ограничивает «блаcт-радиус» при компрометации аккаунта или сервиса — злоумышленник получит доступ только к тому, что разрешено скомпрометированному субъекту. Пример кода Что использовать на практике Практика. при создании IAM-роли или сервис-аккаунта начинают с пустого набора прав и добавляют только используемые действия (например, доступ на чтение к одному S3-бакету, а не ко всем ресурсам аккаунта). Регулярно пересматривают права (access review), особенно после смены задач сотрудника или сервиса. Проверка. Ожидаемое поведение: сервис с такой политикой сможет читать объекты только из example-reports-bucket и получит AccessDenied при попытке обратиться к любому другому бак
access-controliam
JuniorDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ Принцип наименьших привилегий означает выдачу ровно тех прав, которые необходимы для задачи, не больше; нарушение обычно выглядит как политика с "Action": "*" и "Resource": "*" или правами уровня администратора, выданными для узкой задачи. Как это работает подробнее политика доступа описывает, кто (principal), что (action) и над каким ресурсом (resource) может делать; чем точнее ограничены action и resource, тем меньше ущерб при компрометации учётных данных. Пример кода Что использовать на практике Рекомендация. начинают с минимального набора прав, нужного для конкретной функции, и расширяют только по явному запросу; используют отдельные роли для разных задач вместо одной «универсальной» роли. Проверка. сервис с такой политикой сможет читать только объекты из указанного префикса одного bucket и получит AccessDenied на запись или на другие bucket. Подводные камни Риск. выдавать административный доступ для CI-пайплайна «чтобы не разбираться с правами» Риск. копировать широкую политику из примера
cloud-securityiam
MiddlePython Developer > Основы Python > Django ORM
Короткий ответ Проблема N+1 возникает, когда для получения связанных данных по N строкам основного запроса ORM выполняет один дополнительный SQL-запрос на каждую строку (всего N+1 запросов) вместо одного объединённого запроса; решается через явную загрузку связей — select_related/prefetch_related в Django или joinedload/selectinload в SQLAlchemy. Как это работает подробнее Ленивая загрузка связанных объектов по умолчанию откладывает запрос к связанной таблице до момента обращения к атрибуту; в цикле по списку объектов это превращается в отдельный запрос на каждую итерацию. Пример кода Что использовать на практике Практика. Проблему обнаруживают через логирование SQL (django-debug-toolbar, echo=True в SQLAlchemy) или APM; select_related (JOIN, для ForeignKey) и prefetch_related (отдельный IN-запрос, для ManyToMany) в Django, joinedload/selectinload в SQLAlchemy решают проблему заранее указанной стратегией. Подводные камни Ошибка. Добавляют select_related на ManyToMany-связь — не работает, для таких связей нуже
django-ormn-plus-one
JuniorPerformance Marketer > Google Ads > Специфика рекламных площадок и каналов
Короткий ответ Программатик — это автоматизированная покупка рекламных показов через аукцион в реальном времени (RTB) на множестве разных сайтов и приложений одновременно; DSP (Demand-Side Platform) — платформа на стороне рекламодателя, через которую он задаёт таргетинг и ставки и покупает такой инвентарь у разных источников, в отличие от Google Ads/Meta, где инвентарь ограничен собственными площадками платформы. Как это работает подробнее когда пользователь открывает страницу с рекламным блоком, площадка через SSP отправляет запрос на показ в рекламные биржи, DSP в течение миллисекунд оценивает пользователя по доступным сигналам и подаёт ставку, после чего показ достаётся победителю аукциона; процесс повторяется для каждого отдельного показа. Что использовать на практике На практике. DSP даёт доступ к гораздо большему и разнообразному инвентарю по сравнению с закрытой экосистемой одной платформы, что удобно для охватных кампаний и ремаркетинга за пределами соцсетей и поиска, но требует отдельного контроля ка
ad-exchangead-inventory
JuniorDevOps Engineer > Контейнеры и доставка > Мониторинг, логирование и observability
Короткий ответ Распределённая трассировка — это способ отследить путь одного запроса через множество сервисов, записывая для каждого шага отдельный "спан" (span) с временем начала/конца и привязкой к общему trace_id; это позволяет увидеть, через какие сервисы прошёл запрос и сколько заняла каждая часть. Как это работает подробнее когда запрос входит в систему, ему присваивается уникальный trace_id; при каждом вызове между сервисами этот идентификатор передаётся дальше (через HTTP-заголовки или метаданные gRPC), и каждый сервис создаёт свой span с временем начала/окончания операции, родительским span_id и дополнительными атрибутами. Собранные спаны складываются в дерево — трейс, который можно визуализировать как временную диаграмму (например, в Jaeger, Tempo или Zipkin). Пример кода Что использовать на практике Практика. трассировка особенно полезна, когда нужно понять, где именно в цепочке из 5–10 сервисов "потерялось" время при обработке одного медленного запроса — без трейса пришлось бы вручную сопоставлять
distributed-tracingmonitoring
JuniorDevOps Engineer > Контейнеры и доставка > Реестры и распространение образов
Короткий ответ Registry — сервис хранения и распространения образов по именам и тегам/дайджестам (поддерживает docker push/docker pull); Docker Hub — крупнейший публичный registry, но в компаниях часто используют приватные реестры (Harbor, ECR, GCR, GitLab Registry и др.). Как это работает подробнее образ идентифицируется полным именем вида [registry-host/]namespace/repository:tag; если хост реестра не указан, по умолчанию используется Docker Hub. docker pull скачивает слои образа из реестра, docker push — загружает их туда, если у пользователя есть права на репозиторий. Пример кода Что использовать на практике Практика. публичные образы с Docker Hub удобны для готовых инструментов (базовые образы, популярные сервисы), но для внутренних приложений компании обычно нужен приватный реестр — с контролем доступа, сканированием на уязвимости и нередко географической близостью к инфраструктуре для быстрого pull. Подводные камни Риск. тянут неизвестные образы из публичных реестров без проверки источника (официальный
container-imagescontainer-registry
JuniorPerformance Marketer > Google Ads > Аудитории и ретаргетинг
Короткий ответ Ретаргетинговая аудитория состоит из людей, которые уже взаимодействовали с брендом (посетители сайта, подписчики, покупатели), тогда как аудитория проспектинга — это новые пользователи, ранее не контактировавшие с брендом. Как это работает подробнее Ретаргетинг строится на основе событий пикселя, списков CRM или вовлечённости в соцсетях и «догоняет» тех, кто уже показал интерес. Проспектинг использует широкий или интерес-таргетинг/look-alike, чтобы находить новых людей, похожих на целевую аудиторию. Что использовать на практике На практике. Ретаргетинг обычно даёт более высокий CTR и конверсию при меньшем объёме аудитории, а проспектинг — основной источник роста базы клиентов, но с более высокой стоимостью результата на старте. Пример. Ad set «Retargeting — посетители сайта за 14 дней» против ad set «Prospecting — широкий таргетинг 25-45 лет». Проверка: сравнить CPA каждого ad set отдельно, а не кампанию в целом. Подводные камни Частая ошибка. Частая ошибка — оценивать проспектинговую кампанию
ad-platformsaudience-targeting