惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园 - 三生石上(FineUI控件)
S
Securelist
U
Unit 42
The Cloudflare Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Simon Willison's Weblog
Simon Willison's Weblog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
B
Blog
T
Tenable Blog
The Hacker News
The Hacker News
The Register - Security
The Register - Security
IT之家
IT之家
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
P
Privacy & Cybersecurity Law Blog
博客园_首页
T
Tailwind CSS Blog
人人都是产品经理
人人都是产品经理
C
Cybersecurity and Infrastructure Security Agency CISA
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
T
Tor Project blog
C
CERT Recently Published Vulnerability Notes
Apple Machine Learning Research
Apple Machine Learning Research
Stack Overflow Blog
Stack Overflow Blog
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
A
Arctic Wolf
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
V2EX
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Cyberwarzone
Cyberwarzone
V
Visual Studio Blog
月光博客
月光博客
爱范儿
爱范儿
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
G
GRAHAM CLULEY
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Heimdal Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как с помощью ИИ-агентов собрать живую инфраструктуру — без Kubernetes и DevOps
4heck · 2026-06-23 · via Все публикации подряд на Хабре

Средний

7 мин

6

Привет! Меня зовут Руслан Мамлеев, я эксперт курса «Архитектор ПО» в Практикуме и технический директор (CTO) в GetFloorPlan. 

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

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

С чем мы имели дело 

Немного контекста:

  • мы небольшой стартап, достаточно сильно экономим — у нас нет Kubernetes, platform engineering и прочих энтерпрайз-практик, 

  • всего 20–30 серверов у разных провайдеров, не объединённых в кластер, 

  • часть серверов — в Hetzner, потому что так дешевле, а часть — в российском контуре, так как сервисы должны быть доступны в России, 

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

Сначала я думал, что инвентаризация — это разовая задача. Нужно просто собрать список серверов, чтобы понять, что у нас есть. Но когда мы начали делать это с помощью ИИ-агентов, быстро выяснилось, что мы можем создать живой инвентарь — единый source of truth, который можно расширить под любые инфраструктурные задачи. 

Шаг 1. Скриншоты 

Начало было простым и немного смешным, потому что состояние было отчаянное. Я просто накидал в Codex скриншоты из Hetzner, AWS и других кабинетов (даже не текстом, а просто картинками) и попросил агента зафиксировать всё, что он видит: названия серверов, IP-адреса, провайдеров, базовые атрибуты. 

Все данные мы сложили в JSON. Просто потому что было удобно: у меня технический бэкграунд, я его нативно понимаю, и с ним хорошо работает ИИ. У нас не было какой-то идеальной схемы — просто живая структура, которая отвечала текущим потребностям. Начали с массива серверов, а остальное наращивали по мере необходимости и срочности.  

Карточка сервера в JSON

Карточка сервера в JSON

Шаг 2. Реестр SSH-ключей

Одно дело — видеть сервер, а другое — иметь к нему доступ. Надо было понять, могу ли я вообще куда-то зайти. Мы проверили SSH-доступы, убедились, что везде прокинуты ключи, и дописали это в инвентарь. Файл сразу начал расширяться: мы не только перечислили серверы, но и описали, как в них зайти, под каким пользователем, через какой порт, есть ли доступ или выдаёт ошибку.

Я задумался: а кто ещё, кроме меня, может войти на сервер? Возможно, старый DevOps, а может, кто-то, кому доступ уже давно не нужен. В стартапах такие вещи часто живут по инерции, пока всё работает, но с точки зрения безопасности — это слабое место. В итоге нашли около десяти лишних ключей. 

ИИ хорошо лёг и на эту задачу. Мы проинвентаризировали SSH-ключи через реестр: в отдельном блоке JSON составили список всех ключей.  Промпт использовали простой: зайди на все серверы и запиши в JSON-файл в ключ ssh_key_refs, кто имеет к ним доступ. Агент помог собрать и оформить логику и написал под неё простой код.

Каждому ключу прописали alias, а в карточке сервера оставили только ссылки на них

Каждому ключу прописали alias, а в карточке сервера оставили только ссылки на них

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

У каждого сервера своя конфигурация доступа, а инвентарь фиксирует всё в одном месте

У каждого сервера своя конфигурация доступа, а инвентарь фиксирует всё в одном месте

Шаг 3. Характеристики серверов и контейнеры

Дальше мы решили поискать, где может быть неправильный размер сервера: например, стоит машина с 64 GB RAM, но по-хорошему хватило бы восьми, а мы переплачиваем. Для этого мы расширили структуру и добавили характеристики: дата-центр, CPU, RAM, SSD, регион, ОС, тарифный план у провайдера. Часть информации агент брал с сайтов облачных платформ, а часть вытаскивал с самих машин командами.

Примерно в то же время я переключился на Claude Code, и оказалось, что вся система классно переезжает и масштабируется. Мне не пришлось ничего переносить вручную — новый агент просто считал структуру JSON и продолжил работу с того же места. Тогда я впервые почувствовал, что у меня в руках не просто заметки на коленке, а живая карта инфраструктуры. 

Параллельно мы стали разбираться: а что вообще запущено на серверах? Поскольку у нас почти всё живёт в Docker, задача свелась к тому, чтобы выполнить docker ps, вытащить список контейнеров, их образы и порты, и записать это в JSON. 

Сразу стало видно не просто список железок, а фактическое содержимое каждой ноды

Сразу стало видно не просто список железок, а фактическое содержимое каждой ноды

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

Шаг 4. Домены, лейблы и прокси-цепочки

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

