Платформа для сисадмин/SRE/DevSecOps агентов

Идея проекта: платформа для сисадмин/SRE/DevSecOps агентов, с акцентом на нужды организаций, которые стараются сами хостить и управлять свои ИТ-системы (self-hosted).

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

  • Маппинг сервисов и настройка сетей
  • Аудит безопасности, патчинг, и поддержка (напр., key rotation)
  • Мониторинг ресурсов и боттлнеков, оптимизация размещения сервисов на текущем флоте машин, планирование расширений (если требуется)
  • Локализация и траблшутинг деградаций
  • Планирование и проведение апгрейдов и даунгрейдов

Я еще не смотрел очень близко на autogen, swarms и другие опен-сорсные “платформы для команд/роев/обществ агентов”, не знаю, насколько их можно прям брать и просто добавлять к ним что-то сверху, типа пакета стандартных инструментов для работы с консолью и т.д. Может быть, можно, а может, нужно велосипедить именно отдельный фреймворк, хотя и с использованием идей из autogen, swarms, OpenDevin, и других подобных проектов.

Также, как вы можете заметить, я делаю ставку на то, что функции сисадмин/SRE/DevSecOps/инженеров ИТ-платформ слишком разнообразны, чтобы быть впихнутыми в “единого” агента типа OpenDevin для программирования. Строго говоря, это относится и к программированию, потому что там интересы безопасности тоже должны быть явно учтены даже на уровне отдельных пулл-реквестов, но там пока достаточно проблем для решения на более низких уровнях, а именно, собственно программирование, поиск и исправление прямых багов в коде, и т. д. Поэтому, скорее, это агент-программист типа OpenDevin должен быть одним из команды агентов, перечисленных выше. Например, в случае, если надо срочно обновить библиотеку с 0-day уязвимостью, но так как она давно не обновлялась, это обновление ломает код нашей системы (или одной из библиотек “посередине”). И тогда агент-программист должен срочно поправить и собрать новую версию кода нашей системы.

Еще одно отличие: у агентов-программистов есть очевидно один “победивший” способ управлять изменениями, а именно коммиты в систему контроля версий, пулл-реквесты, и обсуждения к ним. Поэтому агентам-программистам типа OpenDevin не надо изобретать велосипед для governance и аудита: они могут дампить цепочку своих рассуждений в описание пулл-реквестов.

В сисадминстве/SRE/DevSecOps же, такое возможно только в случае 100% покрытия infrastructure-as-code и configuration-as-code + monorepo, чего нет вообще нигде, особенно в развесистых self-hosted сетапах. Попытки натянуть сову на глобус в этом случае могут добавить очень большой слой боилерплейта через который люди уже совсем ничего не увидят. Поэтому, в командах сисадмин/SRE/DevSecOps агентов нужен более неформальный подход к audit trail и governance.

2 лайка

У “сисадмина/devops/sre” довольно сложный ролевой состав (в отличие от программистов):

  • участие в нескольких фазах ЖЦ разработки приложения как член кроссфункциональной команды (докер-контейнер или адаптированный под конкретное приложение пайплайн, или определенным образом записанная конфигурация приложения – как часть разрабатываемого приложения)
  • проектирование и создание средств автоматизации этого ЖЦ (например, generic пайплайна)
  • в том числе проектирование и создание отдельных систем (со своим ЖЦ), которые вполне самостоятельны, но могут использоваться в отдельных его стадиях (например, система мониторинга)
  • проектирование и создание инфраструктурной платформы (со своим ЖЦ) как набора разнообразных deployment node связанных определенным образом

Я бы возможно в качестве вдохновения на выбор чего-то конкретного из этого посмотрел на SFIA full framework view — English и DevOps view — English

Я поставил DevOps на третье место в заголовке, после сисадмина/SRE (т.е., оператора), потому что мне кажется эта ниша как раз наименее интересной. И в DevOps же будет наибольшая конкуренция: Микрософт/Гитхаб, Гитлаб, Амазон, и другие наверняка уже пишут своих DevOps агентов, которые лучше всего работают с их собственными облаками.

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

Параллельно, сами эти off-the-shelf системы обрастают конфигурациями, low-code возможностями, или даже языковыми агентами, которые позволяют кастомизировать под задачи более широкого круга организаций.

Почему бизнесы не используют эту возможность в той степени, в какой уже могли бы – думаю, на 80% это эффект текущей культурной “нормы” (от “nobody was fired for choosing AWS” и resume-driven development до маркетинговых мемов про невероятные преимущества клаудов и СааСов), на 20% объективные технические трудности с self-hosting и/или наймом и затратами на сисадминов, которые будут управлять self-hosted системами.

Платформа, которую я предложил выше, должна уменьшить вот эти 20%. Другие проекты, которые помогают с этим (сильно неполный список):

