JuniorDevOps Engineer > Контейнеры и доставка > CI/CD и управление релизами
Короткий ответ Автоматическая джоба деплоя запускается сама сразу после успешного прохождения предыдущих стадий; ручная (`when: manual` в GitLab CI или approval-джоба в GitHub Actions/Environments) ждёт, пока человек явно нажмёт кнопку запуска — это полезно для production, когда нужен контроль момента выкладки или дополнительное подтверждение. Как это работает подробнее ручной шаг не убирает автоматизацию самого процесса деплоя — скрипт выполняется так же, как при автоматическом запуске, разница только в триггере: ожидание действия человека вместо автоматического продолжения пайплайна. Пример кода Что использовать на практике На практике. ручной approve для прода часто сочетают с выбором времени релиза (не в пятницу вечером, не во время пиковой нагрузки), с дополнительной проверкой чеклиста перед выкладкой или с требованиями комплаенса (например, подтверждение от уполномоченного сотрудника). Для dev/staging обычно автоматический деплой, чтобы быстрее получать обратную связь. Пример. Ожидаемое поведение: после
cicd-and-release-managementci-cd-pipelines
MiddleData Analyst > SQL и данные > Статистика и теория вероятностей
Короткий ответ Статистическая значимость говорит, что наблюдаемое различие вряд ли объясняется случайностью; практическая значимость — о том, достаточно ли велик этот эффект, чтобы иметь реальную ценность для бизнеса. При очень больших выборках даже ничтожный по величине эффект может оказаться статистически значимым. Как это работает подробнее p-value зависит и от размера эффекта, и от размера выборки — при миллионах наблюдений даже разница конверсии в 0.01 п.п. может дать p < 0.05, но такая разница может не окупить затраты на внедрение изменения. Пример кода Что использовать на практике На практике. вместе с p-value стоит всегда смотреть на размер эффекта и его доверительный интервал, а также сопоставлять его с заранее определённым порогом практической значимости (MDE), который отражает, какой эффект вообще имеет смысл для бизнеса — с учётом стоимости разработки, поддержки и рисков. Решение о раскатке фичи должно опираться на оба аспекта, а не только на «p < 0.05». Полезно заранее в плане эксперимента зафикс
confidence-intervaleffect-size
MiddleDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ Blue/green разворачивает полностью новую копию окружения параллельно со старой и переключает весь трафик разом после проверки, обеспечивая быстрый откат переключением обратно; canary постепенно направляет небольшую, растущую долю трафика на новую версию, позволяя обнаружить проблему на ограниченной части пользователей. Как это работает подробнее при blue/green обе версии полностью развёрнуты одновременно, а переключение происходит на уровне балансировщика/DNS практически мгновенно для всех пользователей сразу; при canary балансировщик направляет, например, 5% трафика на новую версию, постепенно увеличивая долю при отсутствии ошибок. Пример кода Что использовать на практике Рекомендация. blue/green проще реализовать и даёт быстрый полный откат, но не защищает от проблем, проявляющихся только под полной нагрузкой; canary лучше обнаруживает проблемы, зависящие от реальной продовой нагрузки, но требует более сложной маршрутизации по процентам и метрик для автоматического решения. Проверка. при обна
blue-greencanary-deployment
JuniorDevOps Engineer > Контейнеры и доставка > Мониторинг, логирование и observability
Короткий ответ Структурированный лог записывается в виде набора полей с именами (обычно JSON: level, msg, service, trace_id и т.д.), а не произвольной строки текста; это позволяет системе агрегации логов искать, фильтровать и строить метрики по конкретным полям, а не парсить текст регулярными выражениями. Как это работает подробнее вместо строки "2024-05-01 10:02:11 ERROR checkout: payment failed for order a1b2" структурированный логгер пишет {"ts":"...","level":"error","service":"checkout","msg":"payment failed","order_id":"a1b2"}. Система агрегации (Elasticsearch, Loki с label-ами) может индексировать каждое поле отдельно и строить быстрые запросы по ним. Пример кода Что использовать на практике Практика. структурированные логи особенно важны в микросервисной архитектуре, где нужно быстро отфильтровать логи по service, trace_id или order_id среди миллионов строк от десятков сервисов; для нового проекта разумно сразу выбирать JSON-логирование через стандартную библиотеку логирования языка (например, logrus/z
loggingmonitoring
JuniorPerformance Marketer > Google Ads > Тестирование гипотез и запуск изменений
Короткий ответ Заголовок обычно сильнее влияет на то, насколько пользователь понимает оффер и релевантность объявления своему запросу, а изображение — на то, насколько объявление визуально привлекает внимание в ленте; оба влияют на CTR, но через разные механизмы. Как это работает подробнее В текстовых/поисковых форматах заголовок часто определяет релевантность и соответствие намерению пользователя, тогда как в визуальных форматах (лента соцсетей) изображение первым «останавливает скролл», а заголовок/текст работают уже после привлечения внимания. В видео-форматах к этому добавляются ещё и первые 2-3 секунды ролика, которые часто решают, досмотрит ли пользователь рекламу или пролистает её. Пример. В Google Ads тест двух заголовков поискового объявления с разным УТП меняет CTR с 3% до 4.5% за счёт лучшего соответствия запросу; в Meta Ads аналогичный тест двух изображений при одинаковом тексте меняет CTR с 1.2% до 2.1% за счёт более яркой картинки. Что использовать на практике Практика. В зависимости от формата
ab-testingad-creatives
MiddlePerformance Marketer > Google Ads > Рекламные платформы и форматы
Короткий ответ Dynamic Creative автоматически сочетает элементы объявления и распределяет показы по выбранной оптимизации, что помогает искать рабочие комбинации. A/B-тест сравнивает заранее заданные варианты с контролируемым разделением аудитории и лучше подходит для строгого выбора целого креатива. Как это работает подробнее Dynamic Creative может неравномерно показывать разные сочетания, поэтому сравнение отдельных элементов не всегда является чистым экспериментом. A/B-тест делит аудиторию между вариантами, чтобы уменьшить взаимное влияние. Dynamic Creative. Полезен для исследования комбинаций изображений, заголовков и текстов. A/B-тест. Подходит для сравнения готовых креативов с заданной метрикой. Сравнение Dynamic Creative — для поиска комбинаций элементов — не гарантирует строгого причинного сравнения каждого элемента. A/B-тест — для выбора целого варианта — требует контролируемого разделения и объёма данных. Что использовать на практике Используй динамические комбинации для поиска кандидатов, а критичн
ab-testingcreative-optimization
JuniorSMM Manager > Общее > Площадки и основы SMM
Короткий ответ Истории — это формат контента, который по умолчанию отображается ограниченное время (обычно 24 часа) в отдельной горизонтальной панели над основной лентой и подаётся как последовательность полноэкранных карточек, тогда как обычный пост остаётся в ленте и профиле постоянно и просматривается в общем потоке публикаций. Как это работает подробнее истории показываются отдельно от основной ленты, часто в виде кружков или миниатюр в верхней части приложения, и пролистываются одна за другой с таймером на каждой карточке, а не скроллом. Что использовать на практике Рекомендация. формат истории хорошо подходит для более неформального, «живого» контента (закулисье, опросы, быстрые анонсы), который не нужно держать в профиле постоянно, тогда как в обычный пост обычно выносят то, что должно остаться доступным и находимым позже. Подводные камни Риск. дублирование одного и того же контента в историях и в посте без изменения формата подачи; забывать, что после истечения срока история исчезает из общей видимост
content-formatshorizontal-video
MiddlePython Developer > Основы Python > Алгоритмы и типовые задачи
Короткий ответ Хороший код следует PEP 8, читаем, разбит на небольшие функции с ясными именами, лишён дублирования и магических чисел, обрабатывает краевые случаи и покрыт тестами. Плохой код нечитаем и трудно поддерживать. Алгоритмическую задачу решают по методике: понять условие, оценить сложность, написать рабочее решение, затем оптимизировать и протестировать. Как это работает подробнее Разница между хорошим и плохим кодом видна в читаемости, структуре и тестах, а надёжная методика решения задач помогает не начинать писать код наугад. PEP 8. Свод рекомендаций по оформлению кода: отступы, именование, длина строк; следование ему делает код единообразным и лёгким для чтения коллегами. Структура кода. Хороший код решает задачу просто, разбит на небольшие функции с понятными именами, лишён дублирования и обрабатывает краевые случаи. Тесты и сопровождение. Покрытие тестами — признак зрелого кода; плохой код нечитаем, полон магических чисел и скрытых побочных эффектов, поэтому его страшно менять. Понимание задач
code-qualitypep8
JuniorData Analyst > SQL и данные > Продуктовые и бизнес-метрики
Короткий ответ Activation — это разовое событие, когда пользователь впервые совершает действие, показывающее, что он понял ценность продукта (aha-moment); retention — это многократное возвращение пользователя в продукт со временем. Как это работает подробнее activation измеряется как доля новых пользователей, достигших определённого действия в первые N минут/дней (например, добавил первого друга, создал первый проект); retention измеряется на более длинном горизонте и повторяется для каждого периода (день 1, 7, 30). Что использовать на практике Применение. activation — предиктор будущего retention: продукты часто находят "магическое число" (например, "добавил 7 друзей за 10 дней" у соцсети), которое сильно коррелирует с долгосрочным удержанием, и фокусируют онбординг на достижении этого порога. Проверка или пример. Для мессенджера: activation = "отправил первое сообщение в первые 24 часа"; retention = "вернулся и отправил сообщение на 7-й день". Проверка связи: сравнить D7 retention у тех, кто достиг activati
activationonboarding
MiddlePython Developer > Основы Python > Стратегии развёртывания
Короткий ответ Blue-green разворачивает новую версию параллельно со старой и переключает весь трафик одним разом с быстрым откатом переключением обратно, а canary постепенно направляет небольшую долю трафика на новую версию; canary выбирают, когда важно обнаружить проблему на малой доле пользователей, blue-green — когда нужен быстрый простой откат «всё или ничего». Как это работает подробнее blue-green требует двух полных независимых окружений и механизма переключения на уровне роутинга; canary требует более тонкого контроля трафика и системы мониторинга, способной сравнить метрики с baseline. Пример кода Что использовать на практике Рекомендация. для сервиса с БД нужно продумать обратную совместимость схемы между старой и новой версией в обоих подходах, так как они одновременно читают/пишут одни таблицы; canary лучше ограничивает blast radius для рискованных изменений, blue-green подходит для хорошо протестированных изменений с важной скоростью релиза. Подводные камни Риск. считать canary автоматически «безо
blue-green-deploymentcanary-deployment