Обновить
256K+

DevOps *

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

363,35
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как одна забытая зависимость уронила прод и привела к появлению Dependency Validator

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели10K

Привет, Хабр. Я Матвей Лихота, старший Go-разработчик и DevSecOps. Как это часто бывает с внутренними инструментами, идея этой утилиты появилась уже после того, как у нас упал прод. Во время хотфикса сотрудник забыл обновить в одном из двух сервисов версию библиотеки с контрактами и в результате в зависимостях осталась предыдущая версия. Перед слиянием код собирался и тесты проходили, но после деплоя сервис упал с ошибкой 500: новое поле в структуре запроса не появилось на сервере. Пришлось откатить изменения и даунтайм был ощутимый.

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

Тогда я решил, что теперь проверять актуальность зависимостей будет CI. Так и появился Dependency Validator.

Читать дальше

От uname до промпта на 919 тысяч символов: три месяца внутри двух ханипотов

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели9.8K

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

Другой клиент отправил в открытый Ollama-compatible API 27 тысяч реальных задач. Самый большой промпт содержал 919 тысяч символов. Модели за API при этом не было.

Я три месяца наблюдал за двумя среднеинтерактивными ханипотами — традиционным SCADA/Bitrix-стендом и поддельным AI gateway. В статье разбираю 2,5 млн событий Cowrie, стотысячный MySQL password spray, 183 сохранённых payload, массовую эксплуатацию AI API и MCP-разведку.

Читать далее

Расследование по Kubernetes events, которых уже нет

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели6.9K

Высокий уровень observability в наше время — такое же необходимое условие для любого проекта, как и высокая доступность или производительность. Мы стараемся собрать и сохранить максимум метрик, чтобы понимать, в каком состоянии находится наша система и куда это состояние дрейфует. Собираем максимум логов, чтобы понимать, что происходило. Но даже когда логов и метрик настолько много, что для них собираются свои логи и метрики, иногда этого бывает недостаточно. Иногда нужно понимать не ЧТО и КОГДА, а ПОЧЕМУ.

В мире Kubernetes такой источник есть — events: именно они отвечают, почему под перезапустился, почему не смог подняться, почему не встал на ноду. Парадоксально, но эти чрезвычайно важные сведения довольно неудобно извлекать, а по умолчанию через час они уже исчезают. С этим обычно мирятся — ровно до утра, когда нужно объяснить, почему ночью упали сборки. Дальше история одного такого утра: начинается она с двух неудачных пайплайнов, заканчивается часовым окном нестабильности, задевшим 46 namespace'ов, и ни одной улики к моменту расследования в кластере уже не остаётся.

Читать далее

Универсальный подход к регрессионному тестированию микросервисов: интеграция Postman, Newman и Python в Jenkins

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели6.7K

Привет всем заглянувшим!

В этой статье я поделюсь опытом автоматизации API‑тестирования связкой Postman + Newman, но с небольшим «секретным ингредиентом». Мы не просто будем запускать коллекции в Jenkins напрямую, а используем универсальный Python‑скрипт, который превращает стандартный прогон в мощный инструмент мониторинга.

В чем «фишка» этого подхода?

Обычно Newman выдает довольно сухие отчеты. Мой скрипт выступает в роли умной прослойки: он обрабатывает результаты тестов на статус‑коды, собирает данные и упаковывает их в наглядный Allure‑отчет. Более того, здесь добавлена функция почтовых уведомлений, чтобы контролировать состояние системы, не заходя в Jenkins.

Читать далее

От капстоуна к продакшену: fail‑fast, structured logs, Prometheus и Docker‑образ 8.15GB → 1.35GB

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6K

У меня есть RAG‑сервис: проверяет фактологические утверждения в бизнес‑отчётах против реальных источников — SEC EDGAR, World Bank, FRED, Wikipedia. Это капстоун LLM Zoomcamp (DataTalksClub). Курс закончился, оценку поставили (peer review, 42/42), а я решил дотянуть проект до состояния «не стыдно показать на собеседовании как рабочий код», а не просто «закрыл критерии оценки курса».

Читать далее

CI — это не Jenkins. Зачем, как, чем — и цена отказа

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.1K

Пайплайн у вас есть. Он есть у всех: CI перестал быть предметом споров примерно тогда же, когда Docker перестал быть новостью. Именно поэтому разговор пора вести другой - не “зачем вам CI”, а можно ли верить вашему зелёному пайплайну, сколько он стоит и кто им владеет. Разбор в формате “зачем - как - чем - цена отказа” - пилот рубрики: дальше в ней будут другие практики, формат останется.