1 лайк

Oscar, an open-source contributor agent architecture - вот ещё архитектура агента-программиста

Все равно не понимаю. Хорошо, возьмем админа, чьей задачей по всей видимости будет разнообразный operations.
Идем на SFIA Delivery and operation — English, и смотрим, например, раздел Technology management.
Из 10 дисциплин:

  • 4 описывают рутинные операции (System software, IT infrastructure, Systems installation and removal, Release management), для них обычно агентов пишут на Ansible или применяют паттерн Operator. Т.е. они уже сейчас близки к сплаву дисциплины программирования (low-code в случае ансибла) с доменным знанием
  • 3 связаны с работой по инцидентам (Network Support и Application Support, Storage management) – здесь кажется есть простор для построения агентов
  • 1 связаны с физическим оборудованием (Facilities management) – это кажется вопрос скорее RPA, чем LLM
  • Configuration management в привычном системноинженерном смысле
  • Менеджмент всех этих активностей и проектирование в них (верхние уровни в них + Technology service management)
    В блоке Service management это опять таки либо управленческие либо проектировочные активности (в т.ч. configuration management), либо работа по инцидентам (в т.ч. рутинная).

Т.е. кажется действительно актуальным все вокруг мониторинга, прогнозирования и всем что с этим связано (capacity management, continuity management), в т.ч. реагирование на инциденты.
А для всех остальных активностей в гринфилде кажется проблема не стоит, либо она уже успешно решается в доменах проектирования, и программирования/скриптования?
В случае браунфилда же два подхода:

  • практика reverse engineering, построение configuration management и далее движение по V-model с современными подходами everything-as-code
  • то же самое, но без автоматизации где ее по каким-то причинам нельзя построить
  • “работа по месту” в условиях неопределенности

Итого, кажется где можно применить механических агентов:

  • проектирование и разработка в области инфраструктуры (но это как я понимаю менее интересный для рассмотрения домен)
  • мониторинг и предсказания
  • реагирование на непредвиденные ситуации
  • рутинная работа в brownfield, которую по той или иной причине нельзя автоматизировать в классическом смысле (по сути, аналог интеллектуального RPA)

Я нигде не ошибся?

Я здесь проигнорировал ИБ, т.к. там домен совсем другой и очень обширный, и по-моему в SFIA он почти не представлен.
В нем точно могут быть перспективные направления, его нужно разбирать отдельно

Во-первых, этот ансибл тоже надо написать, разбираться с новым ПО, мониторить изменения в дефолтных конфигах при обновлении ПО, мигрировать deprecated конфиги, и т.д.

Во-вторых, далеко не все ансиблится - те же саасы или просто какие-то странные штуки которые можно только кликать мышкой. Но для этого можно хранить конфиг в виде описания текстом агенту, что надо кликать и где, и отдельный веб-агент пойдет кликать (и поймет, что интерфейс сааса поменялся).

У меня ровно противоположные выводы:

  • Актуально там почти все
  • В гринфилде как раз нет проблемы мониторинга и скалирования потому что никакой нагрузки нет. Собрать комбайн гораздо сложнее, чем заскалировать, особенно с учетом того что сейчас все системы делаются сразу с рассчетом на лёгкий/автоматический скейл (типа распределенные системы под деплой на кубернетесе), но зато с очень сложной изначальной настройкой. Это дополнительно усложняется в селф-хостед.
  • В браунфилде по факту в 99% это “работа по месту”, никакой “единой совместимой конфигурации всего” нет, все постепенно меняется, где-то возникают конфликты и проблемы, и их приходится решать “двигаясь вперёд” а не назад “к стабильной версии конфигурации” (ее просто не существует), а движение вперёд по своей сути - это разбирание с новым, что может включать в том числе патчинг, полную смену вендора, смену архитектуры сети, и т.д., это open-ended проблема.

А чем это отличается от написания кода на условном JavaScript, для которого нужно разбираться с новыми версиями библиотек, мониторить изменения в API при изменении зависимостей, мигрировать deprecated API и т.д.?

Такой класс задач, “конфигурирование API” обычно автоматизируется терраформом, дальше см. разработка IaC => разработка функциональная.

Я не очень четко выразился. Из перечисленных активностей интересен мониторинг и прогнозирование. По всем остальным активностям из списка гринфилд и браунфилд идут немного порознь: в гринфилде проблем в принципе нет. В браунфилде то что перечислено.

Т.е. инженерная деятельность в браунфилде невозможна?

1 фаза: реконструкция отдельных элементов, архитектуры и ADR, системных требований, потребностей стейкхолдеров.
Далее обычная работа по V-model.

Я ждал этого джва годамесяца: GitHub - jlewi/foyle: Foyle is a copilot to help developers deploy and operate their applications.

1 лайк