<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все статьи подряд / DevOps / Хабр]]></title>
    <link>https://habr.com/ru/hubs/devops/articles/</link>
    <description><![CDATA[DevOps – методология разработки программного обеспечения]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sat, 07 Nov 2026 00:16:47 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Scale-to-zero для LLM: на что уходят 294 секунды после первого запроса]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/vktech/articles/1104440/</guid>
      <link>https://habr.com/ru/companies/vktech/articles/1104440/?utm_campaign=1104440&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/d4/f8/9f/d4f89f6ec071e0020870cf1585c0ca25.jpg" /><p>Когда запросы к LLM приходят лишь несколько раз в день, GPU большую часть времени простаивает, но платить за ноду приходится круглосуточно. Хочется освобождать карту между запросами: удалять поды с моделью, когда нагрузки нет, и запускать их снова, когда она появляется. Для обычного веб-приложения такая схема работает с задержкой в несколько секунд, и это вполне допустимо. LLM же после запуска пода нужно загрузить веса и прогреть движок, поэтому первый запрос может ждать ответа несколько минут.</p><p>В июле команда H Company<a href="https://hcompany.ai/newsroom/booting-fast-and-slow"> рассказала</a>, что новая реплика их крупнейших моделей выходила в готовность до 27 минут. Команда использует vLLM на GPU-нодах Kubernetes и добавляет реплики по мере роста нагрузки от агентов. Автоскейлер быстро увеличивает число подов, но дальше начинаются скачивание образа, загрузка весов, компиляция и прогрев движка. Ускорить эти этапы настройками масштабирования не получится.</p><p>Я ожидал, что большую часть времени занимает загрузка весов, и решил посмотреть публичные замеры. У Tensorfuse запуск Llama 3.1 8B на L40S занял 294 секунды, из которых на скачивание модели и перенос весов в GPU ушло только 94. Остальные 200 секунд потребовались на компиляцию, захват CUDA graphs, инициализацию движка и импорты. Значительную часть этой работы новый под повторяет при каждом старте, хотя её результаты можно сохранить на ноде.</p><p>В статье разберём, как настроить запуск LLM из нуля и сократить холодный старт: откуда KEDA получает сигнал о нагрузке, пока подов нет, что стоит заранее закэшировать и какие таймауты позволят первому запросу дождаться модели. На публичных замерах посмотрим, сколько времени дают эти оптимизации, а затем перейдём к манифестам KEDA HTTP Add-on, DaemonSet для предзагрузки и настройкам vLLM. Это поможет платформенным инженерам оценить, подходит ли такой режим их нагрузке или лучше оставить тёплую реплику.</p> <a href="https://habr.com/ru/articles/1104440/?utm_campaign=1104440&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 11:12:05 GMT</pubDate>
      <dc:creator><![CDATA[GRADDATA (VK Tech)]]></dc:creator>
      
      <category><![CDATA[vk cloud]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[vLLM]]></category><category><![CDATA[KEDA]]></category><category><![CDATA[LLM]]></category><category><![CDATA[scale-to-zero]]></category><category><![CDATA[автомасштабирование]]></category><category><![CDATA[холодный старт]]></category><category><![CDATA[кэширование]]></category><category><![CDATA[инференс языковых моделей]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Миграция ещё не выполнилась, а SELECT уже ждёт: очередь блокировок PostgreSQL]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1104420/</guid>
      <link>https://habr.com/ru/articles/1104420/?utm_campaign=1104420&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/20/74/71/207471174cc6ff1329484d010ccdaeef.png" /><p>При создании кейса на в моем тренажере, который я рассказывал <a href="https://habr.com/ru/articles/1099036/" rel="noopener nofollow">ранее</a>, возникло следующее: добавление пустой колонки выглядит безобидной миграцией: переписывать данные не нужно. Но такой ALTER TABLE может остановить новые чтения таблицы ещё до изменения её структуры. Достаточно старой транзакции, которую забыли завершить. Поясню эту цепочку на отдельном PostgreSQL 17.11 с таблицей orders из одной строки.</p><p>Сначала первая сессия выполняет BEGIN и SELECT id FROM orders, после чего остаётся открытой. Сам запрос уже завершён, но транзакция продолжает держать AccessShareLock. Это не мешает другому обычному SELECT: такие блокировки совместимы. Проверка до запуска миграции возвращает строку без ожидания старой транзакции.</p><p>Затем вторая сессия запускает ALTER TABLE orders ADD COLUMN note text. Для этого изменения нужна AccessExclusiveLock, несовместимая с блокировкой первой сессии. Миграция встаёт в очередь. Если теперь третья сессия выполнит SELECT id FROM orders, она тоже будет ждать. Её AccessShareLock совместима с уже выданной блокировкой первой сессии, однако впереди стоит запрос миграции на исключительный доступ.</p><p>На снимке консоли видна вся цепочка. Сессия old_tx находится в состоянии idle in transaction и держит выданную блокировку: granted = t. У migration блокировка ещё не выдана, а blocked_by указывает на old_tx. Новый запрос api также имеет granted = f, но его blocked_by указывает уже на migration. Таким образом, источник ожидания и непосредственный блокировщик запроса — разные сессии. После ROLLBACK в old_tx миграция завершается, а новый SELECT получает результат.</p> <a href="https://habr.com/ru/articles/1104420/?utm_campaign=1104420&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 10:09:06 GMT</pubDate>
      <dc:creator><![CDATA[verin_is]]></dc:creator>
      
      <category><![CDATA[devops]]></category><category><![CDATA[системное администрирование]]></category><category><![CDATA[sql]]></category><category><![CDATA[sre]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я настроил локальный ИИ‑контур без облаков и защитил данные от утечек]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1104366/</guid>
      <link>https://habr.com/ru/articles/1104366/?utm_campaign=1104366&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>В 2023 году Samsung зафиксировала утечку служебного кода через ChatGPT: сотрудники вставляли внутренние документы в промпт. После этого компания ограничила использование внешних LLM.</p><p>IBM Cost of a Data Breach 2024 оценивает среднюю стоимость утечки в 4.88 млн долларов. В России штрафы за утечку персональных данных переведены в оборотную модель (ст. 13.11 КоАП в редакции 420-ФЗ).</p><p>Илья Чиркин, обучивший ИИ более 300 человек, формулирует барьер так: “Сразу надо определить, какие данные можно отдавать ИИ, а какие нет”.</p><p>Локальный контур снимает сам вопрос: данные не покидают периметр. Ниже — архитектура, честная экономика и границы применимости.</p> <a href="https://habr.com/ru/articles/1104366/?utm_campaign=1104366&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 08:51:20 GMT</pubDate>
      <dc:creator><![CDATA[Engineerprivacy]]></dc:creator>
      
      <category><![CDATA[152-ФЗ]]></category><category><![CDATA[Ollama]]></category><category><![CDATA[Llama]]></category><category><![CDATA[кибербезопасность]]></category><category><![CDATA[Docker]]></category><category><![CDATA[nftables]]></category><category><![CDATA[СБП]]></category><category><![CDATA[B2B]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[SRE]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Code-server: поднимаем личную IDE в браузере]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/selectel/articles/1102746/</guid>
      <link>https://habr.com/ru/companies/selectel/articles/1102746/?utm_campaign=1102746&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/70/81/2c/70812ce54326b6bec31364b3e1608f8f.jpg" /><p>Привет, Хабр! Меня зовут Данил, я работаю системным инженером в <a href="https://my.selectel.ru/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=myselectel_article_codeserver_061126_content">Selectel </a>и в свободное время потихоньку развиваю свою лабораторию. Мне нравятся маломощные и компактные устройства, но проблема заключается в том, что не все рабочие инструменты доступны на таком железе.&nbsp;</p><p>Я решил погрузиться в вопрос и начал изучать решения, но концепция удаленного доступа к ПК мне не понравилась. Разные операционные системы и платформы сильно ограничивают в выборе привычных инструментов, а быстро подправить код бывает нужно здесь и сейчас. Поэтому я решил развернуть собственный code-server на персональном домене и с готовым SSL-сертификатом.</p> <a href="https://habr.com/ru/articles/1102746/?utm_campaign=1102746&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 08:00:53 GMT</pubDate>
      <dc:creator><![CDATA[4pykella (Selectel)]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[docker-compose]]></category><category><![CDATA[dockerhub]]></category><category><![CDATA[selectel]]></category><category><![CDATA[code-server]]></category><category><![CDATA[vscode]]></category><category><![CDATA[nginx]]></category><category><![CDATA[lets encrypt]]></category><category><![CDATA[ssl-сертификат]]></category><category><![CDATA[ide]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[GitOps «сломал» CI/CD — настраиваем промоушен: от костылей и sed до Kargo (разбор на практике и неочевидные нюансы)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/flant/articles/1100944/</guid>
      <link>https://habr.com/ru/companies/flant/articles/1100944/?utm_campaign=1100944&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/84/23/9b/84239b54b708e405667a0a63397c74ac.png" /><p>Пайплайн зелёный, а релиз не состоялся. Образ на всех этапах один и тот же, но это не точно. Отдельные хуки и скрипты вместо единого конвейера <code>.gitlab-ci.yml</code>. Привычный CI/CD с&nbsp;GitOps перестаёт существовать.</p><p>В статье расскажу, когда для восстановления связи CI и&nbsp;CD подойдёт простая автоматизация, а&nbsp;когда нужен серьёзный инструмент, покажу, как работают разные решения, как выбрать лучшее и не&nbsp;напороться на&nbsp;грабли (я&nbsp;собрал их за&nbsp;вас).</p> <a href="https://habr.com/ru/articles/1100944/?utm_campaign=1100944&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 07:55:37 GMT</pubDate>
      <dc:creator><![CDATA[an_shilov (Флант)]]></dc:creator>
      
      <category><![CDATA[devops]]></category><category><![CDATA[kargo]]></category><category><![CDATA[gitops]]></category><category><![CDATA[ci]]></category><category><![CDATA[cd]]></category><category><![CDATA[sed]]></category><category><![CDATA[argocd]]></category><category><![CDATA[flux]]></category><category><![CDATA[renovate]]></category><category><![CDATA[пайплайны]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[«Письмо отправлено». Как у нас дважды за месяц молча ломалась почта]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1104308/</guid>
      <link>https://habr.com/ru/articles/1104308/?utm_campaign=1104308&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Человек регистрируется в нашем сервисе, вводит почту и видит «Письмо отправлено». Ждёт код. Код не приходит. Он нажимает «отправить ещё раз», снова ждёт, потом закрывает вкладку. Мы об этом не знаем: API ответил 200, ошибок в ответах нет.</p><p>Так было с 14 сентября по 1 октября, а потом ещё раз 5 октября. Причины разные, результат один: тишина. Ниже оба сбоя с конфигами, кодом и тем, что мы поменяли.</p> <a href="https://habr.com/ru/articles/1104308/?utm_campaign=1104308&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 07:43:46 GMT</pubDate>
      <dc:creator><![CDATA[NovikovIoann]]></dc:creator>
      
      <category><![CDATA[SMTP]]></category><category><![CDATA[RabbitMQ]]></category><category><![CDATA[Plesk]]></category><category><![CDATA[DNS]]></category><category><![CDATA[TLS]]></category><category><![CDATA[Dead Letter Queue]]></category><category><![CDATA[мониторинг]]></category><category><![CDATA[отказоустойчивость]]></category><category><![CDATA[доставка электронной почты]]></category><category><![CDATA[letsencrypt]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Аутентификация «Dual JWT». Минимум ресурсов при высокой безопасности]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1104188/</guid>
      <link>https://habr.com/ru/articles/1104188/?utm_campaign=1104188&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/78/e2/e5/78e2e54f157a1f972e0ee2e1d53a144b.png" /><p>В статье — вариант реализации стандарта OAuth 2.0 (RFC 6749).<br><strong>Цель схемы «Dual JWT»</strong> — минимизировать потребление ресурсов инфраструктуры при сохранении достаточно высокого (но не максимального) уровня безопасности. Разберём, как устроена схема аутентификации, параметры её безопасности, а также экономику решения: за счёт чего схема снижает затраты (FinOps).<br>Суть схемы: access в заголовке + refresh в cookie, оба — stateless-JWT, плюс deny list в Redis для отзыва сессий.</p> <a href="https://habr.com/ru/articles/1104188/?utm_campaign=1104188&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 07:39:37 GMT</pubDate>
      <dc:creator><![CDATA[metacoder-feff]]></dc:creator>
      
      <category><![CDATA[finops]]></category><category><![CDATA[оптимизация]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[oauth2.0]]></category><category><![CDATA[jwt]]></category><category><![CDATA[refresh]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как безобидный ADD COLUMN положил наш продакшен на 43 минуты (и почему Postgres 11+ вас не спасет)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1104284/</guid>
      <link>https://habr.com/ru/articles/1104284/?utm_campaign=1104284&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Четверг, 14:15. Миграция с флагом фичи на таблице с 30M строк применилась в стейджинге за 12 миллисекунд. Но через 18 секунд после деплоя в прод Nginx взорвался 504 Gateway Timeout, а PgBouncer исчерпал весь пул соединений. Разбираем анатомию катастрофы: почему Postgres берет ACCESS EXCLUSIVE, как возникает Head-of-Line Blocking и как писать zero-downtime миграции без падения сервисов.</p> <a href="https://habr.com/ru/articles/1104284/?utm_campaign=1104284&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 06 Nov 2026 07:11:08 GMT</pubDate>
      <dc:creator><![CDATA[marswwu]]></dc:creator>
      
      <category><![CDATA[postgresql]]></category><category><![CDATA[postgres]]></category><category><![CDATA[миграции]]></category><category><![CDATA[access exclusive]]></category><category><![CDATA[блокировки баз данных]]></category><category><![CDATA[devops]]></category><category><![CDATA[pgbouncer]]></category><category><![CDATA[highload]]></category><category><![CDATA[zero downtime]]></category><category><![CDATA[ci cd]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Поддержка из личного аккаунта MAX: худшее, что можно сделать с клиентом. Бот в Chatwoot за час]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1104074/</guid>
      <link>https://habr.com/ru/articles/1104074/?utm_campaign=1104074&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/f7/dc/d9/f7dcd9fa587483fa8890cee102d68992.png" /><p>Клиенты пишут в бота MAX, операторы отвечают из Chatwoot на своём сервере, а между ними мост на Python. По дороге выяснилось, что Chatwoot не шлёт вебхуки во внутреннюю сеть, API MAX работает на сертификате Минцифры, а один и тот же ответ норовит уйти клиенту дважды. Ниже о том, как устроен мост и какие решения пришлось принять.</p> <a href="https://habr.com/ru/articles/1104074/?utm_campaign=1104074&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 14:45:13 GMT</pubDate>
      <dc:creator><![CDATA[egorbolotov]]></dc:creator>
      
      <category><![CDATA[chatwoot]]></category><category><![CDATA[max]]></category><category><![CDATA[мессенджер max]]></category><category><![CDATA[бот]]></category><category><![CDATA[python]]></category><category><![CDATA[actioncable]]></category><category><![CDATA[websocket]]></category><category><![CDATA[docker compose]]></category><category><![CDATA[self-hosted]]></category><category><![CDATA[поддержка клиентов]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Кластер без мастеров под рукой. Жизненный цикл Kubernetes в VK Cloud глазами пользователя eksctl]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/vk/articles/1074222/</guid>
      <link>https://habr.com/ru/companies/vk/articles/1074222/?utm_campaign=1074222&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/60/39/e4/6039e4dd9f7954a07dc1688cb59ae0ed.jpg" /><p>Kubernetes в проде держат<a href="https://www.cncf.io/reports/cncf-annual-survey-2024/"> 80% организаций</a> по опросу CNCF за 2024 год, против 66% годом раньше. В России адопшн ниже, но того же порядка:<a href="https://habr.com/ru/companies/vktech/articles/1042084/"> около 60% крупных компаний</a> используют Kubernetes. Спор об управлении кластером в облаке обычно сводится к интерфейсу: консоль или CLI вроде eksctl. Но жизненный цикл кластера всё равно должен кто-то исполнять. Именно здесь и проходит реальная граница между инструментами.</p><p>В этой статье мы разбираем пользовательский жизненный цикл кластера второго поколения <a href="https://cloud.vk.ru/containers/">Managed Kubernetes в VK Cloud</a>: создание, нод-группы, масштабирование, обновление версии и аддоны. За точку сравнения берём eksctl как привычный инструмент управления EKS. Дальше — таблица соответствия задач eksctl операциям VK Cloud, HCL-листинги Terraform-провайдера для кластера, нод-группы и аддона, числовые пороги автоскейлинга мастеров, процедура апгрейда со скрытым control plane и список мест, где обе абстракции дают сбой.</p><p>Это статья для инженеров, которые выбирают или эксплуатируют managed Kubernetes в российских облаках и хотят понимать, какие операции берёт на себя платформа. Для платформенных команд, переводящих кластеры в IaC. Если у вас самосборный Kubernetes, разделы об апгрейдах и запасе узлов тоже пригодятся: они описывают механику самого Kubernetes.</p> <a href="https://habr.com/ru/articles/1074222/?utm_campaign=1074222&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 14:41:08 GMT</pubDate>
      <dc:creator><![CDATA[GRADDATA (VK Tech, VK)]]></dc:creator>
      
      <category><![CDATA[vk cloud]]></category><category><![CDATA[Managed Kubernetes]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[Terraform]]></category><category><![CDATA[eksctl]]></category><category><![CDATA[инфраструктура как код]]></category><category><![CDATA[жизненный цикл кластера]]></category><category><![CDATA[масштабирование]]></category><category><![CDATA[обновление Kubernetes]]></category><category><![CDATA[отказоустойчивость]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Kubernetes слишком тяжёлый для мини-ПК? Собрал почти продовый кластер с потреблением всего 10 Вт]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1103850/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1103850/?utm_campaign=1103850&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/77/5b/8d/775b8d60473830a5a47edec7f6fed1a7.jpg" /><p>Насколько тяжёлым должен быть Kubernetes-кластер, чтобы на нём можно было тестировать решения из промышленной инфраструктуры? Автор собрал такой стенд на одном мини-ПК с потреблением около 10 Вт: с реплицируемым хранилищем, полноценным LoadBalancer и Gateway API. В статье — подробный разбор конфигурации, неожиданных проблем и компромиссов, благодаря которым удалось уместить почти продовый Kubernetes в столь скромные ресурсы.</p> <a href="https://habr.com/ru/articles/1103850/?utm_campaign=1103850&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Как это работает</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 12:51:38 GMT</pubDate>
      <dc:creator><![CDATA[kmoseenk (OTUS)]]></dc:creator>
      
      <category>виртуализация</category><category>Kubernetes</category><category>Proxmox</category><category>Домашний Kubernetes-кластер</category><category>Развёртывание Kubernetes</category><category>Домашняя лаборатория</category><category>Terraform</category><category>Ansible</category><category>Gateway API</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Штамп «Годен»: что проходит образ, прежде чем попасть в прод]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kuper/articles/1101576/</guid>
      <link>https://habr.com/ru/companies/kuper/articles/1101576/?utm_campaign=1101576&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/db/72/86/db728677d57e391f356f08587dfbad79.jpeg" /><p>В предыдущих статьях цикла мы разобрали, как сканируем код и блокируем релизы через Security Quality Gate. Теперь движемся дальше по пайплайну: к артефакту. В этой статье — как устроен полный цикл контроля Docker-образов в <a href="http://ecom.tech">ecom.tech</a>: от манифеста разрешённых базовых образов до Kyverno, который не пускает в прод ничего без подписи и аттестации с результатами проверок.  </p> <a href="https://habr.com/ru/articles/1101576/?utm_campaign=1101576&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 11:47:49 GMT</pubDate>
      <dc:creator><![CDATA[vimatveev (ecom.tech, Купер)]]></dc:creator>
      
      <category><![CDATA[подпись образов]]></category><category><![CDATA[kyverno]]></category><category><![CDATA[базовые образы]]></category><category><![CDATA[уязвимости контейнеров]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как мы перевозили 400 сервисов между Kubernetes-кластерами на своём велосипеде]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/raiffeisenbank/articles/1102768/</guid>
      <link>https://habr.com/ru/companies/raiffeisenbank/articles/1102768/?utm_campaign=1102768&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/4e/6d/75/4e6d757e43f02a911ca3c2af8bd83040.png" /><p>Приглашаю вас окунуться в страшную историю о том, как мы посреди тёмной ночи, пока никто не видит, на велосипеде перевезли 400 сервисов между кластерами KaaS. И всё это с возможностью отката.</p><p>А всё потому, что три месяца хорошо готовились: переносили окружения одно за другим, оттачивали процесс, ловили и исправляли возможные точки отказа. Мы перебрали несколько готовых инструментов, но в итоге всё-таки сделали свой велосипед.</p><p>Краткий экскурс в страшный сон девопса: переезд ядра банка между кластерами k8s или особенности национальной инфраструктуры.</p> <a href="https://habr.com/ru/articles/1102768/?utm_campaign=1102768&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">К подробоностям</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 09:00:37 GMT</pubDate>
      <dc:creator><![CDATA[SozinovD (Райффайзен Банк)]]></dc:creator>
      
      <category><![CDATA[devops]]></category><category><![CDATA[k8s]]></category><category><![CDATA[helm]]></category><category><![CDATA[cicd]]></category><category><![CDATA[автоматизация развертывания]]></category><category><![CDATA[kubernetes-манифесты]]></category><category><![CDATA[миграция]]></category><category><![CDATA[gitlab ci]]></category><category><![CDATA[инфраструктура kubernetes]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Поставить LLM-шлюз, попросив агента: плагин Keystone для Claude Code]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1100548/</guid>
      <link>https://habr.com/ru/articles/1100548/?utm_campaign=1100548&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/12/ee/78/12ee78934e18d773bc18aee95ddcb51b.gif" /><p><strong>Попросите агента «поставь нам LLM-шлюз», и он уверенно придумает переменные окружения, которых не существует.</strong> Поэтому у Keystone есть плагин для Claude Code: восемь скиллов, которые знают настоящие команды, флаги и поля конфига, и MCP-сервер, через который агент видит, что запущено. Ключи при этом в чат не попадают.</p><p>Keystone. The Model Switchboard. (KTMS) — self-hosted LLM-шлюз на Go: сервисы ходят в одну точку, а он хранит ключи вендоров, выбирает модель по правилам, переключается при отказах и держит лимиты расходов. Про сам шлюз была <a href="https://habr.com/ru/articles/1099790/" rel="noopener nofollow">релизная статья</a>, здесь — как его поставить за один разговор с агентом.</p> <a href="https://habr.com/ru/articles/1100548/?utm_campaign=1100548&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 08:30:35 GMT</pubDate>
      <dc:creator><![CDATA[coylOne]]></dc:creator>
      
      <category><![CDATA[claude code]]></category><category><![CDATA[агенты]]></category><category><![CDATA[mcp]]></category><category><![CDATA[keystone]]></category><category><![CDATA[llm]]></category><category><![CDATA[шлюз]]></category><category><![CDATA[devops]]></category><category><![CDATA[self-hosted]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Сервис тормозил. Уменьшили таймаут — стало хуже]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1103782/</guid>
      <link>https://habr.com/ru/articles/1103782/?utm_campaign=1103782&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/5a/d8/c4/5ad8c4f4843e7c11e989e813a689acc2.png" /><p>Когда API долго ждёт зависимость, хочется сократить таймаут. Запрос быстрее получит ошибку, освободит ресурсы и перестанет висеть. Но сразу возникает следующий вопрос: что приложение сделает после этой ошибки? Если оно без паузы повторит тот же вызов, короткое ожидание может превратиться в большую очередь на другой стороне.</p><p>В моём проекте Prod is Down есть учебный кейс с такой цепочкой: первое исправление вскрывает проблему с повторами. Для этого разбора я собрал отдельный локальный стенд и сравнил четыре варианта настроек.</p><p>Условия простые: шесть клиентов обращаются к небольшому TCP-сервису на 127.0.0.1. Одновременно сервис обрабатывает три задания. Первые две секунды обработка занимает 250 мс, затем возвращается к 20 мс. Каждый клиент начинает следующую операцию после завершения предыдущей и небольшой паузы. Каждый вариант запускается на шесть секунд с пустой очередью.</p><p>Важное условие: принятое задание продолжает выполняться, даже если клиент уже закрыл соединение. Так устроена наша тестовая зависимость - отмену принятой работы мы здесь не реализуем. В конкретном приложении это поведение нужно проверять отдельно.</p><p>Сначала оставляем таймаут в одну секунду. Медленный вызов успевает завершиться: первая операция получает ответ примерно через 256 мс. За весь прогон клиенты выполнили 513 успешных операций. Таймаутов не было, а максимум одновременно обрабатываемых и ожидающих заданий составил шесть.</p><p>Теперь меняем только время ожидания: вместо 1000 мс ставим 50 мс. Повторы по-прежнему бесконечные, паузы между ними нет. В настройках нашего стенда это MAX_ATTEMPTS=0 и BACKOFF_BASE=0. Ноль здесь означает отсутствие ограничения, у других библиотек такое значение может иметь другой смысл.</p> <a href="https://habr.com/ru/articles/1103782/?utm_campaign=1103782&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 08:29:42 GMT</pubDate>
      <dc:creator><![CDATA[verin_is]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[api]]></category><category><![CDATA[data bases]]></category><category><![CDATA[linux]]></category><category><![CDATA[devops]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[От коммита до релиза: iOS-инфраструктура hh.ru]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/hh/articles/1103170/</guid>
      <link>https://habr.com/ru/companies/hh/articles/1103170/?utm_campaign=1103170&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/fa/d5/6d/fad56d93d01f2612022bf88176f752f6.png" /><p>Привет! Я Виталий, iOS-разработчик в платформенной команде hh.ru. </p><p>В статье расскажу о пути каждого нашего коммита: от подготовки окружения и генерации проекта на машине разработчика до момента, когда изменения становятся доступны пользователям приложения. Разберём, как пайплайн определяет затронутые сервисы, переиспользует собранный проект в разных тестах, проводит статический анализ и возвращает результаты в PR. Отдельно остановимся на UI-тестах, проследим, как происходит проверка сборок и проекты доходят до релиза. В конце расскажу, какие метрики помогают оценивать скорость поставки и когда можно сокращать повторы тестов.</p> <a href="https://habr.com/ru/articles/1103170/?utm_campaign=1103170&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 05 Nov 2026 05:30:15 GMT</pubDate>
      <dc:creator><![CDATA[hurmavbatone (hh.ru)]]></dc:creator>
      
      <category><![CDATA[ios]]></category><category><![CDATA[ci]]></category><category><![CDATA[cd]]></category><category><![CDATA[jenkins]]></category><category><![CDATA[fastlane]]></category><category><![CDATA[ui-тесты]]></category><category><![CDATA[devops]]></category><category><![CDATA[автоматизация тестирования]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[инфраструктура разработки]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Raytolfas OS v26.11.0: CachyOS, BORE, PipeWire и три сборки]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1103380/</guid>
      <link>https://habr.com/ru/articles/1103380/?utm_campaign=1103380&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Всем привет! Хочу рассказать про релиз своей системы <strong>Raytolfas OS v26.11.0</strong> и о том, как она устроена внутри.</p><p>Главная цель проекта это сделать нормальную систему для игр и работы, где сразу решены частые проблемы linux. К примеру: фризы в играх, лаги звука, вылеты из-за нехватки памяти и неудобный запуск android программ(в моей ос в отличии от остальных предусмотрен WayDroid + libndk).</p> <a href="https://habr.com/ru/articles/1103380/?utm_campaign=1103380&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 04 Nov 2026 17:27:00 GMT</pubDate>
      <dc:creator><![CDATA[mixitosik]]></dc:creator>
      
      <category><![CDATA[Linux]]></category><category><![CDATA[cachyos]]></category><category><![CDATA[open-source]]></category><category><![CDATA[operating system]]></category><category><![CDATA[операционка]]></category><category><![CDATA[разработка операционных систем]]></category><category><![CDATA[дистрибутив linux]]></category><category><![CDATA[raytolfas os]]></category><category><![CDATA[kde plasma]]></category><category><![CDATA[дистрибутив]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как я за сутки восстановил свою соцсеть после того, как хостинг обнулил мой сервер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1103472/</guid>
      <link>https://habr.com/ru/articles/1103472/?utm_campaign=1103472&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/13/de/08/13de08a87c2757921b163e8b820d40e3.png" /><p>Так выглядит Агора сейчас. 4 ноября 2026 года (<a href="https://agorasocial.ru" rel="noopener nofollow">agorasocial.ru</a>)</p><p>2 ноября сервер моей соцсети «Агора» на Beget перестал отвечать. 3 ноября хостинг подтвердил: данные VPS обнулены, бинарные бэкапы потеряны. Меня спасли три вещи: зашифрованные офсайт-бэкапы базы, которые я настроил <strong>за день</strong> до аварии; escrow-ключ для личных сообщений, заложенный в схему ещё раньше; и скрипты переезда, которые я успел написать в репозитории. Агора открылась на новом сервере примерно через 3 часа после того, как Beget подтвердил потерю. Цена: около суток данных и целая коллекция граблей, о которых ниже. Главная моя ошибка: мастер-ключ шифрования лежал только в окружении серверного процесса и в бэкап не входил.</p> <a href="https://habr.com/ru/articles/1103472/?utm_campaign=1103472&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 04 Nov 2026 11:03:42 GMT</pubDate>
      <dc:creator><![CDATA[ars_stu]]></dc:creator>
      
      <category><![CDATA[Агора]]></category><category><![CDATA[pet-project]]></category><category><![CDATA[инди-разработка]]></category><category><![CDATA[disaster recovery]]></category><category><![CDATA[резервное копирование]]></category><category><![CDATA[Supabase]]></category><category><![CDATA[шифрование данных]]></category><category><![CDATA[личные сообщения]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[postmortem разбор Beget]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1103474/</guid>
      <link>https://habr.com/ru/articles/1103474/?utm_campaign=1103474&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/0e/0c/96/0e0c963be474c7d56e189b872fbbff37.png" /><p>Хаборовчане и гости привет!</p><p>Вкратце суть того что произошло. По сути фильм ужасов от Бегет.</p><p><em>В ночь с 1 на 2 ноября 2026 года на нашу инфраструктуру была совершена кибератака с получением доступа к управляющему контуру всей архитектуры и последующим запуском обнуляющих скриптов.... К сожалению, бинарные бэкапы VPS полностью утеряны. Остаётся возможность восстановления данных из файловых бэкапов.... В облачной инфраструктуре (VPS, S3 и Kubernetes) все данные были утрачены.... Настройки CDN, IP утрачены. Мы не сдаёмся и продолжаем поиск способов восстановить эти данные.</em><br>Источник <a href="https://vk.ru/begetru?w=wall-2782733_35546" rel="noopener nofollow">https://vk.ru/begetru?w=wall-2782733_35546</a></p><p>Давайте проведем как говорят SRE инженеры postmortem разбор. Без цели найти виноватых, а с целью понять как сделать так, чтобы такого не случилось с вашей компанией.</p> <a href="https://habr.com/ru/articles/1103474/?utm_campaign=1103474&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 04 Nov 2026 10:45:30 GMT</pubDate>
      <dc:creator><![CDATA[sergey2212]]></dc:creator>
      
      <category><![CDATA[Beget]]></category><category><![CDATA[Бегет]]></category><category><![CDATA[кибератака]]></category><category><![CDATA[информационная безопасность]]></category><category><![CDATA[SRE]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[postmortem]]></category><category><![CDATA[резервное копирование]]></category><category><![CDATA[восстановление данных]]></category><category><![CDATA[VPS]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Контейнер притворяется сервером: четыре места, где выдаёт себя]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1103466/</guid>
      <link>https://habr.com/ru/articles/1103466/?utm_campaign=1103466&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/f1/31/5f/f1315f49bcc4f18a7d671151428e2ab4.png" /><p>Почему free в Docker врёт и ещё три сюрприза PID 1: systemctl, journalctl, free: что ломается, когда сервер - это контейнер?</p> <a href="https://habr.com/ru/articles/1103466/?utm_campaign=1103466&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 04 Nov 2026 10:06:04 GMT</pubDate>
      <dc:creator><![CDATA[verin_is]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[systemd]]></category><category><![CDATA[pid 1]]></category><category><![CDATA[journalctl]]></category><category><![CDATA[cgroups]]></category><category><![CDATA[lxcfs]]></category><category><![CDATA[контейнеры]]></category><category><![CDATA[тренажёр]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[UFW говорит «всё закрыто», а Postgres торчит наружу: пишем аудит портов для docker compose на Python]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1103458/</guid>
      <link>https://habr.com/ru/articles/1103458/?utm_campaign=1103458&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/62/b5/fc/62b5fc7296e568b4240962017b66c184.png" /><p>На этой неделе в топе снова всплыла старая история: свежий VPS, <code>ufw default deny incoming</code>, наружу только 22, 80 и 443, а потом в compose-файле появляется <code>ports: - "5432:5432"</code> — и через пару дней в базе лежит записка с биткойн-кошельком. Почему так происходит, уже разобрали подробно. Я хочу про другое: как сделать так, чтобы такой compose-файл вообще не доехал до сервера.</p><p>Ниже — два небольших скрипта на Python. Первый проверяет compose-файлы до деплоя и падает с ненулевым кодом, если порт опубликован на все интерфейсы. Второй смотрит, что реально слушает на машине, без <code>ss</code> и <code>netstat</code>, прямо из <code>/proc</code>. Весь код я запускал на Python 3.13 и PyYAML 6.0.3, вывод в статье — настоящий.</p> <a href="https://habr.com/ru/articles/1103458/?utm_campaign=1103458&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 04 Nov 2026 09:39:11 GMT</pubDate>
      <dc:creator><![CDATA[nikita-practice]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[docker compose]]></category><category><![CDATA[ufw]]></category><category><![CDATA[iptables]]></category><category><![CDATA[python]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[devops]]></category><category><![CDATA[ci]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Агент починил красный CI: исправил тест, а не код]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/otus/articles/1088902/</guid>
      <link>https://habr.com/ru/companies/otus/articles/1088902/?utm_campaign=1088902&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/0c/1a/c4/0c1ac48ea57c2b2245c1c39679eaece7.png" /><p>AI‑агент исправил упавший CI, сборка стала зелёной&nbsp;— можно мержить? В&nbsp;эксперименте с&nbsp;двумя AI‑ассистентами выяснилось, что&nbsp;при&nbsp;конфликте тестов со спецификацией агенты могут менять сами тесты, подгоняя результат под&nbsp;ожидаемый. В&nbsp;статье разбираем шесть ошибок в&nbsp;организации работы с&nbsp;AI‑агентами и способы защитить тестирование от&nbsp;незаметной подмены требований.</p> <a href="https://habr.com/ru/articles/1088902/?utm_campaign=1088902&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Проверить AI-агента</a>]]></description>
      
      <pubDate>Tue, 03 Nov 2026 11:06:22 GMT</pubDate>
      <dc:creator><![CDATA[sproshchaev (OTUS)]]></dc:creator>
      
      <category><![CDATA[AI-агенты]]></category><category><![CDATA[автоматизация тестирования]]></category><category><![CDATA[тестирование ПО]]></category><category><![CDATA[автоматизация разработки]]></category><category><![CDATA[Java]]></category><category><![CDATA[регрессионное тестирование]]></category><category><![CDATA[контроль качества]]></category><category><![CDATA[надёжность программного обеспечения]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Хаос как сервис: как мы в Авито проверяем устойчивость в проде и подключаем к этому LLM]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/avito/articles/1095198/</guid>
      <link>https://habr.com/ru/companies/avito/articles/1095198/?utm_campaign=1095198&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/c5/28/d0/c528d0585feb4607ac59c3d8a9706183.jpg" /><p>Привет! Меня зовут Илья Садыков, я работаю в команде TestOps в PaaS Авито. Мы отвечаем за инструментарий хаос-тестирования — подхода, при котором в систему намеренно внедряются сбои для её проверки.&nbsp;</p><p>В этой статье я покажу карту нашего хаос-ландшафта, расскажу, зачем нам собственный оркестратор, и подробно разберу, как во всё это встроена LLM. Рассмотрим кейсы от автоматического разбора прошлых инцидентов (LSR) до генерации AI-conclusion по конкретным экспериментам. Все архитектурные решения, о которых расскажу в статье, — из нашего реального продакшена.</p> <a href="https://habr.com/ru/articles/1095198/?utm_campaign=1095198&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 03 Nov 2026 10:44:04 GMT</pubDate>
      <dc:creator><![CDATA[smecsia (AvitoTech)]]></dc:creator>
      
      <category><![CDATA[хаос-инжиниринг]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[ai]]></category><category><![CDATA[chaos]]></category><category><![CDATA[хаос-тесты]]></category><category><![CDATA[chaos engineering]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как приручить LLM-дракона. Архитектура корпоративного AI-шлюза и ограничения классических прокси в работе с нейросетями]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/hstx/articles/1103118/</guid>
      <link>https://habr.com/ru/companies/hstx/articles/1103118/?utm_campaign=1103118&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/6c/dd/d5/6cddd5f483a281d45f638a10145a2231.jpg" /><p>Первый шаг при стихийном внедрении нейросетей — закрыть прямой доступ наружу и направить запросы через привычный корпоративный прокси. Однако у генеративного ИИ иная специфика: стандартные прокси не умеют выявлять конфиденциальные данные в ответах моделей, не видят утечек в промптах и не защищают от перерасхода токенов.</p><p>Под катом — первая часть цикла о создании корпоративного AI-шлюза: почему классические балансировщики не рассчитаны на работу с LLM, как устроена специализированная архитектура и как платформа AI Оптимум обеспечивает контроль контекста, прозрачный учет токенов и безопасность данных.</p> <a href="https://habr.com/ru/articles/1103118/?utm_campaign=1103118&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Кат</a>]]></description>
      
      <pubDate>Tue, 03 Nov 2026 10:21:35 GMT</pubDate>
      <dc:creator><![CDATA[v-hx (Хайстекс)]]></dc:creator>
      
      <category><![CDATA[LLM]]></category><category><![CDATA[AI-шлюз]]></category><category><![CDATA[генеративный ИИ]]></category><category><![CDATA[обратный прокси]]></category><category><![CDATA[Nginx]]></category><category><![CDATA[информационная безопасность]]></category><category><![CDATA[152-ФЗ]]></category><category><![CDATA[инференс]]></category><category><![CDATA[ИИ-агенты]]></category><category><![CDATA[оптимизация затрат]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Миграция продакшен-контура OpenMetadata с Airflow 2 на Airflow 3: что сломалось и как мы это чинили]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/megafon/articles/1102994/</guid>
      <link>https://habr.com/ru/companies/megafon/articles/1102994/?utm_campaign=1102994&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Наш ingestion-контур — это сервис на базе Apache Airflow, который крутит пайплайны загрузки метаданных в OpenMetadata. Поверх стандартного Airflow у нас живёт плагин openmetadata-managed-apis (через него UI OpenMetadata деплоит и дёргает DAG'и), свои утилиты логирования и свой Docker-образ со строго зафиксированными зависимостями.</p><p>Когда мы решили переезжать с Airflow 2 на Airflow 3, мы прочитали официальный migration guide и думали, что основная работа — переименовать параметры и импорты. Спойлер: переименование заняло один вечер, а вся миграция — четыре месяца, несколько десятков коммитов и одну полную смену архитектурного решения на ходу. Ниже — честный разбор по следам нашей git-истории.</p><p><strong>Сначала хронология: это была не миграция, а жизнь на двух мажорах</strong></p><p>Если восстановить события по коммитам, картина выглядит так.</p><p>Новый репозиторий под тройку мы завели в начале марта — и с первого же коммита положили в него constraints-файлы для обеих линеек: и для Airflow 3.1.x, и для старого доброго 2.10.5. Страховка с нулевого дня, и, как показала практика, не лишняя.</p><p>Дальше две недели шла интенсивная работа в ветке airflow-3: даги, плагин, логирование, типы. Но в конце марта — после того как «миграция уже почти закончена» — в develop влилась параллельная ветка airflow-2.11 с фиксами для старой линии. Продакшен всё ещё жил на двойке, и его надо было обслуживать.</p><p>Последствия этого мерджа обнаружились в начале апреля: рефакторинг дагов под новый API пришлось делать заново, потому что develop «отъехал» к дагам в старом стиле. Та же самая правка, что была сделана в середине марта, во второй раз прошла по тем же файлам в начале апреля. Отдельно весной мы продолжали латать сборку двойки: откаты транзитивных зависимостей и свежие constraints для 2.11.x датированы апрелем — когда, казалось бы, мы уже «на тройке».</p> <a href="https://habr.com/ru/articles/1102994/?utm_campaign=1102994&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 03 Nov 2026 08:50:47 GMT</pubDate>
      <dc:creator><![CDATA[DENZEL_WASHINGTON (МегаФон)]]></dc:creator>
      
      <category><![CDATA[airflow]]></category><category><![CDATA[data catalog]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Запоздавший INSERT при откате: разбор сбоя на стенде SQLite]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102716/</guid>
      <link>https://habr.com/ru/articles/1102716/?utm_campaign=1102716&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/b8/b0/c9/b8b0c9f522a8baa35a024d938bc793a8.png" /><p>Проверка отката видит ноль записей v2 и допускает старого читателя. Поздний INSERT ломает следующее чтение. Разбор выполненного стенда Python/SQLite: транзакционная проверка политики, оба порядка commit и условия допуска старой версии. Полный код стенда и все тесты приведены в статье в раскрывающихся блоках.</p> <a href="https://habr.com/ru/articles/1102716/?utm_campaign=1102716&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 03 Nov 2026 07:49:28 GMT</pubDate>
      <dc:creator><![CDATA[Fytyreryadom]]></dc:creator>
      
      <category><![CDATA[rollback]]></category><category><![CDATA[совместимость данных]]></category><category><![CDATA[fencing]]></category><category><![CDATA[транзакции]]></category><category><![CDATA[SQLite]]></category><category><![CDATA[миграции]]></category><category><![CDATA[фоновые задачи]]></category><category><![CDATA[Python]]></category><category><![CDATA[SRE]]></category><category><![CDATA[ci-cd]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему UFW не спасает от Docker: анатомия сетевой подставы и что ищут боты в открытых портах БД]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102784/</guid>
      <link>https://habr.com/ru/articles/1102784/?utm_campaign=1102784&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/de/f8/0c/def80c2fff912858606936544f535872.jpeg" /><p>Типичная картина при&nbsp;переезде на&nbsp;свежий VPS. Подняли чистую Ubuntu или&nbsp;Debian под&nbsp;новый проект, сразу навели базовый порядок: <code>ufw default deny incoming</code>, снаружи оставили только 22, 80&nbsp;и 443. Глянули <code>ufw status</code>&nbsp;— всё четко, лишнего не&nbsp;торчит. Дальше ставится Docker, через компоуз взлетает бэкенд с&nbsp;PostgreSQL и Redis. Чтобы удобно ходить в&nbsp;базу с&nbsp;ноута через DBeaver и гонять миграции, на&nbsp;автомате дописываем <code>ports: - "5432:5432"</code>. Кажется, что&nbsp;мы в&nbsp;домике: наружу ничего не&nbsp;светит, фаервол&nbsp;же режет всё, кроме веба и SSH.</p><p>А&nbsp;через пару дней прилетает абуза от&nbsp;хостера или&nbsp;срабатывает алерт в&nbsp;мониторинге: все ядра в&nbsp;полке, в <code>htop</code> резвится какой‑нибудь <code>kdevtmpfsi</code> или <code>kinsing</code>, а&nbsp;вместо таблиц в&nbsp;базе лежит одна записка <code>README_TO_RECOVER</code> с&nbsp;биткойн‑кошельком. Грабли старые, как&nbsp;сам Docker. Но&nbsp;на&nbsp;них с&nbsp;завидной регулярностью наступают и джуны, и вполне опытные админы, привыкшие доверять выводу <code>ufw status</code>.</p> <a href="https://habr.com/ru/articles/1102784/?utm_campaign=1102784&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Разобрать анатомию подставы</a>]]></description>
      
      <pubDate>Mon, 02 Nov 2026 13:07:15 GMT</pubDate>
      <dc:creator><![CDATA[softcoder2020]]></dc:creator>
      
      <category><![CDATA[docker]]></category><category><![CDATA[ufw]]></category><category><![CDATA[iptables]]></category><category><![CDATA[netfilter]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[devops]]></category><category><![CDATA[информационная безопасность]]></category><category><![CDATA[sysadmin]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] От Podman до продакшена: сборка доверенных контейнерных образов с Konflux]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102592/</guid>
      <link>https://habr.com/ru/articles/1102592/?utm_campaign=1102592&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Я работаю в&nbsp;Red Hat Senior SRE в&nbsp;команде Konflux Infra. Мы отвечаем за&nbsp;инфраструктуру вокруг Konflux CI,‑ системы сборки, которую развивает Red Hat. За&nbsp;кластеры, на&nbsp;которых он живёт, за&nbsp;Terraform под&nbsp;ними, за&nbsp;бэкапы и аварийное восстановление, за&nbsp;выкатку новых версий. За&nbsp;всю ту обвязку, которая обязана просто работать, чтобы команды, собирающие на&nbsp;Konflux свои продукты, о&nbsp;ней вообще не&nbsp;вспоминали.</p><p>Сам Konflux, пожалуй, стоит представить отдельно, потому что&nbsp;за&nbsp;пределами Red Hat о&nbsp;нём пока мало кто слышал. Это открытая Kubernetes‑native система сборки. Kubernetes‑native в&nbsp;самом буквальном смысле: пайплайны здесь&nbsp;— это кастомные ресурсы, которые лежат в&nbsp;кластере и выполняются как&nbsp;поды, и никакого отдельного сервера сборки рядом не&nbsp;стоит. От&nbsp;обычного раннера пайплайнов его отличает то, что&nbsp;он построен вокруг безопасности цепочки поставок. Сборка идёт с&nbsp;отключённой сетью, образы подписываются, на&nbsp;выходе появляются SBOM и провенанс SLSA, а&nbsp;перед релизом стоит гейт, который решает, можно&nbsp;ли вообще выпускать то, что&nbsp;получилось. Ничего из&nbsp;этого включать не&nbsp;надо. Это поведение по&nbsp;умолчанию.</p><p>Но&nbsp;вот в&nbsp;чём штука. Эксплуатировать инфраструктуру под&nbsp;инструментом и пользоваться самим инструментом, это две разные вещи. Konflux я неплохо знал со стороны самой инфраструктуры и куда хуже,‑ со стороны человека ('end‑user'), которому просто надо выкатить контейнерный образ. Поэтому я решил собрать что‑нибудь сам, от&nbsp;начала до&nbsp;конца, как&nbsp;это сделал&nbsp;бы любой пользователь. В&nbsp;основном чтобы наконец разобраться.</p> <a href="https://habr.com/ru/articles/1102592/?utm_campaign=1102592&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 02 Nov 2026 09:14:11 GMT</pubDate>
      <dc:creator><![CDATA[4sokol]]></dc:creator>
      
      <category>cicd</category><category>kubernetes</category><category>konflux</category><category>security</category><category>openshift</category><category>containers</category><category>tekton</category><category>redhat</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Зелёный мониторинг и сломанная корзина: как устроены сценарные проверки в Statuser]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/timeweb/articles/1102272/</guid>
      <link>https://habr.com/ru/companies/timeweb/articles/1102272/?utm_campaign=1102272&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/94/6c/8e/946c8e557c8603329e76ed0257e2d0c7.png" /><p>Почти каждый, кто выкатывал релизы, видел такую картину. Сайт открывается, сервер отвечает 200, сертификат в порядке, и мониторинг весь вечер показывает зелёный статус. А кнопка «Оформить заказ» после релиза перестала работать, и узнают об этом утром из писем покупателей.</p><p>Обычная проверка доступности такой сбой не заметит: она узнаёт, отвечает ли сайт, а не можно ли им пользоваться. Чтобы это узнать, проверка должна сама пройти путь пользователя: открыть страницу, войти в кабинет, положить товар в корзину. Так в Statuser появились сценарные проверки: тесты на Playwright, которые мы запускаем по расписанию в настоящем браузере.</p><p>Снаружи это ещё один тип мониторинга, а внутри Statuser впервые выполняет код, который написал клиент. Почти вся работа над фичей свелась к двум вещам: выполнять этот код безопасно и показывать человеку, что именно сломалось на его сайте.</p><p>Меня зовут Михаил Шпаков, я развиваю <a href="https://statuser.cloud/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=scenario-monitoring&amp;utm_content=intro">Statuser</a>. В прошлых статьях я рассказывал, <a href="https://habr.com/ru/companies/timeweb/articles/958754/">зачем научил Statuser следить за DNS</a> и <a href="https://habr.com/ru/companies/timeweb/articles/1079144/">почему 200 OK от гейтвея ничего не значит</a>, а сегодня расскажу, как устроены сценарные проверки.</p> <a href="https://habr.com/ru/articles/1102272/?utm_campaign=1102272&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 02 Nov 2026 09:05:17 GMT</pubDate>
      <dc:creator><![CDATA[mikhailshpakov (Timeweb Cloud)]]></dc:creator>
      
      <category><![CDATA[Statuser]]></category><category><![CDATA[мониторинг]]></category><category><![CDATA[Playwright]]></category><category><![CDATA[gVisor]]></category><category><![CDATA[DevOps]]></category><category><![CDATA[синтетический мониторинг]]></category><category><![CDATA[uptime]]></category><category><![CDATA[timeweb_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Ноутбук DevOps-инженера и $6,3 млрд: почему на безопасность нужно выделять время]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102504/</guid>
      <link>https://habr.com/ru/articles/1102504/?utm_campaign=1102504&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>29 октября из Binance, крупнейшей криптобиржи мира, вывели около $6,3 млрд. По первой версии самой биржи, всё началось со скомпрометированного ноутбука DevOps-инженера.</p><p>Через ноутбук атакующий добрался до service container и оттуда отправил транзакции на вывод. Ключи от кошельков не утекли: транзакции подписала сама система биржи, потому что запрос пришёл изнутри.</p><p>Криптовалюта здесь вторична. Мне интереснее другое: задачи по безопасности у нас месяцами лежат в бэклоге, а ноутбук инженера с доступом в прод остаётся самым удобным входом в компанию.</p> <a href="https://habr.com/ru/articles/1102504/?utm_campaign=1102504&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 02 Nov 2026 07:18:31 GMT</pubDate>
      <dc:creator><![CDATA[virelos]]></dc:creator>
      
      <category><![CDATA[devops]]></category><category><![CDATA[информационная безопасность]]></category><category><![CDATA[devsecops]]></category><category><![CDATA[binance]]></category><category><![CDATA[ии-агенты]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Яnetes — Kubernetes для тех, у кого свои масштабы (и для страданий, конечно)]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102250/</guid>
      <link>https://habr.com/ru/articles/1102250/?utm_campaign=1102250&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/03/df/6e/03df6e13cee9434e6350261a5b5f5111.jpg" /><p>Вчера звонил Сатана. Оказывается, в аду зачитываются фанфиком про Gachinetes. Они давно хотели улучшить систему своих пыток, сделать ее более клиентоориентированной и подстроенной под каждого посетителя. </p><p>По словам Люцифера, им понадобился подходящий инструмент для пыток продуктовых команд Яндекса. Взамен он обещал, что после смерти найдет мне местечко в подземелье Вана, чтобы я не слишком страдал в аду, а даже радовался загробной гачи-жизни. Предложение было слишком привлекательным, чтобы отказываться. Да и Веельзевул мужичонка солидный, иметь таких в пуле должников весьма полезно.   </p><p>Так появился особый дистрибутив для инженеров Яндекса, попавших в ад, Яnetes.</p> <a href="https://habr.com/ru/articles/1102250/?utm_campaign=1102250&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 01 Nov 2026 12:40:07 GMT</pubDate>
      <dc:creator><![CDATA[TimurTukaev]]></dc:creator>
      
      <category><![CDATA[яндекс]]></category><category><![CDATA[kubernetes]]></category><category><![CDATA[ydb]]></category><category><![CDATA[yandex cloud]]></category><category><![CDATA[on premise]]></category><category><![CDATA[bare metal]]></category><category><![CDATA[дистрибутив]]></category><category><![CDATA[платформа]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как мои автоматические проверки врали мне зеленым цветом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102196/</guid>
      <link>https://habr.com/ru/articles/1102196/?utm_campaign=1102196&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/3c/c4/3d/3cc43d1d48c930d2b29b64d2a538557b.png" /><p>Почти весь код своего проекта kb-engine я писал вместе с ИИ-агентом и быстро понял: правило, которое можно пропустить, когда неудобно, никто соблюдать не будет. Работает только то, что проверяет код.</p><p>Сейчас в проекте 21 автоматическая проверка. Вот пять историй, и в нескольких из них проверка была зеленой и при этом ничего не проверяла.</p> <a href="https://habr.com/ru/articles/1102196/?utm_campaign=1102196&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 01 Nov 2026 09:26:46 GMT</pubDate>
      <dc:creator><![CDATA[vdv007]]></dc:creator>
      
      <category><![CDATA[git hooks]]></category><category><![CDATA[pre-commit]]></category><category><![CDATA[CI]]></category><category><![CDATA[TDD]]></category><category><![CDATA[тестирование]]></category><category><![CDATA[supply chain]]></category><category><![CDATA[ИИ-агенты]]></category><category><![CDATA[Go]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Ключ корня DNS сменили 11 октября: что делает старый резолвер в пересозданном контейнере]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102184/</guid>
      <link>https://habr.com/ru/articles/1102184/?utm_campaign=1102184&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/b9/f7/e7/b9f7e7af99b0eff05767c2c35e70d70e.jpg" /><p>С 11 октября 2026 года корень DNS подписывает набор ключей только новым KSK-2024 (38696). За четыре дня до смены Эфраин Гарай показал, что BIND из Debian 11 с одним старым ключом при первом запуске сам начинает доверять новому. Через 20 дней после смены я запустил тот же BIND с пустым состоянием, как в пересозданном контейнере: SERVFAIL на всё, включая неподписанный google.com. Для unbound такой старт спасает unbound-anchor, но только при открытом HTTPS к data.iana.org, а при неудаче пишет старый ключ и выходит с кодом 0. dnsmasq из Debian 12 со своим файлом якорей отказывает на всём, а с якорями, где есть 38696, работает: их подставляет сервисная обёртка дистрибутива.</p> <a href="https://habr.com/ru/articles/1102184/?utm_campaign=1102184&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sun, 01 Nov 2026 06:16:49 GMT</pubDate>
      <dc:creator><![CDATA[opium]]></dc:creator>
      
      <category><![CDATA[DNS]]></category><category><![CDATA[DNSSEC]]></category><category><![CDATA[KSK]]></category><category><![CDATA[BIND]]></category><category><![CDATA[unbound]]></category><category><![CDATA[dnsmasq]]></category><category><![CDATA[Docker]]></category><category><![CDATA[Debian]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Жизнь после блокировки: нейронки изменили мою профессию и я не хочу снова работать по‑старому]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1102092/</guid>
      <link>https://habr.com/ru/articles/1102092/?utm_campaign=1102092&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/f4/2c/fc/f42cfc580e72f24338e5c0c930e301b1.png" /><p>Недавние истории с&nbsp;блокировками от&nbsp;Anthropic заставили&nbsp;меня всерьез задуматься,&nbsp;как&nbsp;я буду работать,&nbsp;если и мой&nbsp;аккаунт отлетит в&nbsp;бан.</p><p>В&nbsp;мгновение я поймал себя на&nbsp;мысли,&nbsp;насколько сильно&nbsp;изменилась моя инженерная профессия.&nbsp;Прошло всего около&nbsp;года,&nbsp;но&nbsp;я&nbsp;уже вспоминаю прежний уклад своей деятельности, как&nbsp;что‑то очень далекое из&nbsp;прошлой жизни.</p><p>Но&nbsp;самое главное в&nbsp;другом:&nbsp;я осознал,&nbsp;что&nbsp;меня пугает&nbsp;возврат назад...</p> <a href="https://habr.com/ru/articles/1102092/?utm_campaign=1102092&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">и вот почему</a>]]></description>
      
      <pubDate>Sat, 31 Oct 2026 14:21:22 GMT</pubDate>
      <dc:creator><![CDATA[bissquit]]></dc:creator>
      
      <category><![CDATA[claude]]></category><category><![CDATA[ии-агенты]]></category><category><![CDATA[революция в ии]]></category><category><![CDATA[администрирование]]></category><category><![CDATA[devops]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Старый софт на свежем Linux: свой GCC, свой OpenSSL и честный RPATH]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1101800/</guid>
      <link>https://habr.com/ru/articles/1101800/?utm_campaign=1101800&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>А что если… нужен старый софт, но при этом хост Linux свежий?</p><p>Как вариант, можно взять, да хоть на примере питона, нужный официальный образ в докере. Да и пользоваться.</p><p>Казалось бы, проблема решена. <em>Но есть нюанс (с)</em>. Добро пожаловать под кат.</p> <a href="https://habr.com/ru/articles/1101800/?utm_campaign=1101800&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 30 Oct 2026 13:47:37 GMT</pubDate>
      <dc:creator><![CDATA[Stam_emg]]></dc:creator>
      
      <category><![CDATA[gcc]]></category><category><![CDATA[rpath]]></category><category><![CDATA[openssl]]></category><category><![CDATA[docker]]></category><category><![CDATA[astralinux]]></category><category><![CDATA[python]]></category><category><![CDATA[php]]></category><category><![CDATA[legacy]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Домашний прод, часть 1: от двух LXC до Istio]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1101374/</guid>
      <link>https://habr.com/ru/articles/1101374/?utm_campaign=1101374&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/fd/84/89/fd84895fc2aa654920cd01474abef7d7.png" /><p>Я DevOps-инженер. В DevOps я перешел незадолго до начала этой истории, а до того год работал в сопровождении с элементами SRE. Еще раньше я сидел в центре мониторинга сетей у телеком-оператора. Дома у меня мини-ПК и медиасервер, которым каждый вечер пользуется семья. На этом медиасервере я и учился тому, за чем пришел в профессию: Kubernetes, Istio, Jenkins.</p><p>Медиасервер у меня собран из целого arr-стека. Так называют набор self-hosted сервисов, которые сами находят, качают и раскладывают по папкам фильмы и сериалы. Смотрим мы все в Jellyfin, это медиасервер, что-то вроде домашнего КиноПоиска. Заявки принимает Seerr (раньше он назывался Jellyseerr): выбрал фильм на витрине, и заявка ушла дальше. Фильмами занимается Radarr, сериалами Sonarr. Оба спрашивают Prowlarr, а тот ищет раздачи по торрент-трекерам. Если трекер закрыт капчей Cloudflare, Prowlarr проходит ее через FlareSolverr. Качает qBittorrent, субтитры подбирает Bazarr. Когда все работает, человек нажимает одну кнопку, и через какое-то время фильм появляется в Jellyfin.</p><p>В прошлой статье, «<a href="https://habr.com/ru/articles/1063064/" rel="noopener nofollow">Я даже не пойму, если что-то сломал</a>», я рассказывал, как бросил учебный демо-магазин и перенес все на медиасервер. Закончил я ее тем, что фильм играет, а значит, о поломке я узнаю. С дивана, как потом выяснилось, видно далеко не все. Самые неприятные ошибки за следующие месяцы выглядели как успех: джоба писала, что все прошло, кино играло, а того, что должно было случиться, не случалось.</p><p>Пишу я это прежде всего для себя. С конца мая по конец октября 2026 года я сделал много отдельных кусков и ни разу не видел путь целиком. Хочу собрать его в одном месте и понять, что вообще произошло. Текста вышло на три статьи. Эта первая, про кластер, хранилище, Istio и платформу вокруг. Во второй будет свой сервис, сборка с проверками безопасности и то, как код у меня начал писать агент. В третьей Helm, фронт, возвращение к Istio, просмотр фильма, пока он качается, и Argo CD.</p> <a href="https://habr.com/ru/articles/1101374/?utm_campaign=1101374&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 30 Oct 2026 13:14:53 GMT</pubDate>
      <dc:creator><![CDATA[PaulNoks]]></dc:creator>
      
      <category><![CDATA[devops]]></category><category><![CDATA[devops-инженер]]></category><category><![CDATA[kubernetes]]></category><category><![CDATA[istio]]></category><category><![CDATA[jenkins]]></category><category><![CDATA[infrastructure]]></category><category><![CDATA[инфраструктура]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Зоопарк версий под контролем: как я создал enodia — инвентаризацию сервисов с EOL и CVE]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1101784/</guid>
      <link>https://habr.com/ru/articles/1101784/?utm_campaign=1101784&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/2e/e9/1a/2ee91a0474f475e80af3fffe53580148.png" /><p>Сколько у&nbsp;вас в&nbsp;инфраструктуре версий PostgreSQL? А&nbsp;какие из&nbsp;них уже не&nbsp;поддерживаются? А&nbsp;сколько CVE висит на&nbsp;том nginx, который «работает&nbsp;— не&nbsp;трогай»?</p><p>Если вы ответили на&nbsp;все три вопроса без&nbsp;поиска по&nbsp;чатам и вики, дальше можно не&nbsp;читать. А&nbsp;я в&nbsp;какой‑то момент понял, что&nbsp;не&nbsp;могу, и написал для&nbsp;этого инструмент. Под&nbsp;катом история о&nbsp;том, как&nbsp;он появился, на&nbsp;какие грабли я наступил по&nbsp;дороге и почему MySQL однажды заблокировал собственный хост из‑за моего мониторинга.</p> <a href="https://habr.com/ru/articles/1101784/?utm_campaign=1101784&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 30 Oct 2026 13:13:24 GMT</pubDate>
      <dc:creator><![CDATA[Stam_emg]]></dc:creator>
      
      <category><![CDATA[eol]]></category><category><![CDATA[cve]]></category><category><![CDATA[инвентаризация]]></category><category><![CDATA[бду]]></category><category><![CDATA[бду фстэк]]></category><category><![CDATA[nvd]]></category><category><![CDATA[go]]></category><category><![CDATA[devops]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Если бы облачные сервисы были оружием, то MongoDB — граната без чеки]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/h3llo_cloud/articles/1101780/</guid>
      <link>https://habr.com/ru/companies/h3llo_cloud/articles/1101780/?utm_campaign=1101780&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/04/5a/13/045a132b04b292653fa373ae70387c75.jpg" /><p>У нас под постом про ЦОДы развернулась дискуссия: какой должна быть ракета, чтобы устроить дата-центру пробитие. Я почувствовал себя среди оружейных баронов и экспертов по уничтожению дата-центров.</p><p>Знаете, у нас есть некоторая экспертиза в этом. Потому что сгоревших ЦОДов мало, а вот попадавших из-за кривых рук — очень много. Поэтому мы тут решили на Хэллоуин сравнить разные технологии с тем, как бы выглядело оружие на их базе.</p><p>Кроме MongoDB без чеки из заголовка у нас есть ещё 20 не менее убойных штук. </p> <a href="https://habr.com/ru/articles/1101780/?utm_campaign=1101780&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 30 Oct 2026 13:12:39 GMT</pubDate>
      <dc:creator><![CDATA[km1337 (h3llo.cloud)]]></dc:creator>
      
      <category><![CDATA[h3llo]]></category><category><![CDATA[облачные сервисы]]></category><category><![CDATA[дата-центры]]></category><category><![CDATA[оружие]]></category><category><![CDATA[виртуалки]]></category><category><![CDATA[Serverless]]></category><category><![CDATA[Kubernetes]]></category><category><![CDATA[юмор]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как IaC, документация и бэкапы помогли восстановить сервисы, когда пострадали дата-центры Яндекса]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/kts/articles/1101622/</guid>
      <link>https://habr.com/ru/companies/kts/articles/1101622/?utm_campaign=1101622&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/extt/8e/bb/80/8ebb80add4a608481c5b300c740f917c.png" /><p>Привет, я Сергей, DevOps-инженер в <a href="https://kts.tech/devops">KTS</a>. Перейду сразу к делу.</p><p>К отказу отдельной виртуалки вы наверняка готовы. Но не все готовы к другому классу аварии: к потере площадки, на которой находятся почти все ВМ проекта.</p><p>Именно с такой ситуацией столкнулся один из наших заказчиков после серии атак на дата-центры Яндекса в октябре 2026 года. Компания<a href="https://yandex.ru/company/news/09-10-2026-01"> сообщила</a>, что дата-центр в Сасово был серьезно поврежден и полностью остановлен, часть инфраструктуры площадки в Калуге вышла из строя, а позднее остановилась работа дата-центра во Владимире.</p><p>Авария затронула инфраструктуру Yandex Cloud, где работали сервисы нашего заказчика. Восстановить работу системы на прежней площадке в тот момент было невозможно, а очередь за новыми ресурсами обрабатывалась несколько дней.</p><p>Заказчика и его внутренние системы я называть не буду, статья не о нем. На его примере я хочу поговорить о механике восстановления: что происходит после потери основного дата-центра и какие инженерные практики помогают вернуть бизнес в рабочее состояние.</p> <a href="https://habr.com/ru/articles/1101622/?utm_campaign=1101622&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 30 Oct 2026 10:24:06 GMT</pubDate>
      <dc:creator><![CDATA[sskussev (KTS)]]></dc:creator>
      
      <category><![CDATA[цод]]></category><category><![CDATA[yandex cloud]]></category><category><![CDATA[восстановление]]></category><category><![CDATA[авария]]></category><category><![CDATA[резервирование]]></category><category><![CDATA[iac]]></category><category><![CDATA[документация]]></category><category><![CDATA[практики]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Оперативка есть? А если найду?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1101610/</guid>
      <link>https://habr.com/ru/articles/1101610/?utm_campaign=1101610&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Снова статья о том, как надо/не надо делать. </p><p>Long story short.</p><p>У меня все еще работает CHUWI CoreBox, который уже появлялся в предыдущих статьях: Core i7-13620H, 16 ГБ LPDDR5 (а жаль!), SSD на 512 ГБ. Он успел побыть прокси, NAS, VPN, сервером Lineage 2 и складом 3D-моделей для печати. Склад потом переехал на отдельный накопитель, а сбор моделей я остановил. Даже качественные модели скачивались гораздо быстрее, чем я успевал их печатать. На освободившемся мини-ПК шла разработка своего продукта, ибо я привык к linux, и там же крутились тесты. С обычными проверками еще можно было жить, но мутационное тестирование занимало часы. Хотелось продолжать работу, пока оно выполняется, а свободных ресурсов на той же машине было немного.</p><p>Зато рядом стоял мой любимый игровой компьютер: Ryzen 9 9950X3D и золотые 64 ГБ Kingston FURY Beast DDR5-6000 CL30. Память до 64 ГБ я докупал в 2026 году. Кто в этом году собирал комплуктер, тот понимает, почему я сейчас это упоминаю и ставлю на этом акцент.<br>К этому моменту я уже смотрел по квартире, у чего еще есть оперативка. Поглядывал дергающимся глазом на робот-пылесос и духовку. Если они подключаются к Wi-Fi, значит, они чем-то думают и чем-то помнят.</p><p>Но начал все-таки с ПК. Windows оставил на месте, потому что игры нужно на чем-то играть, поставил WSL с Ubuntu и отдельным Docker. Разработку оставил на мини-ПК, а тяжелые проверки решил вынести на игровую машину. Первый измеренный запуск PIT на ней занял больше девяти часов и закончился с ошибкой памяти. Это же разочарование я ловил много раз на мини-пк, разбирал по этому разочарованию логи, в течение десятков часов, в надежде исключить дефицит памяти. Смотрим.</p> <a href="https://habr.com/ru/articles/1101610/?utm_campaign=1101610&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 30 Oct 2026 09:16:37 GMT</pubDate>
      <dc:creator><![CDATA[likhachevperm]]></dc:creator>
      
      <category><![CDATA[мутационное тестирование]]></category><category><![CDATA[PIT]]></category><category><![CDATA[WSL2]]></category><category><![CDATA[Docker]]></category><category><![CDATA[Testcontainers]]></category><category><![CDATA[JVM]]></category><category><![CDATA[Gradle]]></category><category><![CDATA[Kotlin]]></category><category><![CDATA[Spring Boot]]></category><category><![CDATA[автоматизация тестирования]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