Читать далее

С нуля до Junior DevOps в 2026 году. Часть 7.2. Ansible в DevOps: Docker, Kubernetes, CI/CD и Terraform

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели12K

Как Ansible вписывается в современную DevOps-инфраструктуру? В этой статье разберём связку Terraform → Ansible → Docker → Kubernetes → CI/CD и на практике создадим воспроизводимый проект. Статья ориентирована на тех, кто уже знаком с базовыми возможностями Ansible.

Читать далее

ИИ в эксплуатации (AIOps): разбор алертов и автоматизация инцидентов

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели13K

В марте 2025 года Gartner сделал то, чего индустрия ждала несколько лет: официально переименовал категорию AIOps в Event Intelligence Solutions. Причина — ИИ-хайп, из-за которого слово «AIOps» превратилось в бессмыслицу: вендоры называли искусственным интеллектом всё подряд, ИТ-директора разочаровались, а инженеры получили ещё один слой непредсказуемой автоматики.

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

Разбираем реальные, а не маркетинговые возможности ML и LLM в эксплуатации: что уже работает, где границы и с чего начать на своём стеке без дорогих платформ.

Разобрать без хайпа →

Вышла бета f4

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели19K

И она потрясающая, но я несколько выбился из сил, поэтому, как говорится, простите за неровный почерк :) Напоминаю контекст: f4 — эксперимент по переписыванию Far на go, чтобы сразу и кроссплатформенно и асинхронно. И красиво.

С красоты и начнём. На днях во фреймворк консольных интерфейсов vtui, который пишется под f4, добавлена поддержка Auto layout. Можно делать диалоги как у Apple! А чтобы это смотрелось красиво, предусмотрены две стратегии хинтинга: байткод, по аналогии с тем, как это сделано для рендеринга шрифтов у TrueType, и эвристики, как у FreeType. Для этого потребовалось портировать на go быструю считалку cassowary (пользуйтесь! там и wasm есть), а потом изобрести дискретный cossowary специально под консоль — задаем стандарты интерфейсов, люблю такое! И заодно — новая, уже полностью своя цветовая тема, не пытающаяся повторять что-то из Far, Turbo Vision или Monokai.

Читать далее

Как мы писали Kubernetes-клиент, который старается не врать

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели9.9K

Я разозлился на то, что Lens стал платным, и написал свой платный Kubernetes-клиент: закрытый репозиторий, биллинг, версии до 1.7.12. Потом схлопнул историю в один коммит, выкинул платёжный код и выложил всё под MIT. Ирония дошла до меня чуть позже, чем следовало.

Под катом — как правило «не утверждать того, чего не можешь подтвердить» превращается в конкретные баги: под в Running с мёртвым контейнером внутри, Service с исправным селектором и нулём трафика, истёкший токен GKE, который выглядит как пустой кластер. Почему запрет на refetchInterval в линтере сэкономил 77% запросов к API-серверу. Как я трижды поймал одну и ту же гонку с Tauri-событиями. Как пришёл друг и переписал три четверти фронтенда, а я посчитал git blame, чтобы понять, что от меня осталось. И что я узнал, когда скачал собственный релиз, а macOS сообщила, что он повреждён.

Читать далее

Почему DevOps-инженеров ищут месяцами: взгляд со стороны рекрутера и инженеров

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.8K

На первый взгляд задача кажется вполне понятной. Есть вакансия, есть требования, есть рынок? осталось только найти подходящего специалиста. Но на практике именно DevOps-позиции регулярно оказываются среди самых сложных для закрытия, даже крупные компании могут искать одного инженера несколько месяцев, несмотря на помощь внутренних HR-команд и агентств.

Причина далеко не всегда в количестве специалистов, проблема начинается гораздо раньше — с самого понимания того, кто такой DevOps-инженер.

Сделать шаг к успешному найму

AI уже пишет приложения. Почему мы до сих пор деплоим их по-старому?

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели8.2K

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

Тут начинаются докерфайлы, CI/CD, DNS, TLS, секреты, логи и контейнер, который десятый раз перезапускается.

В начале лета мы решили проверить: а можно ли научить AI не только писать код, но и самостоятельно доводить его до прода?

Читать далее

Мы проверяли, что устройство работает. Оказалось — мы проверяли не то

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели7.6K

Исправное устройство успешно обновилось, доказало своё здоровье, а через два перезапуска откатилось на старую прошивку. Причина оказалась вообще не в обновлении: в тот раз наш бэкенд отвечал три минуты вместо одной.

