Обновить
256K+

DevOps *

Методология разработки программного обеспечения

497,13
Рейтинг
Сначала показывать
Порог рейтинга

Подключайтесь к вебинару — покажем, как автоматизировать управление сложной инфраструктурой

Когда часть сервисов находится в облаке, а остальное — в изолированных контурах, доставка серверного ПО и контроль лицензий превращаются в настоящий квест для команды DevOps.

На вебинаре расскажем, как собрать весь зоопарк решений в единую систему с помощью MWS B2B Store. Разберем деплой инсталляций, когда разные ноды находятся на разных инфраструктурных провайдерах, доставку и обновления в закрытых контурах, версионирование и распространение внутренних и внешних решений.

В прямом эфире в режиме демо покажем:

  • Деплой сервисов (VMware + K8S) для разных сред, имплементацию Terraform as a service.

  • Автоматическое развертывание в изолированные контуры: от стандарта упаковки до «раскатки» в гибридную инфраструктуру.

  • Как управлять лицензиями на серверное ПО и контролировать, кто, где и сколько использовал.

  • Работу с инстансами из разных инфраструктур в едином окне: мониторинг, аудит и управление жизненным циклом.

Будет полезно CTO, DevOps, директорам по инфраструктуре и тимлидам инфраструктурных команд.

📅 Когда: 30 июня в 11:00 мск.

📍 Где: онлайн. Зарегистрируйтесь, подключайтесь и задавайте вопросы нашим экспертам в чате трансляции.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Новая лабораторная уже в субботу 27 июня! 👩‍🔬 Учимся проектировать API 🛠

Подробнее: https://debugskills.ru/content?article=labs/openapi-rest

Получить доступ: https://boosty.to/polnyistek

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Лето и ИТ: как их совместить с прицелом на будущее? Отправьте резюме к нам в SSP SOFT

Про нас как работодателя: компания SSP SOFT работает в сфере заказной разработкой ПО и предоставляет выделенные команды по модели ИТ-аутсорсинга для крупных клиентов. Размер компании мы «средний бизнес» с числом сотрудников около 500 человек, и с проектами федерального уровня.

Рабочие места у нас в московском офисе, в ЦАО у самой Красной площади. А еще вакансии в департамент в Томске и почти всегда на «удаленку» из любой точки России.

Ищем сотрудников — живых, неравнодушных, готовых пробовать новое. Тех, кто не боится сложного, не бежит от нестандартного и умеет видеть результат за строчками кода.

Почему вам у нас понравится:
— Здесь интересно применять знания на реальных проектах, а не просто «отрабатывать ставку»
— Здесь не боятся обсуждать сложные вопросы
— Здесь работа оставляет силы на семью, хобби и желание развиваться

Что мы даем взамен:
— Гибкость: удаленка, офис в Москве или Томске, гибридный формат
— Поддержку здоровья и обучения (ДМС и курсы по твоему выбору)
— Атмосферу, где твое мнение важно

📢 Мы ищем прямо сейчас (актуальность проверяйте по ссылке на хх ниже):

1️⃣ DevOps Engineer (MLOps)
2️⃣ Ведущего аналитика 1С (финансовый контур, КТ 2000)
3️⃣ Функционального архитектора 1С
4️⃣ SAP WMS Консультанта
5️⃣ Tech Lead (финтех, инвестиции)