Из-за блокировок серверы в России работали через прокси и специальные маршруты. Например, приложение запускалось на сервере в Германии, а российские пользователи заходили через сервер в России. Нам было важно понять, как они связаны: если перезагрузить российский сервер, к каким именно сервисам в Германии пользователи потеряют доступ? Поэтому было критично отдельно распутать все цепочки: куда приходит пользователь, где edge, где origin, где используется 443, где 8443, где терминируется TLS.

Всё это органично легло в структуру инвентаря. Особенно полезным оказалось проставить нормальные лейблы: role, env, priority, audience_region. Последний нам особенно важен, так как если российский пользователь видит иностранный IP, есть риск блокировки, а если зарубежный клиент видит российский след — это уже репутационный риск.   

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

Теперь явно видно, откуда приходит запрос, через что проходит и куда попадает

Теперь явно видно, откуда приходит запрос, через что проходит и куда попадает

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

Шаг 5. SSL-сертификаты 

SSL — это хроническая боль, если у вас много доменов. Во-первых, рано или поздно они истекают, и уследить за этим вручную почти нереально. Во-вторых, старые устройства поддерживают RSA-сертификаты, но не работают с ECDSA. Если на домен пойдёт трафик, например, со старых Android-устройств, важно иметь оба типа. 

Инвентарь помог решить обе проблемы. Мы добавили в него информацию о каждом сертификате: когда выдан, когда истекает, кто issuer, какой статус, есть ли ошибка. 

Как только появилась структура, агент сам написал под неё код проверки. Скрипт подключается к каждому домену и смотрит, какой сертификат реально отдаётся «снаружи». Он сохраняет главное: кем выдан, на кого выписан, до какой даты действует. Сразу видно, где всё ок, а где скоро истекает. 

Скрипт проверки TLS-режима домена

Скрипт проверки TLS-режима домена

Шаг 6. Принципиальный сдвиг: мониторинг-стандарт

У нас есть Grafana, Prometheus, Loki, но я не был уверен, что все серверы к ним корректно подключены. Какие-то появились позже, какие-то менялись, что-то делалось на ходу, поэтому нужен был не просто мониторинг для галочки, а стандарт, который можно проверить на каждом сервере.

Чтобы это сделать, я взял один хорошо настроенный сервер как эталон и попросил агента зафиксировать, как именно в нём устроен мониторинг. Так в JSON появился отдельный блок monitoring_standard с required_components, scrape_jobs и дефолтами для promtail и acceptance_checklist. 

required_components — docker stats exporter, node exporter, promtail с назначением и endpoints

required_components — docker stats exporter, node exporter, promtail с назначением и endpoints

acceptance_checklist — список того, что должно быть настроено и как мы понимаем, что всё сделано правильно

acceptance_checklist — список того, что должно быть настроено и как мы понимаем, что всё сделано правильно

Это был принципиальный сдвиг: мы начали описывать не только факты о системе, но и ожидаемую норму. Теперь нам не нужно вспоминать, как мы обычно ставим мониторинговую обвязку. Достаточно сказать агенту: возьми monitoring_standard и перенеси на эту ноду. Шаблон можно масштабировать по всей инфраструктуре. 

Параллельно у каждого сервера появился monitoring_coverage — статус full, partial и т. д., в зависимости от чек-листа. Система перестала работать в режиме «или настроено, или непонятно», появились понятные статусы и отклонения. 

Шаг 7. Бэкапы 

Похожая история была с бэкапами — мы не знали, делаются ли они везде, туда ли едут, с нужной ли периодичностью, можно ли потом восстановить. Для надёжности мы создаём их сразу в два направления и в разные дата-центры — например, в Яндекс и Amazon. Это тоже появилось в инвентаре:

  • backup_destinations — endpoint, bucket, region, lifecycle, переход в холодное хранение

  • backup_policies — на каком сервере, что именно бэкапится, по какому расписанию, в какие destinations

  • backup_observations — сколько бэкапов видно, когда был последний, нет ли аномалий

Результат проверки бэкапов

Результат проверки бэкапов

Агент держит это в контексте как модель, а скрипт запускается раз в день по расписанию через CI/CD в GitLab — обновляет наблюдения и подсвечивает отклонения. Как и с SSL-сертификатами, мне не нужно глубоко читать весь код. Достаточно понимать, что он делает, и проверять результат. 

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

Что получилось: живой инвентарь 

Мы не только собрали целостную модель инфраструктуры, но и дёшево нарастили полезную автоматику. Теперь, когда что-то меняется (подняли новый сервер, поменяли доступы, добавили домен, обновили сертификат, изменили бэкап-политику), можно просто запустить короткую команду актуализации инвентаря, и в JSON перепишется несколько строк. 

Сейчас в файле почти 10 000 строчек, и он живёт в Git. Это важный слой: когда мы делаем инфраструктурные работы, всё фиксируем в репозиторий. Достаточно скинуть коллегам ссылку на коммит — и по нему сразу понятно, что сделали. Git хранит всю историю изменений по инфраструктуре: даты, действующие лица, контекст. К этому можно вернуться в любой момент.

Телеграм-алерты на изменения в репозитории

Телеграм-алерты на изменения в репозитории

Главное, что я вынес 

ИИ — не волшебная замена человеку, а усилитель, который помогает быстро собрать и поддерживать живую модель инфраструктуры. Ключевая ценность не в самих агентах, а в том, что у команды появляется единый source of truth, который можно расширять под реальные потребности. Архитектурное мышление здесь важнее конкретных инструментов. 

ИИ-подход не заменяет зрелый DevOps, особенно в энтерпрайзе и высококомплаентных системах, где уместны Terraform, Ansible, Kubernetes и полноценные платформенные практики. Но он может сработать в стартапах, где важны скорость и воспроизводимость, а бюджет ограничен. Для меня это и делает всю историю ценной: она не про идеальный мир, а про компромисс, который оказался рабочим.