У нас парк ARM‑устройств: удалённое обновление ядра, A/B‑слоты, автоматический откат. Казалось бы, схема известная, готовые движки есть, документация написана. Сам движок действительно поехал за неделю. Потом полтора месяца мы выковыривали дефекты, которые не падали, ничего не писали в лог и не ловились обычными тестами.

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

Устройство говорило «обновился», проверив доставку обновления, а не его применение. Или: «я здоров, братан, проверяй», глядя на факт запуска, а не на работу прошивки. Или: «версия 0.0.17», потому что это было написано в манифесте бэкенда, а не потому, что именно эта версия реально крутилась на железе.

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

И чё?

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

Как мы добавили Global Orchestration в IncidentRelay: маршрутизация алертов до создания инцидента

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8K

Когда система мониторинга отправляет алерт, он редко выглядит так, как хотелось бы дежурному инженеру.

Один источник пишет critical, другой — disaster, третий передаёт severity: 5. В одном payload сервис называется checkout, в другом — payments-api, а в третьем его приходится угадывать по namespace.

Если все эти события приходят через общий Alertmanager или webhook, одной статической настройки маршрута быстро становится недостаточно.

Обычно проблему решают одним из трёх способов:

Читать далее

Структурированные логи в FastAPI: практический гайд от request_id до trace_id

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели12K

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

На примере FastAPI соберём JSON‑логирование, в котором запрос можно проследить целиком, ошибки — фильтровать по типу, а задержки — анализировать по duration_ms.

Читать далее

От спанов к сценарию агента: зачем мы добавили GenAI-представление трейса

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели8.6K

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

В Proto Observability Platform уже были дерево, граф, флейм-граф и другие представления трейса. Они продолжали решать инфраструктурные задачи, но ответы о поведении агента приходилось собирать вручную из десятков спанов, транспортных вызовов и повторяющихся тел сообщений. Мы увидели это сначала на OpenTelemetry Demo 3.0, затем при отладке собственного «AI-аналитика» в связке с нашим MCP-сервером.

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

Читать далее

Аналитик, или Туда и Обратно: как мы стали «Google на минималках» в мире контейнерной оркестрации

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели7K

Привет! Меня зовут Алиса, и сейчас я руковожу командой разработки продукта «Штурвал». У нас работает около пятидесяти человек:  инженеры,  безопасники,  девопсы, фронтендеры, бэкендеры на Go и тестировщики, которые ломают всё, что мы строим. Но сегодня я хочу рассказать не о них. Сегодня балом правят аналитики. И под катом объясню, почему. 

Читать далее

Что изучить в DevOps, Kubernetes, observability и сетях для работы с современной инфраструктурой

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.5K

В инфраструктуре редко получается решить проблему в пределах одного инструмента: сбой в проде быстро выводит к настройкам Linux, сети, CI/CD, Kubernetes или базы. В этом дайджесте собрали материалы, которые помогают разбирать такие задачи точечно и системно — от диагностики и наблюдаемости до безопасности и устойчивости сервисов.

Читать далее

Docker объявил об открытом бета-тестировании Docker VMM

Время на прочтение4 мин
Охват и читатели16K

Docker объявил об открытом бета-тестировании Docker VMM
Собственного, полностью переписанного слоя виртуализации, который отныне лежит в основе Docker Desktop. Новый движок уже доступен в паблик-бете на macOS и Windows начиная с Docker Desktop v4.86. Разберёмся, что именно поменялось, почему это важно даже тем, кто никогда не задумывался о VMM, и как всё это протестировать самостоятельно.

Читать далее

Сертификат TLS для IP-адреса

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели21K

Let’s Encrypt всегда проверял только доменные имена. Однако с развитием микросервисных архитектур, API-взаимодействий и IoT-устройств возникла необходимость защищать трафик серверов, у которых нет домена. 15 января 2026 года стал общедоступным профиль shortlived с 6-дневными сертификатами для «чистых» IP-адресов. Теперь не нужно тратить деньги и время на покупку и регистрацию бесполезных доменных имен.

На Хабре уже есть подробные статьи и руководства на тему настройки HTTPS, выпуска сертификатов и конфигурации веб-серверов, но в большинстве случаев они объясняют, как защитить сайт с доменом. Мы же разберём, как обойтись без него и выпустить официальный доверенный TLS-сертификат прямо на «голый» IPv4-адрес.

Читать далее