Подробности о вакансиях читайте на нашей странице ХХ.ру, но там откликаться необязательно. Ждем резюме напрямую в ЛС нашей HR Lead (https://t.me/AONikitina).
Не забудьте добавить «секретную фразу» в сопроводительное письмо, «Увидел(а) вашу вакансию на Хабре».

Желаем всем хабровцам успешной карьеры в 2026 году 🚀

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии3

Зачем провайдеру помогать клиенту снижать счёт за облако

Облачный счёт редко становится проблемой за один день
Облачный счёт редко становится проблемой за один день

Обычно всё растёт постепенно: сервисов стало больше, команды активнее используют инфраструктуру, появились новые тестовые среды, где-то добавились AI-нагрузки, где-то остались временные инстансы после задачи.

Потом приходит счёт, и начинается разбор.

— Кто создал ресурс?
— Он ещё нужен?
— Можно ли его выключить?
— Почему рост увидели только в конце месяца?
— Кто должен отвечать за такие расходы: финансы, инженеры, продуктовая команда или владелец сервиса?

На этом месте появляется ещё один вопрос, уже к рынку:

зачем облачному провайдеру помогать клиенту платить меньше?

На первый взгляд это конфликт интересов. Клиент оптимизирует расходы, провайдер получает меньше. Но в облачной модели всё устроено сложнее, чем простая связка «меньше потребил, меньше заплатил».

В новом выпуске «Практики FinOps» мы поговорили об этом с Александром Либкиндом, руководителем направления развития сервисов управления затратами в Cloud.ru.

О чём выпуск

Разговор получился не про разовые скидки и не про универсальный способ «порезать облако».

В центре выпуска, управление затратами на инфраструктуру: как компании начинают видеть расходы, где возникают первые сложности, почему месячного отчёта часто недостаточно и что меняется, когда облако становится заметной частью ИТ-бюджета.

Отдельно обсудили, как провайдер смотрит на оптимизацию со своей стороны и почему снижение счёта клиента не всегда означает прямую потерю для облачной платформы.

Какие вопросы разобрали

  • почему FinOps в России развивается медленнее, чем на западных рынках;

  • зачем Cloud.ru помогает клиентам снижать счета;

  • где обычно находятся первые 15–30% экономии;

  • почему отчёт раз в месяц плохо работает для управления затратами;

  • чем FinOps для AI отличается от классического FinOps;

  • почему автоматические рекомендации не решают проблему без владельцев ресурсов и процессов;

  • как компании проходят этап Inform и почему на нём часто начинаются сложности.

Для кого выпуск

Для команд, которые уже используют облако и сталкиваются с вопросами стоимости инфраструктуры.
Для инженеров, которые видят ресурсы, но не всегда видят их финансовый эффект.
Для финансовых и продуктовых команд, которым важно понимать, из чего складываются облачные расходы и почему общий счёт сам по себе не помогает принимать технические решения.
Для тех, кто только подходит к FinOps и хочет понять, с чего обычно начинается системное управление затратами.

Смотреть выпуск:
YouTube
Rutube
VK Видео

Мы в телеграм. Подписывайтесь.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

Открытые уроки для прокачки: Linux, backend, ИИ, безопасность и управление

Эта неделя хорошо закрывает сразу несколько рабочих зон: инфраструктуру, backend, безопасность, ИИ, аналитику и управление. Темы подобраны так, чтобы за один открытый урок можно было не просто «послушать про тренды», а разобраться в конкретной задаче: от cache и swap в Linux до проектирования аутентификации, SRE-инцидентов, NLP и системного анализа.

Все уроки бесплатные и проходят с преподавателями-практиками OTUS — можно познакомиться с экспертами, протестировать формат обучения и задать вопросы по теме.

Linux, DevOps и инфраструктура

  • 22 июня, 20:00. «Память в Linux. Cache, swap, dirty pages». Записаться

  • 22 июня, 20:00. «Роль и задачи DevOps в современном IT». Записаться

  • 24 июня, 20:00. «Инцидент-менеджмент в SRE. Как быстро находить, устранять и предотвращать сбои в системе». Записаться

  • 25 июня, 19:00. День открытых дверей курса «Администратор Linux. Продвинутый уровень». Записаться

Backend и разработка

  • 22 июня, 20:00. «Контейнеризация Java-приложений с Docker». Записаться

  • 24 июня, 20:00. «RabbitMQ против Kafka — что выбрать для вашей структуры: сравнение и лучшие практики». Записаться

  • 24 июня, 20:00. «Отказоустойчивый и высокодоступный кластер RabbitMQ». Записаться

  • 25 июня, 20:00. «Кеширование в ASP.NET Core: от IMemoryCache до Redis». Записаться

Информационная безопасность

  • 22 июня, 20:00. «OAuth 2.0, JWT и коварные куки: проектируем безопасную аутентификацию». Записаться

  • 22 июня, 20:00. «Киберпанк для CISO — щит и меч ИИ». Записаться

  • 22 июня, 20:00. «Анализ журналов событий ОС Windows». Записаться

ИИ, ML и NLP

  • 22 июня, 20:00. «Продвинутое структурирование промптов: как получать предсказуемый результат». Записаться

  • 22 июня, 20:00. «ИИ-агенты против младших разработчиков: кто кого заменит к концу 2026 года». Записаться

  • 23 июня, 20:00. «Обзор инфраструктуры Ollama». Записаться

  • 25 июня, 18:00. «Ландшафт современного NLP: от эмбеддингов и классических ML-методов до современных LLM». Записаться

Data, аналитика и базы данных

  • 23 июня, 20:00. «ClickHouse: интеграция с Postgres, Kafka, S3 и Superset — готовые решения». Записаться

Системный анализ

  • 24 июня, 20:00. «Внедрение новой функции системным аналитиком на примере услуги на Госуслугах». Записаться

  • 25 июня, 20:00. «Какие навыки прокачать, чтобы стать экспертом в системном анализе в 2026 году». Записаться

Управление, продукт и Agile

  • 23 июня, 20:00. «Как тимлиду победить синдром самозванца». Записаться

  • 24 июня, 20:00. «Ретроспектива в Agile: что это, нужна ли она и как сделать её полезной». Записаться

  • 24 июня, 20:00. «Топ-навыки менеджера продукта в 2026 году». Записаться

  • 24 июня, 20:00. «Кто такой COO и почему он нужен сейчас». Записаться

Это только часть программы недели. Ещё больше тем, направлений и открытых уроков собрали в дайджесте — выбирайте то, что ближе к вашим задачам сейчас.

Теги:
Всего голосов 5: ↑4 и ↓1+6
Комментарии0

▶️ История USmall — хайлоад изнутри

6+ млн товаров, 130 ритейлеров и до 70 млн запросов во время распродаж. Мигрировали USmall в наше облако и записали видеокейс о том, как устроена инфраструктура такого проекта.

Из любопытного:

1️⃣ 130 площадок — 130 изолированных контуров. На каждую свой репозиторий и Docker-образ. Релизы независимы, все изменения изолированы.

2️⃣ Свой механизм иерархических подов. В основе паттерн одноразовых подов — каждый выполняет один цикл и завершается. Поверх него команда построила иерархию, где родительский под запускает дочерние. Так обходят ограничение Python по пропускной способности одного воркера и обрабатывают задачи параллельно.

3️⃣ Выделенный сервер под оркестратор. Когда Airflow потребовалась отдельная конфигурация, под него собрали сервер на двух 32-ядерных процессорах и перенесли без простоя.

4️⃣ AI прямо в Kubernetes-кластере. В тестовом режиме крутится нейросеть, которая ускоряет подключение новых магазинов.

Все это команда ведет сама — новые ноды добавляет за пару минут через панель, без отдельных DevOps-инженеров. А инфраструктура у нас вышла на 35% дешевле прежнего провайдера — при том же объеме.

В видео Станислав, руководитель Python-разработки USmall, рассказывает про архитектуру и почему выбрали наше облако.

Смотреть видеокейс на ютубе, рутубе и в вк.

Или читать подробный разбор на сайте →

Теги:
Всего голосов 10: ↑10 и ↓0+17
Комментарии2

Многодоменная архитектура: почему бэкап одного домена не восстанавливает сервис

В инфраструктурных проектах иногда возникает идея разделить окружение на несколько доменов:

  • пользователи – в одном контуре;

  • серверы и рабочие станции – в другом;

  • тестовая среда – в третьем.

На схеме это выглядит логично: сегментация, изоляция ошибок, разные зоны ответственности, поэтапная миграция без шуму и пыли.

Но в эксплуатации важен не только вопрос «где лежит объект».

Важнее другое: какие зависимости связывают объекты между собой.

Многодоменная архитектура не опасна сама по себе. Проблема начинается тогда, когда её начинают восстанавливать как набор независимых доменов.

Сценарий

Пользователь – в домене A.
Рабочая станция – в домене B.
Группа доступа к приложению – в домене C.

Цепочка доступа:

учётная запись → группа → DNS → доверие между доменами (Kerberos) → права на сервере.

Каждый компонент по отдельности может выглядеть исправным:

KDC отвечает. LDAP-серверы доступны. DNS разрешает имена. Билеты выдаются. Группа существует. Пользователь в группе.

А доступ к приложению всё равно не работает.

Почему? Потому что сломался не отдельный объект, а связь между объектами.

Именно здесь обычная логика «объект изменился → нашли резервную копию → восстановили объект» перестаёт быть достаточной.

В многодоменной среде важно уметь восстановить не только объект, но и связность: группы, доверительные отношения между доменами, DNS SRV-записи, Kerberos-зависимости и порядок применения политик.

Что стоит проверить заранее

  • Основной источник данных – где создаются пользователи, где живут группы, какие домены участвуют в кросс-аутентификации.

  • Карта доверительных отношений – какие домены доверяют друг другу, в каком направлении работает доверие и что произойдёт, если одно звено станет недоступным.

  • Контур восстановления – какие домены можно восстанавливать отдельно, а какие требуют жёсткой последовательности: например, сначала восстановить домен A, проверить состояние доверия к B и только потом тестировать доступ.

  • DNS и Kerberos – понимаем ли мы, как после восстановления домены находят друг друга? Не разъедутся ли ключи на сервисах и контроллерах, если восстановление идёт из старого снепшота? При откате может измениться KVNO в SPN-записях, и Kerberos-аутентификация для ресурсов сломается, хотя формально всё «зелёное».

  • Сквозной тест доступа – проверяем не только доступность серверов, а весь путь: пользователь из одного домена должен получить доступ к ресурсу в другом.

Главный вывод

Многодоменная архитектура – это не просто «удобно разделили контуры». Это более сложная эксплуатационная модель.

Если пользователи, ресурсы, группы и политики разнесены по разным доменам, план восстановления должен описывать всю цепочку, а не один объект.

Иначе гибкость на этапе проектирования превращается в непрозрачность при первой серьёзной аварии.

Коллеги, тестируете восстановление всей цепочки доступа или только каждый домен по отдельности?

#Linux #Инфраструктура #Backup

 

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Подборка вебинаров на июнь 

В июне вас ждут еще три онлайн-встречи с экспертами Cloud.ru — о Spark, облачных расходах и Redis. Регистрируйтесь заранее, чтобы ничего не пропустить.

🎥Spark Connect для ИТ-команд: упрощаем разработку и работу с данными

Покажем, как сделать использование Apache Spark удобным для всей команды с помощью Spark Connect и Evolution Managed Spark. Затронем вопросы разработки в IDE, анализа данных в Jupyter и построения ETL на чистом SQL в dbt. Не бойтесь споткнуться о порог входа — здесь он минимальный. 

🧑‍💻 Для кого: дата-инженеры, аналитики, руководители дата-отделов.

📅 Когда? 23 июня 11:00 мск.

📍 Где? Онлайн. Зарегистрируйтесь, чтобы задать вопросы спикерам.

🎥Как управлять расходами в облаке и не удивляться счетам

Разберем, как сделать облачные расходы прозрачными с помощью FinOps-инструментов. Вы узнаете, почему важно назначать владельцев ресурсов, как правильно выбирать тариф, выставлять автоматические квоты и настраивать алерты, чтобы сократить затраты на 20–30%. Всё — с живым демо в личном кабинете.

🧑‍💻 Для кого: ИТ-менеджеры, DevOps, финансовые директора.

📅 Когда? 25 июня 11:00 мск.

📍 Где?  Онлайн. Зарегистрируйтесь, чтобы задать вопросы спикерам.

🎥Эволюция приложения в облаке: как настроить кеш с Redis и ничего не сломать

Четвертый вебинар большого трека про эволюцию приложений. Обсудим стратегии кеширования и какую из них выбрать под ваш сценарий, типичные ошибки инвалидации и защиту от всплесков нагрузки. Разберем, как оценивать эффективность кеша и ситуации, когда он только маскирует проблемы. 

🧑‍💻 Для кого: бэкенд-разработчики, DevOps-инженеры, архитекторы.

📅 Когда? 30 июня 11:00 мск.

📍 Где?  Онлайн. Зарегистрируйтесь, чтобы задать вопросы спикерам.


Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Настроить мониторинг за 60 секунд: вебинар про Deckhouse Observability на практике

Метрики, лейблы, Prometheus, PromQL, Grafana, дашборды, алерты, каналы уведомлений. Тема мониторинга большая и сложная, но базовый пайплайн от сбора метрик до визуализации данных и настройки алертов можно разобрать за 60 минут. Этим и займёмся на вебинаре Deckhouse Академии на примере живого сценария.

  • Разберём, как формируется метрика, что такое лейблы и кардинальность, а также как не допустить взрыва кардинальности.

  • Рассмотрим, как Prometheus собирает данные и как начать собирать их со своего приложения, добавив три строчки в Deployment.

  • Визуализируем метрику и покажем пример агрегации сырых данных с помощью PromQL.

  • Создадим правило для алерта, настроим свой канал уведомлений и получим уведомление по агрегированной метрике.

Регистрируйтесь и подключайтесь 23 июня в 12:00 (МСК). После вебинара вы поймёте, как работает цепочка App → Metric → Prometheus → PromQL → Grafana → Alert, сможете подключить своё приложение к Prometheus без правки scrape_config, написать простой запрос на PromQL и настроить оповещения с защитой от шума.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Установка и использование Nexus Repository для хранения артефактов

Nexus закрывает типовую DevOps-задачу: единое хранилище для Maven, npm, Docker, NuGet, PyPI и собственных бинарей, кэш внешних зависимостей и предсказуемый источник артефактов в CI/CD. Версии — Community Edition, Pro и связка с Repository Firewall для отсечения небезопасных компонентов на входе.

В статье разобрали установку Nexus Repository 3.91.1 тремя способами, а также показали первичную настройку, загрузку артефактов и политики очистки. И не забыли про разграничение прав через Privileges, Roles и Users, отключение анонимного доступа и вывод Nexus наружу по HTTPS через Nginx с Certbot.

Все детали — в статье Рег.облака.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Что посмотреть на неделе: брокеры сообщений, Kubernetes и ИИ‑агенты

Привет, Хабр. На этой неделе в OTUS пройдет серия бесплатных уроков для тех, кто работает с архитектурой, инфраструктурой, разработкой, аналитикой и ИИ‑инструментами.

Будет много практики: выбор брокера сообщений, деплой Java‑приложения в Kubernetes, мониторинг распределённых систем, создание AI‑ассистентов и интеграция ИИ‑агентов в рабочую разработку.

Все уроки бесплатно проводят преподаватели в рамках курсов. Можно прийти на один вебинар по своей задаче или собрать мини‑маршрут на неделю.

Архитектура и backend

  • 8 июня, 19:00. «RabbitMQ vs Kafka. Как выбрать подходящий брокер сообщений?». Записаться
    разберём, чем отличаются RabbitMQ и Kafka, в каких задачах они работают лучше и как выбрать брокер под архитектуру проекта.

  • 15 июня, 20:00. «Системы обмена сообщениями: RabbitMQ и Kafka». Записаться
    поговорим об устройстве систем обмена сообщениями и сценариях, где брокеры помогают строить устойчивые распределённые решения.

Инфраструктура и эксплуатация

  • 8 июня, 20:00. «Java в Kubernetes за 40 минут: как задеплоить приложение в Minikube». Записаться
    покажем, как подготовить Java‑приложение к запуску в Kubernetes и развернуть его локально через Minikube.

  • 10 июня, 20:00. «Мониторинг распределённых систем». Записаться
    разберём, как отслеживать состояние сложных систем, быстрее находить проблемы и не теряться в метриках, логах и алертах.

ИИ в рабочих процессах

  • 11 июня, 20:00. «Создаём ИИ‑ассистента для системного аналитика за 1 час». Записаться
    покажем, как ИИ может помогать аналитику в рабочих задачах: от обработки требований до подготовки артефактов.

  • 15 июня, 20:00. «Интеграция ИИ‑агентов в рабочую разработку: обвязка агента навыками и MCP». Записаться
    разберём, как расширять возможности ИИ‑агента с помощью навыков и MCP, чтобы он был полезен в реальном рабочем процессе.

  • 15 июня, 20:00. «Создаём AI‑ассистента и интегрируем его в Telegram». Записаться
    покажем, как собрать AI‑ассистента и подключить его к Telegram для пользовательских сценариев.

Команды и процессы

  • 11 июня, 20:00. «Внутри Scrum: как работают мастер, владелец и команда». Записаться
    разберём, как на практике распределяются роли в Scrum и почему процесс часто ломается не из‑за фреймворка, а из‑за его применения.

Больше уроков собрали в дайджесте — можно выбрать темы под свою роль, стек и задачи на ближайший месяц.

Теги:
Всего голосов 3: ↑2 и ↓1+3
Комментарии0

Сервер работает. Инфраструктура — нет: открытые уроки для сисадминов

Системное администрирование давно не заканчивается на моменте «поднять сервер, настроить доступы и посмотреть логи». Сегодня администратору нужно уметь разбираться в контейнерах, Kubernetes, мониторинге, безопасности, инцидентах и автоматизации — иначе инфраструктура быстро превращается в набор ручных костылей.

Собрали открытые уроки, которые будут полезны системным администраторам, DevOps‑инженерам, SRE и тем, кто хочет увереннее работать с production‑инфраструктурой.

Linux и автоматизация: меньше ручной рутины

Что почитать перед уроками:

Мастерство поиска в Linux: Grep и регулярные выражения
Полезная база для тех, кто регулярно работает с логами, конфигами и текстовым выводом в консоли.

Docker и контейнеризация: когда «работает локально» уже недостаточно

Что почитать перед уроками:

Ваш docker‑compose.yml сломается: 5 настроек, которые все забывают
Разбор типовых ошибок в Docker Compose: лимиты ресурсов, restart policy, ротация логов, healthcheck и бэкапы volumes.

Kubernetes, DevOps и self‑service‑инфраструктура

Сети и безопасность инфраструктуры

Что почитать перед уроками:

Разбираемся с форвардингом IP‑пакетов в сетевых уровнях L2 и L3 
Материал для тех, кто хочет лучше понимать, как пакеты проходят через сеть и где могут возникать проблемы при настройке инфраструктуры.

Мониторинг, SRE и инциденты

Все уроки бесплатные. На них можно познакомиться с преподавателями‑практиками, посмотреть на формат обучения и задать свои вопросы.

Если интересны не только инфраструктурные темы, в полном июньском дайджесте собраны ещё 62 бесплатных урока по разработке, данным, архитектуре, ИБ и AI.

Теги:
Всего голосов 3: ↑3 и ↓0+6
Комментарии0

Ближайшие события

Почему тесты проходят, но система всё равно сломана

Классы скрытых ошибок в QA automation, которые не приводят к падению CI

Пайплайн прошёл. Логи без ошибок. Значит всё работает.

Но в реальных QA automation системах это предположение часто не выдерживает проверки.

Тесты могут проходить, даже если система сломана.

И это не редкий edge case. Есть несколько типов проблем, которые не приводят к падению CI:

  • False positives — тест подтверждает поведение, которое уже не соответствует бизнес‑логике. Проверка формально зелёная, смысл потерян.

  • Missing assertions — тест проходит, потому что не проверяет ничего критичного.

  • Flaky suppression — флаки ретраят или игнорируют. Шум скрывает реальные проблемы, CI выглядит стабильным.

  • Duplicated execution — один и тот же набор тестов запускается несколько раз из‑за конфигурации runner'а.

  • Contract drift — API или поведение системы меняется, но тесты продолжают проверять старые ожидания. Пока не появится явный конфликт — всё зелёное.

В проекте была добавлена пагинация к одному из API эндпоинтов. До изменения ответ выглядел так:

json [{ "id": 1 }, { "id": 2 }]

После — так:

{ "data": [...], "total": 10, "page": 1, "limit": 20 }

API тесты не упали: они проверяли статус и структуру нового формата — всё корректно.

Я была уверена что если API возвращает 200 и схема верна — клиент получает данные.

Но в клиентском коде была строка:

cachedRows = Array.isArray(rows) ? rows : []

Для объекта Array.isArray возвращает false. Список записей стал пустым.

Формально всё работало корректно. Просто данных больше не было.Никаких ошибок в консоли. Никакого 500. Просто пустая страница.

CI остался зелёным — потому что API тесты проверяли API, а не то, как клиент использует ответ.

Дальше сработал каскад: fixture teardown тоже вызывал этот эндпоинт, получал объект вместо массива, не чистил данные — и следующие тесты падали с совершенно другой ошибкой, в совершенно другом файле.

Три теста упали из-за одного изменения shape ответа.

Ни один из них не указал на настоящую причину.

Почему CI это не ловит

CI отвечает на вопрос: «выполнились ли тесты без ошибок?»

Но не отвечает на: «имеют ли тесты смысл относительно текущей системы?»

CI реагирует только на падения. Он не знает про бизнес-инварианты, не отслеживает правильность выполнения и не видит contract drift.

Что с этим делают в зрелых системах

Начинают появляться дополнительные слои:

  • контрактные тесты (contract testing) — фиксируют ожидания потребителя API

  • явно наблюдаемость тестов — метрики не как %, а как сигналы поведения

  • контроль изменений API через diff-инструменты

Ни один из них не заменяет хорошие тесты. Но каждый закрывает слепое пятно, которое тесты не видят.

Финальный вывод

Тесты не доказывают, что система работает.

Они только доказывают, что система не сломалась определённым способом.

Признаки сбоя

  • CI зелёный

  • UI показывает пустой список

  • API возвращает 200

  • fixture teardown не чистил данные, занимал слот

Скрытое предположение

«Я решила что статус 200 означает, что потребитель по‑прежнему правильно читает ответ»

Как это выглядит в реальной системе

Contract drift — один из тех классов ошибок, которые можно воспроизвести намеренно. В проекте есть buggy branch именно с этим кейсом: API возвращает изменённый shape ответа, все API тесты зелёные, но клиентский код получает пустой список — без ошибок, без 500, просто тишина.

Код и структура проекта: GitHub

Из серии «Тихие отказы в тест-автоматизации»

Разборы таких кейсов с кодом — в Telegram-канале Тесты как система

Теги:
Всего голосов 3: ↑1 и ↓2-1
Комментарии0

ИИ-агент удаляет прод за 9 секунд: новости автоматизации.

Помните, как нас пугали, что ИИ отберёт работу? Пока что он скорее отбирает базы данных.

Свежий кейс. У американской PocketOS ИИ-агент за девять секунд удалил продакшен-базу вместе с бэкапами — без всякого разрешения. На вопрос «зачем» агент невозмутимо ответил, что чинил «несоответствие учётных данных».

Девять секунд на то что бы снести базу и найти оправдание - отличная работа!

88% компаний, гоняющих ИИ-агентов в работе, за год словили подтверждённый или подозрительный инцидент безопасности — при том что на защиту этих агентов уходит жалкие 6% бюджета. Причём чаще всего агент не ломается, а именно сливает данные: в 61% инцидентов была утечка. Он же не виноват — он просто делал свою работу. Ему забыли сказать, где у этой работы край.

Есть и другие случаи, более курьезные. Диллер Cevrolet, их бот под давлением юзеров согласился продать машину за $1 и заявил, что сделка «юридически обязывающая» — no take-backsies.

Разница в том, что раньше у ботов был только язык, а теперь — права доступа. И шутки подорожали на пару порядков. Вывод банальный: ИИ и правда работает. Просто его пускают в прод быстрее, чем успевают огородить забором. Минимальные привилегии, аудит и большая красная кнопка — это теперь не паранойя, а реальность работы с агентами.

Источники: PocketOS, кейс с удалением базы — Information Age (ACS): https://ia.acs.org.au/article/2026/gone-in-9-seconds--ai-agent-deletes-company-database.html

Тот же кейс глазами ServiceNow — Fortune: https://fortune.com/2026/05/06/servicenow-kill-switch-ai-agents-bill-mcdermott/

Статистика по инцидентам с ИИ-агентами — beam.ai: https://beam.ai/agentic-insights/ai-agent-security-breaches-2026-lessons

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии3

В self-hosted Git-сервисе Gogs обнаружили непропатченную уязвимость нулевого дня. Суть в argument injection: если включена опция Rebase before merging, атакующий может внедрить флаг --exec в команду git rebase через вредоносное имя ветки в пулл-реквесте.

Это даёт полный RCE. Злоумышленник получает доступ ко всем репозиториям, хешам паролей, API-токенам и SSH-ключам. Ситуация осложняется тем, что в Gogs по умолчанию открыта регистрация.

Под ударом версии 0.14.2 и 0.15.0+dev. Мейнтейнеры подтвердили баг ещё в марте, но патча до сих пор нет. Временные меры: закрыть публичную регистрацию, отключить rebase-merging или закрыть доступ к серверу "Из внешней сети".

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

The.Hosting — всё.

Сегодня The.Hosting разослал юзерам такое сообщение:

IMPORTANT: Notice of Service Discontinuation and Account Closure

Dear Customer,

We are writing to inform you that due to unforeseen and unavoidable force majeure circumstances, THE.Hosting is forced to permanently discontinue all its operational services and wind down its activities.

As a result, our platform, support channels, and all associated services will be closed in the coming days.

What this means for you:

New Orders & Renewals: All active forms of registration, ordering, and renewals have been disabled. No new services can be purchased.

Data & Accounts: If you have any active data, configurations, or account details stored within our systems, we urgently advise you to retrieve and back up your information immediately.

Final Termination: Once the wind-down process is completed, all accounts and data will be permanently deleted from our systems.

We deeply regret that we are forced to take this step and understand the inconvenience this causes. We want to thank you sincerely for your partnership and trust in THE.Hosting over the past period.

Sincerely,The Management of THE.Hosting


Суть в том, что деятельность компании будет прекращена в течение нескольких дней. Данные необходимо спасать вручную. Деньги вряд ли будут возвращены (создать тикет уже невозможно).

Проблемы у The.Hosting начались около двух недель назад, через несколько дней стало известно об изъятии серверов в Нидерландах, теперь история подошла к закономерному финалу.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Привет, коллеги! 👋 Уже в это воскресенье, 31 мая в 10:00, устроим мощный заряд знаний! ⚡️ За 4 часа своими руками поднимем стек мониторинга, настроим дашборды и оповещения! 📊🔔

Для кого это будет полезно:
- разработчики 💻
- аналитики 📈
- системные инженеры 🔧

Все подробности здесь: https://debugskills.ru/articles/labs/prometheus-grafana/

Теги:
Рейтинг0
Комментарии0

GitHub Actions не маскирует секреты из фоновых процессов

Настраивал CI, в котором токен доступа переполучается в фоне — раз в 30 минут, пока идут тесты. Первый токен замаскирован через ::add-mask::, но что с экранированием новых токенов в логах? Можно ли вызвать ::add-mask:: прямо из фонового процесса?

В документации GitHub я ответа не нашёл. Там есть только общее место: workflow commands вида ::... раннер читает из stdout шага. А вот что происходит со stdout, который остался от фонового процесса после завершения шага, — непонятно.

Решил проверить — сделал тестовую репу. Схема простая: в одном шаге запускаю background-процесс, который через 15 секунд пишет ::add-mask:: — уже во время следующего шага. Потом специально печатаю секрет: сразу, после sleep, в следующем шаге и в отдельном job’е.

Foreground-секрет (маска из основного процесса) — замаскирован во всех шагах той же job’ы ✅ Background-секрет (маска из фонового процесса) — открыт везде, и до, и после срабатывания ::add-mask::

Бонус: маски вообще не живут между job’ами — даже foreground-маска в зависимом job’е уже не действует ❌

У нас это, к счастью, не стреляет: переполучение токена уходит в /dev/null, тесты ходят через API, секрет в stdout не попадает. А вот если какой-нибудь refresh-скрипт всё-таки может напечатать новый секрет в лог — на ::add-mask:: из background-процесса рассчитывать нельзя.

Дисклеймер: и код, и текст этого поста написаны в соавторстве с Claude Code.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

llm-nano-vm v0.8.0 — выход в PyPI, валидация вывода и per-step таймауты

В прошлом посте мы описывали концепцию nano-vm — детерминированного ядра исполнения на базе конечных автоматов (FSM) для LLM-воркфлоу, где модель не является оркестратором, а лишь предлагает действия внутри жесткого графа \delta(S, E) \to S'.

За это время проект перерос стадию концепта. Мы опубликовали рантайм на PyPI и выпустили релиз v0.8.0. Ниже — сухой отчет о том, что конкретно было сделано, измененено и протестировано.

Что нового в v0.8.0

1. Выход на PyPI и релиз пакетов

Рантайм и сопутствующие компоненты полностью изолированы и доступны для установки:

pip install llm-nano-vm==0.8.0
pip install llm-nano-vm[litellm]==0.8.0   # поддержка провайдеров через LiteLLM
pip install nano-vm-mcp                    # MCP-шлюз

2. allowed_outputs — LLM enum guard

Добавлена жесткая валидация сырого вывода модели по белому списку до того, как значение попадет дальше в пайплайн.

{
    "id": "classify",
    "type": "llm",
    "prompt": "Classify. Reply ONLY with: refund / query / other",
    "allowed_outputs": ["refund", "query", "other"],
    "on_error": "skip",   # → подставит "refund" (первый элемент) на mismatch
}

Реализовано три политики обработки ошибок: fail (trace \to FAILED), skip (подстановка allowed_outputs[0]) и retry (перезапрос модели до max_retries).

3. timeout_seconds + on_timeout — таймауты на уровне шага

Решена проблема «зависания» внешних LLM API. Любой llm-шаг теперь можно ограничить по времени выполнения с политиками fail или fallback (подстановка дефолтного значения без падения автомата).

4. Стабилизация ASTEngine

Мы окончательно избавились от eval() для условий (condition). Написан кастомный песочный интерпретатор JSON AST. Любые системные вызовы и скрытые вызовы методов (вроде .lower()) теперь вызывают ASTEvalError на этапе компиляции графа.

Результаты бенчмарков (v0.8.0 · WSL2 · Python 3.12)

Тесты производительности на синтетическом адаптере (3 провайдера \times 5 сценариев \times 10k итераций) показали 1,096,500 операций и 0 нарушений контракта графа.

СценарийСредний TPSp95Refund pipeline2,200/s123 msDouble-execution guard2,800/s69 msBudget enforcement2,400/s97 msParallel throughput1,000/s196 msGovernanceEnvelope (аудит-лог)2,100/s108 ms

  • Crash consistency (BM-INT-07): При crash_rate=100% повторное воспроизведение (replay) пайплайна после симулированного падения рантайма выдает идентичный хэш трейса в 100% случаев.

  • Memory leak test (BM-INT-10): Пиковый RSS — 76.5 MB, аллокация — 3.62 MB для программ на 1000 шагов. Утечек памяти нет.

Валидация на реальных платежных API

Концепт успешно проверен на двух интеграционных сценариях (9/9 тестов пройдены):

  1. MoMo Payment API v4: 3-way ветвление, HMAC-SHA256 IPN верификация, цикл пуллинга статуса с ретраями.

  2. Stripe Payment API v1: Обработка 3DS-флоу (REQUIRES_ACTION), refund-пайплайн и верификация вебхуков.

В процессе интеграции со Stripe пофиксили важный баг: коллизию доменного статуса "PENDING" от API Stripe с внутренним сентинелом рантайма, который триггерил заморозку (SUSPEND) автомата.

Текущий фокус и краткосрочный роадмап

  • Phase 0: Разработка ProgramValidator для статического анализа графов до их выполнения (поиск циклов, недостижимых шагов и битых таргетов). Актуально, когда сами программы генерируются «на лету» внешними моделями.

  • Phase 1: Консистентность шлюза. Перенос StateContext между вызовами MCP в SQLite WAL (execution_contexts + UPSERT на каждый шаг). Это полностью уберет риск повторного списания (Double-Spend) при перезапуске процесса шлюза.

  • Phase 2: Интеграция OpenTelemetry для распределенного трассирования шагов.

Репозитории проекта:

Теги:
Всего голосов 3: ↑1 и ↓2-1
Комментарии0