SeniorPerformance Marketer > Google Ads > Рекламные платформы и форматы
Короткий ответ Единого ответа нет: Performance Max может расширить инвентарь и объём сигналов, но снижает прозрачность и гранулярность управления. Решай через контролируемый тест с проверкой инкрементального результата, брендового трафика, атрибуции и операционных затрат. Как это работает подробнее Performance Max распределяет расходы по нескольким ресурсам Google. Классический Search сохраняет более явный контроль над запросами и структурой. Рост кабинетного ROAS после миграции может объясняться присвоением брендового спроса, а не новым эффектом. Тест. Сравни сопоставимые сегменты или географии, а не только общие отчёты. Критерии. Учитывай брендовый трафик, новых клиентов, качество данных и затраты на контроль. Сравнение Performance Max — для масштаба и автоматического распределения — меньше детального контроля. Search-структура — для контроля запросов и прозрачности — выше ручные трудозатраты. Что использовать на практике Проведи ограниченный эксперимент, заранее зафиксируй метрики и проверь пересечение бре
campaign-controlincrementality
MiddleDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ Вместо создания IAM-пользователя с долгоживущими ключами создают роль с узко ограниченной политикой доступа и настраивают доверие так, чтобы её мог принять (assume) только конкретный внешний аккаунт/сервис, желательно с дополнительным условием (external ID), после чего выдают подрядчику только ARN роли и способ её принять. Как это работает подробнее trust-политика роли определяет, кто имеет право сделать AssumeRole, а сама роль получает только минимально необходимые разрешения; принявший роль получает временные токены с ограниченным сроком жизни вместо постоянных секретов. Пример кода Что использовать на практике Рекомендация. для повторяющегося стороннего доступа используют cross-account role с external ID, чтобы предотвратить «confused deputy» атаку; для доступа из CI/CD предпочитают workload identity federation / OIDC-доверие вместо хранения облачных ключей в секретах CI. Проверка. подрядчик может вызвать AssumeRole только с правильным external ID и только с указанного аккаунта, получает вре
cross-account-accessexternal-id
MiddleSMM Manager > Общее > Безопасность автоматизации
Короткий ответ Нужно немедленно отозвать/перевыпустить токены доступа всех подключённых сообществ, проверить историю публикаций и настроек на признаки несанкционированных действий, уведомить руководство и, при необходимости, подготовить план коммуникации с аудиторией. Как это работает подробнее большинство платформ позволяют отозвать выданные приложению права доступа (токены/API-ключи) через настройки безопасности сообщества/страницы, после чего сервис теряет возможность публиковать от имени бренда до повторной авторизации. Что использовать на практике Действия. После отзыва доступа нужно проверить журнал последних действий (если площадка его предоставляет) на предмет публикаций, изменений в описании сообщества или рассылок, которые менеджер не совершал. Также. Параллельно нужно зафиксировать инцидент и согласовать с руководством/юристами, нужно ли публичное уведомление аудитории, если есть признаки компрометации. Проверка. Сервис автопубликации сообщает об утечке токенов 1 октября. Менеджер в тот же день отз
access-controlapi-tokens
SeniorPython Developer > Основы Python > Архитектура веб-API
Короткий ответ Новые обязательные поля вводят как необязательные с безопасным значением по умолчанию на переходный период, удаление/сужение существующих полей делают поэтапно (сначала отметить как deprecated и логировать использование, затем ограничить только после подтверждённого отсутствия использования), а не вносят breaking-изменение одним релизом. Как это работает подробнее Схема валидации — это контракт между клиентом и сервером; любое сужение допустимых значений (новое обязательное поле, более строгий тип, уменьшение допустимого диапазона) потенциально отклоняет ранее валидные запросы существующих клиентов. Безопасная эволюция обычно идёт через расширение (добавление необязательных полей) и постепенное сужение только после того, как подтверждено (например, через логирование/метрики), что все клиенты уже используют новый формат. Постепенное расширение схемы безопаснее для существующих клиентов, но временно усложняет код (поддержка старого и нового формата одновременно) и создаёт технический долг до заве
django-rest-frameworkfastapi
MiddleDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ Начинают с разбивки расходов по сервисам, регионам и тегам за период в инструменте биллинг-аналитики провайдера, сравнивают с предыдущим периодом, чтобы локализовать основной прирост, а затем проверяют этот конкретный компонент на предмет забытых/избыточных ресурсов, изменения конфигурации или аномального использования. Как это работает подробнее биллинговые инструменты провайдера позволяют группировать затраты по сервису, региону и тегу и смотреть динамику по дням, что быстро показывает, вырос ли счёт равномерно или из-за одного компонента. Пример кода Что использовать на практике Рекомендация. типичные находки — забытые тестовые ресурсы, не удалённые после эксперимента; переход с reserved на on-demand после истечения резервации; рост объёма логов/снапшотов без lifecycle-политики; баг, вызывающий аномальный автоскейлинг или retry storm. Проверка. после удаления/переноса в архивный класс найденного источника роста и настройки lifecycle-политики следующий счёт должен вернуться к ожидаемому уровн
cloud-billingcost-anomaly
SeniorPython Developer > Основы Python > Индексы и производительность
Короткий ответ Шифрование на уровне диска/тома защищает данные только «в покое» и полностью прозрачно для SQL-слоя — индексы и запросы работают как обычно, но не защищает от доступа через скомпрометированную учётную запись БД; column-level шифрование через pgcrypto защищает конкретное поле даже от доступа с правами на таблицу, если ключ хранится отдельно от БД, но делает обычный поиск/сравнение/сортировку по этому полю в зашифрованном виде невозможными без расшифровки. Как это работает подробнее pgcrypto предоставляет функции pgp_sym_encrypt/pgp_sym_decrypt, которые шифруют значение перед записью и расшифровывают при чтении с передачей ключа как параметра запроса; хранимое значение — бинарные зашифрованные байты, поэтому обычный индекс на этой колонке бесполезен для поиска по исходному значению. Сравнение Компромисс. TDE/шифрование диска проще внедрить и не влияет на производительность и индексацию, но защищает от более узкого набора угроз; column-level шифрование защищает от более широкого класса угроз, но т
encryptionindexes
SeniorData Analyst > SQL и данные > SQL
Короткий ответ Единого решения нет: стратегия зависит от типичных фильтров в реальных запросах и от конкретной СУБД — в PostgreSQL это декларативное партиционирование по дате плюс индексы, в ClickHouse — ключ партиционирования (PARTITION BY) и ключ сортировки (ORDER BY), в BigQuery — партиционирование по дате и кластеризация по часто фильтруемым столбцам; выбор всегда компромисс между скоростью чтения, скоростью записи и операционной сложностью. Как это работает подробнее партиционирование физически разделяет таблицу на меньшие сегменты (обычно по диапазону дат), позволяя запросу с фильтром по этому диапазону читать только нужные сегменты (partition pruning); кластеризация/сортировочный ключ внутри сегмента дополнительно упорядочивает данные так, чтобы фильтрация по вторичным столбцам также требовала меньше операций ввода-вывода. Компромисс. более мелкое партиционирование и более специфичная кластеризация ускоряют конкретные частые запросы, но увеличивают операционную сложность (больше партиций для мониторинг
bigqueryclickhouse
SeniorPython Developer > Основы Python > Индексы и производительность
Короткий ответ Партиционирование по диапазону дат обычно лучший выбор для таблиц событий/логов, так как совпадает с паттерном доступа (чаще читают/пишут свежие данные) и позволяет дешёво удалять старые данные целыми партициями (DROP PARTITION) вместо построчного DELETE; партиционирование по хешу даёт равномерное распределение без «горячего» диапазона, но не даёт дешёвого способа избавляться от старых данных и не ускоряет диапазонные запросы по времени. Как это работает подробнее PostgreSQL Declarative Partitioning создаёт родительскую таблицу и набор физических партиций-наследников; планировщик использует partition pruning, чтобы при запросе с условием на партиционирующий ключ сканировать только нужные партиции, что также уменьшает объём данных для VACUUM/ANALYZE. Сравнение Компромисс. Range-партиционирование по дате даёт удобное устаревание данных, но требует дисциплины по созданию новых партиций вовремя и миграции существующей большой таблицы на партиционированную структуру (обычно через создание новой табл
indexespartitioning
JuniorData Analyst > SQL и данные > Аналитическое мышление
Короткий ответ Разбиваю на шаги: уточнение определения «оттока», описательная статистика по оттоку в разрезах, поиск сегментов с наибольшим оттоком, выдвижение и первичная проверка гипотез о причинах, и подготовка выводов для бизнеса. Как это работает подробнее «проанализировать отток» — слишком широкая формулировка; без декомпозиции на конкретные вопросы легко утонуть в данных, не дав полезного результата к дедлайну. Пример кода Что использовать на практике Порядок действий. подзадачи: 1) согласовать определение оттока (например, «нет оплат 60+ дней»); 2) посчитать базовый уровень оттока и его динамику по месяцам; 3) разбить по сегментам (тариф, канал привлечения, срок жизни клиента), чтобы найти, где отток выше; 4) выдвинуть 2–3 гипотезы о причинах на основе разбивок и доступных данных (цена, качество продукта, конкуренты); 5) обобщить находки в выводы и рекомендации, явно отметив, что подтверждено данными, а что остаётся предположением. Подводные камни Частые ошибки. начинать с построения сложной модели от
churncohort-analysis
JuniorData Analyst > SQL и данные > Аналитическое мышление
Короткий ответ Нужно уточнить, какое событие считается «активностью» (любой визит, целевое действие, оплата), учитываются ли боты/тестовые аккаунты, и в каком часовом поясе считается календарный день/месяц. Как это работает подробнее DAU/MAU — это агрегаты по уникальным пользователям за период, но сам период и определение «активности» не стандартизированы — разные команды могут считать по-разному, что даёт несравнимые цифры. Пример кода Что использовать на практике Порядок действий. перед расчётом уточняю: 1) какое событие = активность (login, любое событие, конкретное действие в продукте); 2) включать ли гостевых/неавторизованных пользователей; 3) часовой пояс для границ суток/месяца; 4) исключать ли тестовые/внутренние аккаунты. Фиксирую эти допущения в документации к отчёту. Подводные камни Частые ошибки. считать DAU по всем событиям без уникализации по user_id; не согласовать определение с предыдущими отчётами, из-за чего цифры «не бьются» с историческими; забыть про часовой пояс, что сдвигает границы дня
active-usersdau