DevITWay | Павел Волков
166 subscribers
70 photos
6 videos
121 links
Системное мышление → DevOps-практика → карьерный рост.
Production-кейсы, разборы инцидентов, новые подходы.
Бесплатные мини-курсы: Git | Linux | Docker
Веду лично. Основатель DevIT Academy.
devitacademy.com | devopsway.ru | devitacademy.com/kmb
Download Telegram
🤖 AI-агент в терминале: почему OpenWebUI ломает DevOps-флоу

В DevITWay Academy всё завязано на единый LDAP: один логин для всего.
Для AI я сначала взял OpenWebUI. Инструмент отличный, но в нём нет поддержки пока SSO. Студентам приходилось вводить креды и прыгать в браузер.

DevOps-инженер живет в консоли, а не в веб-чатах.

🛠 Решение: RTX 3090 + Local AI

В итоге я настроил официальный Claude Code CLI для работы поверх локальной Ollama.

Получился гибрид: удобный UX от Anthropic, а данные и модели полностью локальные, внутри периметра.

Почему это важно для студентов:

* Они не учатся «копипастить ошибки в чат».
* Они думают и дебажат прямо в рабочей среде, не теряя контекст.

Как это выглядит на практике:

claude "почему этот плейбук падает на этой таске?"


⏱️ 20–30 секунд работы RTX 3090
Разбор ошибки с учетом контекста файлов.

Скоро выложу в блоге гайд, как собрать такую связку.

Где вы используете AI: в браузере, IDE или уже в терминале?

#кейс #ai
1👍6
🤖 AI-ментор: Как я приручал RAG на одной RTX 3090

Краткая сводка для тех, кто ценит время и VRAM:
Задача была амбициозной: создать ИИ, который «съест» 891 файл учебного курса и перестанет придумывать то, чего в материалах нет.

Что в итоге взлетело:

Стек: Ollama + Qdrant + Claude Code CLI.
База знаний: 11,307 чанков в векторном хранилище.
Скорость: ~10-15 секунд на честный, аргументированный ответ прямо с домашнего железа.

Мои «грабли»:

Llama 3.1: Оказалась знатным фантазером. Вместо того чтобы читать файлы, она с уверенным видом сочиняла их содержимое.
Fine-tuning: Модель внезапно «сменила пол» и превратилась в Марию, коуча по позитивному мышлению.
GLM-4.7-flash: Поймали неприятный баг, в режиме размышления (thinking mode) выдавала пустые ответы.
Qwen3:30b-a3b (MoE): Наш фаворит. Качество на уровне 30B, скорость как у 3B, и идеально помещается в 24GB видеопамяти.

Подробнее 👇
https://telegra.ph/Kak-ya-priruchal-RAG-na-RTX-3090-II-mentor-kotoryj-pochti-ne-vret-02-02

#кейс #ai
🔥7
🦀 NORA в бою: Опыт внедрения в K8s

Обкатал NORA в инфраструктуре DevITWay Academy.

Сетап: 3 кластера K8s (9 нод), GitLab CI → NORA ← ArgoCD. План: docker run и в прод. По факту немного "фичей". 😅

Установка
getnora.io/install.sh - 404 на момент внедрения. Ставил вручную. Завёл issue #1 сделаю инсталлер по канонам rustup.

TLS и сертификаты
Nginx + FreeIPA не взлетели: containerd проверяет только SAN. Подключались по IP, а IP в сертификате не было, поэтому TLS не сходился. Временно включил insecure_skip_verify на нодах, думаю над issue #2 - нативным TLS.

Rate Limit
При старте 7 подов словили 429. Ресурсы ок, упёрлись в лимиты.
Решение: выставил NORA_RATE_LIMIT_* через ENV, теперь держит.

Итог:
RAM (RSS): ~2.4 МБ в idle / low load
Деплой: ~87 сек до Running
Rust против Java - без шансов

Если нужен просто registry без enterprise-комбайна - NORA отлично закрывает задачу.

#кейс #rust
🔥8
🛠 Локальный ИИ-ассистент: пошаговый гайд

Отвечаю на вопрос про загрузку доков в Qdrant. В паре абзацев не вышло - ловите полноценный туториал, как собрать своего «Джарвиса» в терминале.

Стек (красивый Франкенштейн): Claude Code CLI + Ollama + Qdrant RAG + MCP-протокол.

Что внутри:
Основа: Запуск Qwen3:30b-a3b (MoE) локально.
Мост: Настройка LiteLLM для подмены API Anthropic на Ollama.
Память: Python-скрипт для нарезки чанков и заливки в Qdrant (с метаданными и overlap).
Руки: MCP-сервер, чтобы агент сам гуглил по вашей базе знаний.

Теперь на вопрос claude "почему nginx выдает 502?" ассистент сам найдет инфу в ваших .md файлах и предложит фикс. Без облаков, VPN и подписок.

🔗 Гайд

#миникурс #ai
1🔥5
AI DevOps: почему это стоит дорого

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

Что внутри:

Экономика GPU. Видеокарта дорогой актив. Нужно уметь делить мощности и управлять очередями, чтобы не сжигать бюджет. Масштабирование сложнее, чем просто добавить ноды.

Архитектура. Работа с кэшем и сжатием моделей. Балансируем по пропускной способности токенов, а не по CPU.

Контроль. Промпт-инъекции не решаются файрволом. Инфраструктура сама становится слоем фильтрации ответов и изоляции контекста.

Итого: Если пробовали локальный запуск и векторные базы, вы на верном пути. Скоро нейросети станут базой, как Docker. Изучайте экономику инференса сейчас, иначе рынок вас обгонит.

Кто внедрял GPU: во что уперлись? Квоты, мониторинг или бюджет?

#мышление #ai
3👍1🫡1
Guacamole vs RustDesk vs Teleport: выбор доступа

Ставили как-то товарищу Guacamole за Кинетик на малинку. Вместо 20 минут, 3 часа борьбы с зависимостями. Спас Docker. Повод сравнить стек для дома и Академии. Мой флоу: браузер → Jump-сервер → SSH → Nested Proxmox. Периметр закрыт снаружи.

Почему остальное мимо:

RustDesk. Peer-to-peer модель - это рутина при 30+ студентах. В Free-версии нет LDAP, а установка софта учеником, увы, лишний барьер.

Teleport. Заточен под SSH/K8s аудит. Для GUI-задач избыточен, Desktop Access сложен в настройке под каждую лабу.

Плюсы Guacamole:
• Zero Client: только браузер, без VPN.
• Gateway-centric: нативно встает в изолированный периметр.
• SSO: интеграция с LDAP/GitLab.

Итог:
Дома за Кинетиком - RustDesk. В лабах Академии Guacamole, имхо, лучший компромисс.

Как изолируете тестовые среды?

#кейс #devops
👌3🤓1
14 февраля: как баг видеодрайвера VMware «ронял» MS Exchange

Для меня 14 февраля — это теперь навсегда своеобразный «вьетнамский флешбэк» и своего рода ПТСР.

Итак, тоже суббота и тоже 14 февраля.
Пустой офис. Руководитель конторки на месте и периодически пингует меня, как ослик из «Шрека»: «Ну что, приехали? Уже работает? А сейчас?». Я гуглю под таким давлением, что IQ падает вдвое.

Кейс: Почтовик на MS Exchange (бизнес-критикал), крутится на виртуалке VMware.
Проблема: Сервер ловит критическую нестабильность. Процессы отваливаются, система ведет себя как при остром дефиците ресурсов, хотя физической оперативной памяти в достатке. Поднимаешь -> живет -> снова в аут.

🔍 Симптомы и ложные следы

Типичная ловушка: когда падает Exchange, ты копаешь внутри самого Exchange. Тюнинг кэша Jet Blue, лимиты памяти Store.exe и всё мимо.

Контекст: за месяц до моего прихода в офисе был жесткий блэкаут. Сервера ребутались по питания несколько раз. Тогда это проигнорировали, «ну завелось же».

Нахожу на StackOverflow (тогда еще живом) тред, где чувак пишет:

«Проверь аллокацию видеопамяти в настройках ВМ».

Моя первая мысль: «Что за бред? Где почта, а где видеокарта?». Но это был последний шанс перед полным фиаско.

⚙️ Root Cause: Истощение Nonpaged Pool

Захожу в настройки VMware. Флаг видеопамяти стоит в «Auto». Выставляю жесткий лимит. Ребут.
Супостатина стабилизировалась.

Что произошло технически:
Это не была нехватка физических планок памяти. Это был классический Nonpaged Pool exhaustion (истощение невыгружаемого пула ядра).

После блэкаута и кривого старта драйвер VMware SVGA начал вести себя неадекватно.

Вместо простой отрисовки консоли драйвер (работая в режиме ядра) начал «течь» и забивать системный пул, который нельзя выгрузить в файл подкачки.

В Windows Server того времени (2008 R2 / 2012) лимиты этого пула были довольно жесткими.

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

Как только видеодрайвер из-за бага «отъедал» лимит невыгружаемой памяти ядра, ОС теряла возможность выделять ресурсы под системные структуры. Итог: сбой сетевого стека, ошибки ввода-вывода и аварийное завершение процессов Exchange. Судя по всему, фиксация объема видеопамяти в настройках ВМ изменила логику инициализации драйвера и прекратила утечку.

💡 Системный вывод

Инженер, который мыслит слоями (Приложение → ОС → Ядро/Драйвер → Гипервизор), выигрывает у того, кто копает только в конфигах софта.

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

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

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

Вопрос:
Были случаи, когда софтверную проблему лечили через настройки гипервизора? Когда интуиция вытащила там, где логи молчали?

Пишите в комменты 👇

#кейс #devops

P.S. Желаю, чтобы в это 14 февраля «ослики» тебя не беспокоили, а системы работали как часы.
6
🛠 Доверяй, но поднимай стенд: Как системные требования ИИ врут в глаза

В ИТ есть золотое правило: «Доверяй, но проверяй». Когда Gemini с умным видом заявляет, что твоя видяха «не потянет», рука сама тянется закрыть терминал. Я решил не верить прогнозам на слово и поднял стенд.

Дано:
Обсуждали в чате локальный запуск ИИ для кодинга. Gemini выдал базу: «На 12 ГБ VRAM (RTX 4070) даже не суйся в сторону моделей 30B+. Скорость упадет до 1-2 токенов в секунду. Бери DeepSeek-Coder-V2-Lite, это потолок».

Тест в реальности (RTX 4060 8GB Laptop, Ollama, Q4_K_M, контекст до 4k):
Я пошел дальше и запустил всё на 8 ГБ VRAM. По логике «экспертов», мой ноут должен был превратиться в тыкву.

📊 Результаты бенчмарка:

Qwen3:30b-a3b (архитектура MoE)
Прогноз Gemini: 1-2 tok/s.
Реальность: 27-32 tok/s! 🚀

Почему так? Общий вес модели (~18 ГБ) перестал быть главным ограничителем. В архитектуре MoE (Mixture of Experts) на каждый токен активируется лишь малая часть параметров (в данном случае ~3B). Ollama выкинула часть весов в системную оперативку, и за счет малого числа активных параметров гибридный режим выдал отличную скорость.

Парадокс 14B Dense vs 30B MoE

Qwen2.5:14B (Dense) — полностью влезла в GPU, но выдала всего 11 tok/s.
Qwen3:30B (MoE) — в гибридном режиме выдала 27+ tok/s.

Вывод: Модель, которая в 2 раза «тяжелее» по весу, работает в 2.5 раза быстрее. Архитектура теперь важнее объема.

Битва за код: Qwen vs DeepSeek на 8 ГБ VRAM

DeepSeek-Coder-V2 (16b): 42 tok/s. Код чистый, но сухой.
Qwen2.5-Coder (7b): 53 tok/s. Дает doctests, примеры использования и шикарные комменты.
CodeLlama (7b): Рекордные 60 tok/s, но по качеству документации проигрывает Qwen.

Вывод: Для карт с 8-12 ГБ памяти Qwen2.5-Coder сейчас — самый практичный выбор.

🎯 Итоговый вердикт:

Миф: 30B на средних картах — это всегда слайд-шоу.
Факт: MoE-модели (в Q4 квантовании) — это чит-код. По качеству логики они на голову выше моделей 7B-8B и вплотную приближаются к облачным решениям прошлого поколения.

Миф: Нужно смотреть только на объем VRAM.
Факт: Нужно смотреть на тип модели (MoE vs Dense) и на то, как движок (Ollama/llama.cpp) умеет в offload.

Мораль:
Не слушайте советы облачных ИИ про локальные ИИ. Они часто экстраполируют поведение старых тяжелых моделей. На RTX 4070 (12GB) в тех же условиях можно смело ожидать 35–45 tok/s.

Хочешь знать правду? Поднимай стенд, засекай время и меряй всё руками.

#кейс #ai
👍51
Клод код кли? 403. Квен код кли? Погнали! 🚀

Пока Anthropic закручивает гайки и выдает «403 Forbidden» на CLI-инструменты для нашего региона, в солопренерстве работает правило: риск бездействия выше риска ошибки. Не тратим время на VPN-костыли, идем по пути локального импортозамещения.

Вчера товарищ жаловался, что не может пощупать Claude Code. Я решил не ждать милости от облаков и развернул Qwen Code CLI на Ubuntu. Китайцы сейчас делают очень бодро, а архитектура MoE позволяет летать даже на среднем железе.

Почему это маст-хэв для терминала:

1. Локально. Поднимаешь Ollama, тянешь qwen2.5-coder (7b — база, 30b — для серьезного дебага). Данные не покидают периметр.

2. Бесплатно. Никаких инвойсов на 85 евро и битвы с продавцами за возврат. Твое железо — твои правила.

3. Вайбкодинг. Он так же пишет код, правит конфиги и находит баги в соседних файлах, как и Клод, но делает это «лампово», прямо у тебя на ноуте.

Что пошло не так при установке (грабли):

>Node.js. Стандартная 18-я версия из репозиториев Ubuntu — мимо. Qwen требует 20+. Пришлось сносить старую и ставить через NodeSource.

>Кладбище ядер. При обновлении словил dpkg error 11 из-за битых хедеров старых ядер Linux. Пока не вычистил «хвосты» через dpkg --purge, npm отказывался ставить пакеты.

>PATH. После установки через npm -g команда qwen часто не видна. Лечится банальным символическим линком в /usr/local/bin.

Итог:
Модель qwen2.5-coder:7b на локалке выдает шикарные комменты и doctests. Это именно тот уровень автономии, который нужен, когда хочешь кодить в самолете или из-за «забора».

Наберем 5 огоньков 🔥 или лайков -> выкачу подробный пошаговый гайд с командами: как победить зависимости Node.js, починить битый dpkg и завести Qwen CLI через локальную Ollama за 5 минут.

#кейс #ai
🔥142
🛠 Tailscale + NoMachine: почему я выкинул RustDesk и забыл про туннели

Иногда архитектуру проверяет не pentest, а жизнь. Ситуация простая: я с ноутом в одной сети, домашняя тачка – в другой. Между ними забор, потому что я сознательно разделил «мир Академии» и «личный мир».

И вот тут начинается инженерная правда.

Сначала классическая матрёшка
Я попробовал по старинке: Tailscale → обратный SSH-туннель → TigerVNC.
Результат предсказуем: TCP-over-TCP, дикие лаги и отвал сессии при любом чихе провайдера. autossh бодро перезапускает то, что всё равно падает. Формально работает, но жить с этим нельзя.

База: Tailscale
Tailscale – это фундамент. Ноут и сервер получают свои 100.x.y.z адреса и просто оказываются в одной виртуальной локалке без проброса портов, белых IP и NAT-магии. Это сразу сняло 80% боли.

Почему я убрал RustDesk?
Он у меня крутится внутри Академии и там он логичен. Но для личной работы начались нюансы: при нестабильной сети он начинает «сыпать» картинку, а P2P-модель хороша для саппорта, но не идеальна для постоянной плотной работы.

Что изменил NoMachine (NX-протокол)
NoMachineэто не VNC. Это адаптивный видеострим, который:

1️⃣ Адаптируется к сети. Не держит TCP в истерике. Упал битрейт – картинка чуть «поплыла», но сессию не рвет.
2️⃣ Использует железо. Моя RTX 4060 на ноуте сама декодирует H.264. CPU холодный, input lag минимальный.
3️⃣ Ощущается «локальным». Скролл браузера не фризится, терминал не отстает. Ты реально забываешь, что это удалёнка.

Где теперь что живёт:
🧑‍🎓 Для студентов – Apache Guacamole (через браузер).
🔐 Для аудита и SSH/K8s – Teleport.
🏠 Для личных мощностей – Tailscale + NoMachine.

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

🔧 А как вы делите доступ? Оставляете одну «дырку» для всего или сегментируете доступ под разные задачи?

#кейс #devops
🔥41
Обещанный гайд: Поднимаем Qwen Code CLI за 5 минут ⚡️

Реакции набрали быстро, как и обещал, делюсь «дорожной картой» по замене Claude Code на локальный стек. Без VPN, подписок и тормозов.

Что в итоге в статье:
🔹 MoE в деле: Разбор, почему модель 30B (MoE) на моей RTX 3090 выдает 30+ токенов и работает быстрее, чем «легкие» dense-модели.
🔹 Хак на скорость: Готовый Modelfile, который вырезает стадию «размышлений» (<think>) и экономит до 40 секунд на каждой цепочке команд.
🔹 Матрица выбора: Какую модель тянуть под твой объем VRAM (от 8ГБ до 24ГБ) и когда стоит уходить в облако.
🔹 Честный тест: Как агент сам фиксит свои ошибки форматирования (self-correction) и обходит системные ограничения через обычный bash.

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

🔗 Инструкция и все конфиги здесь

#миникурс #ai
👍61
🧠 ТРИ СУПЕРСИЛЫ ИНЖЕНЕРА: ДЕДУКЦИЯ, ИНДУКЦИЯ И АБДУКЦИЯ

Реальный кейс из обучения DevIT Academy.
Студент настраивает CI/CD. Docker-образ собирается, но push в GitLab Container Registry падает:

403 Forbidden
failed to fetch anonymous token

Три инженера решали бы эту задачу по-разному:

📐 ДЕДУКЦИЯ – знаю правило, применяю

"403 = нет прав"
→ Проверяю токен. Есть. ✓
→ Проверяю роли в проекте.
Maintainer. ✓
→ Проверяю namespace. Совпадает. ✓
→ Всё правильно... но не работает.

📊 ИНДУКЦИЯ – собираю факты, ищу паттерн

→ На одном раннере падает, на другом тоже.
→ В другом проекте тоже 403.
→ "Значит проблема глобальная? Может registry сломан?"
→ Нет, у других работает.

🔍 АБДУКЦИЯ – вижу симптом, строю гипотезу

→ "docker login проходит, а push – нет..."
→ "Что если login и push идут на РАЗНЫЕ хосты?"

Смотрим под капот:

login → registry.devitacademy.lab

push → registry.devitacademy.lab:443

Docker хранит пароль по ТОЧНОМУ имени хоста. Для него это два разных сервера. Login сохранил пароль для одного, push ищет пароль для другого. Не находит → идет как anonymous → получает 403.

Убрали :443 из переменной. Заработало.

🎓 Откуда ноги растут? (Инженерная справка)

Термин абдукция ввёл Чарльз Сандерс Пирс – «отец» американской логики. Он доказал: дедукция и индукция не создают новых знаний. Пирс утверждал: Абдукция – это единственный вид логики, способный на озарение. Это когда вы видите странный результат и «догадываетесь», какое правило могло его вызвать. Это не 100% доказательство, а лучшее объяснение из имеющихся. Именно так работает мозг инженера, когда он связывает 403-ю ошибку с портом в URL.

📚 Причём тут цикл Колба?

Дэвид Колб описал, как мы учимся: Опыт → Рефлексия → Теория → Эксперимент.

Три типа мышления – это движки внутри этого цикла:

АБДУКЦИЯ на этапе рефлексии подкидывает гипотезу «почему».

ДЕДУКЦИЯ на этапе теории строит прогноз («если гипотеза верна, то в конфиге будет два ключа»).

ИНДУКЦИЯ после эксперимента превращает результат в правило.

Без абдукции цикл буксует: студент видит ошибку, но не может сформулировать «почему». Абдукция – это мост.

⚡️ Итого

Дедукция – Сила: надёжно. Слабость: нужно уже знать.

Индукция – Сила: учишься на опыте. Слабость: риск ложных корреляций.

Абдукция – Сила: работает в неизвестности. Слабость: гипотеза может быть неверной.

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

Абдукция тренируется. Каждая дебаг-сессия – это тренажёр.


📊 ОПРОС: На каком движке ты сегодня?

Ставь реакцию, которая лучше всего описывает твой подход к решению задач:

💯 — Дедукция. Читаю доку, делаю по ГОСТу.
🤔 — Индукция. Вижу знакомые грабли, ищу закономерности.
🤯 — Абдукция. Строю безумные гипотезы, когда всё горит.
👨‍💻 — Инженерный хаос. Некогда думать, просто копаю до победного!

Пиши в комментах самую дикую гипотезу, которая в итоге оказалась правильной 👇

#мышление #devops
👨‍💻6🤯2🔥1🤔11
🦀 Месяц на NORA: полёт нормальный

Месяц назад я полностью перевёз свои Docker-репозитории с GitLab Registry на NORA. Сейчас проект в реальной эксплуатации: на нём держится инфраструктура моей Академии (от движка LMS до внутренних сервисов и ArgoCD).

Как это работает в проде:
GitLab CI собирает образы -> использует NORA как buildx cache -> ArgoCD забирает готовые артефакты для деплоя. Нагрузка: 3 кластера, 9 нод. Если реестр ляжет, деплой встанет.

Про рекурсию:
Я собираю Нору самой же Норой. Прежде чем финальный образ улетает в паблик, он проходит через свой же инстанс как промежуточное хранилище. Такая вот петля в стиле Portal: бинарник сам себя порождает, сам же и хранит. Если в коде есть критичный баг, мой CI/CD сдохнет первым.

---

🛠 Что под капотом
Разделил функционал на то, что уже стабильно, и то, что пришлось допиливать по ходу дела.

Что работает давно (v0.1.x – v0.2.x):

Поддержка Docker, npm, Maven, PyPI, Cargo и Helm OCI.

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

Метрики Prometheus и простенькая админка.

---

Свежие правки (v0.2.25 – v0.2.27):

NORA_BODY_LIMIT_MB: вынес лимит размера слоев в конфиг (спасибо Shveik07 за фидбек).

Docker DELETE API: дописал поддержку удаления манифестов и блобов по спецификации V2.

SmartIpKeyExtractor: пофиксил Rate Limiter (v0.2.25), чтобы он не банил запросы от своей же инфры в K8s.

---

🚀 Планы и реестр
Этап v0.3 (с GC, аудитом и RBAC) по факту закрыт в ветке v0.2.x. Сейчас пилю OIDC/LDAP, потому что без нормальной авторизации в серьезный контур соваться нет смысла.
Параллельно готовлю документы для Реестра отечественного ПО.

---

Вопрос к тем, кто в теме:
Как вы ограничиваете размер Docker-образов на уровне реестра? Ставите жесткие лимиты или просто бьёте по рукам тех, кто пушит гигабайтные слои?

#кейс #rust
1🔥81
Самописный софт работает идеально... пока его автор не уйдет в отпуск 😏

Передаю привет всем мкбешникам, которые в своё время пилили на Delphi замену Zabbix-у. Софт вышел по-настоящему «платиновым» – столько времени работодателя было вбухано в его создание, что на эти деньги можно было купить небольшой ЦОД. История максимально поучительная.

В инженерии есть старый принцип – Бритва Оккама. Если упростить: не плоди сущности без необходимости. Но когда у тебя в руках любимый ЯП и зоопарк из облаков, Proxmox и Windows, зуд «написать свое идеальное» пересиливает логику.

---

Реальность жестче:

Каждая строчка своего кода – это долг. Ты берешь его у будущего себя под огромный процент. Если дежурный админ не разберется в твоей поделке в 3 часа ночи без звонка тебе – ты создал проблему, а не решение.

Standard is the new sexy. Zabbix – скучно? Да. Ansible – банально? Возможно. Но у них есть доки, комьюнити и вменяемый бас-фактор. Инфраструктура не должна превращаться в тыкву, когда ты уезжаешь в отпуск.

---

Инженерная модель принятия решений

Чтобы не начудить, я прогоняю идеи через три фильтра:

Правило 72 часов. Пришла идея переписать HashiCorp Vault с нуля? Подожди три дня. (Вспоминаю февраль 2022-го, когда на волне импортозамещения нас так накрыло – вовремя отпустило... или нет 😏). Обычно за это время находится готовый инструмент или понимание, что задача того не стоит.

PoC с дедлайном 4 часа. Ставим готовое (тот же DeepFlow или NetBox). Не завелось за это время? Значит, либо инструмент хлам, либо ты пытаешься забить микроскопом гвоздь.

Док «для стажера». Если не можешь описать архитектуру в паре абзацев так, чтобы понял новичок – ты переусложнил.

---

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

---

На каком уровне «велосипедостроения» находитесь вы или ваша команда? Голосуйте реакциями:

😁 Пишем скрипты-костыли, потому что «так быстрее».
🤗 Пытаемся переписать мировые стандарты, потому что «они тормозят».
😎 Используем скучный стандарт и спим по ночам.

---

В комментариях пишите про свой самый эпичный «велосипед», за который стыдно (или которым тайно гордитесь). 👇

#кейс #devops
😁4😎2💯1🤗1
⚡️ DevOps Digest #1 | 06.03.2026

🔥 Главное:

1. Crossplane и ИИ: платформы должны предоставлять API, а не интерфейсы. Узкое место – не написание кода, а то что происходит после отправки в репозиторий: развёртывание, проверка политик, координация. ИИ-агентам нужны декларативные API и машиночитаемые правила, а не вики и ручные процессы.
🔗 https://blog.crossplane.io/crossplane-ai-the-case-for-api-first-infrastructure/

2. jailed-agents – Nix-песочница для ИИ-агентов кодинга на базе bubblewrap. Агент работает в среде «нулевого доверия» без доступа к SSH-ключам, домашнему каталогу и секретам. Актуально для всех, кто запускает ИИ-ассистентов на своей машине.
🔗 https://github.com/andersonjoseph/jailed-agents

3. Кейс: самообслуживание в наблюдаемости через OpenTelemetry. Платформенная команда встроила OTel в SDK и обслуживает 90+ внутренних команд. Политики вместо инструкций дали единый стандарт телеметрии и 4-кратный рост пропускной способности.
🔗 https://platformengineering.org/blog/self-service-observability

4. devenv 2.0 – обновлённый интерфейс к Nix для разработческих окружений. Один файл devenv.nix описывает зависимости, сервисы и переменные. Воспроизводимые среды без контейнеров, теперь с упрощённой конфигурацией.
🔗 https://devenv.sh

5. Масштабирование GitOps: от одного кластера до 50+. Практическое руководство по OCI-артефактам как хранилищу состояния, топологиям управления парком кластеров и стратегиям работы с секретами и политиками на уровне предприятия.
🔗 https://platformengineering.org/blog/how-to-scale-gitops-in-the-enterprise

🔍 Почему платформа должна говорить на языке API

Тезис Crossplane попадает в точку: ИИ-агенты уже встраиваются в инженерные процессы, но большинство платформ построены для людей – с интерфейсами, неформализованными знаниями в вики и ручной координацией между командами. Если инфраструктура не описана декларативно и не доступна программно, агент упрётся в стену. Практический вывод: убедитесь, что политики живут в коде (OPA, Kyverno), состояние описано через API (Crossplane, Terraform), а зависимости обнаруживаемы – тогда ИИ станет помощником, а не игрушкой.

🛠 Команда дня:
kubectl diff -f manifests/

Показывает разницу между желаемым состоянием в файлах и фактическим в кластере – ловит расхождения до применения.

💬 Переслал коллегам? Пусть подпишутся: @DevITWay

#дайджест #devops
1🔥1
🛠 CMDB в 2026: как не поехать кукухой и сделать по-взрослому

Если при слове «учет ресурсов» ты представляешь пыльный Excel или монструозный ServiceNow, где данные протухают быстрее, чем ты жмешь Enter, выдыхай. В эпоху IaC старая добрая CMDB либо сдохла, либо мутировала в нечто полезное.

Разбираем три пути, как не плодить сущности и не врать самому себе.

---

🏠 Сценарий 1: Свой «ламповый» ЦОД (Proxmox, железо, виртуалки)

Где живет правда: Git-репозиторий. Terraform/OpenTofu рулит виртуалками, Ansible – конфигами.

Что прикрутить сверху:

– Каталог сервисов в Git – просто YAML-файлы в папке /catalog. Там пишем то, что код не знает: кто «папа» сервиса (owner), какой SLA и насколько всё бахнет, если сервис приляжет (критичность).

– Netbox – золотой стандарт для физики. Стойки, кабели, IP-план и VLAN-ы. Дружит с API, так что Ansible сам заберет оттуда нужный IP.

– Карта зависимостей – собирается полуавтоматом из состояния (state) Терраформа и API Кубера. Смотреть можно через Node Graph panel в Графане или рендерить Mermaid-схемы прямо в Git.

– Контроль «левака»: Запускаем terraform plan по расписанию. Если кто-то залез руками и что-то поменял – ловим алерт в телегу (drift detection).

---

☁️ Сценарий 2: Живем в облаках (AWS, Yandex Cloud и прочие)

Где живет правда: Удаленный бэкенд Терраформа с блокировкой (для Yandex Cloud будет Object Storage + YDB/PostgreSQL или S3+DynamoDB для AWS или аналоги).

Что прикрутить сверху:

– Родные инструменты – AWS Config или YC Asset Inventory. Облако и так знает про все твои железки, не дублируй – используй.

– Backstage или Port (free tier) – витрина для разработчика. Зашел и сразу видишь: вот сервис, вот его код, вот дока.

– Политика тегов – это и есть твоя CMDB. Тегаем всё: кто владелец, какой проект и сколько денег тратим. Натравливаем OPA/Conftest на пайплайн: нет тегов – не будет тебе деплоя.

– FinOps – когда теги на месте, сразу видно, кто натыкал лишних дисков на пару косарей зелени в месяц.

---

🥗 Сценарий 3: Винегрет (Облако + Своё + Наследие)

Самый распространённый случай. Правда размазана: облако в Терраформе, конфиги в Ансибле, Кубер в Арго, а «древнее зло» – в голове у админа.

Как выжить:

– Единое окно (Backstage) – агрегатор, который ничего не меняет, но всё показывает через плагины.

– Вариант для экономных: Скрипт-собиратор, который раз в час опрашивает все API, валидирует по JSON Schema и обновляет YAML-файлы в гите. Дешево и можно грепать.

– Главное правило: В агрегаторе ничего не трогаем руками! Хочешь изменений – иди в код. Иначе через неделю у тебя будет два вранья вместо одной правды.

---

💡 Коротко: что делать, а что – нет

Надо:

– Хранить бизнес-данные (кто крайний, какой SLA) рядом с кодом.
– Автоматизировать поиск ресурсов (Discovery).
– Бить по рукам в CI за отсутствие тегов ресурсов.
– Ловить расхождения (drift) через алерты.

Не надо:

– Вести учет руками в Excel/ServiceNow (смерти подобно).
– Заводить отдельные записи на каждый контейнер или лямбду (бессмысленно).
– Надеяться, что «потом заполним» (не заполните).

Итого: CMDB мертва, Service Catalog жив. Source of truth – в коде, бизнес-контекст – рядом, агрегация – автоматическая.

---

👇 А как у вас?

🏠 — Своё железо, Netbox, Git-каталог
☁️ — Облако, теги решают всё
💪 — Винегрет, Backstage спасает
🤡 — Excel + «Михалыч помнит»

---

#мышление #devops
🤡41111
⚡️ DevOps Digest #2 | 10.03.2026

🔥 Главное:
1. uutils Coreutils 0.7 – GNU-утилиты на Rust – вышел новый релиз альтернативной реализации coreutils на Rust. Более 100 утилит (sort, cp, chmod, ls и др.) теперь работают кроссплатформенно, включая Windows и Fuchsia. Проект зреет и всё ближе к продакшн-применению.
opennet.ru

2. FreeBSD 14.4 – стабильный релиз – после 9 месяцев разработки вышла новая версия с образами для amd64, aarch64, riscv64 и готовыми сборками для виртуализации (QCOW2, VHD, VMDK). Актуально для тех, кто использует FreeBSD в сетевых устройствах и серверах хранения.
opennet.ru

3. Атака через npm-пакет Cline – 4000 заражённых машин – злоумышленники внедрили скрытую зависимость в package.json популярного ИИ-ассистента. Одна строчка postinstall установила стороннего агента с полным доступом к системе. 8 часов до обнаружения.
habr.com

4. Self-hosted дашборд для GitHub Actions – Snorlx – инструмент для централизованного мониторинга CI/CD пайплайнов с обновлениями в реальном времени по всем репозиториям. Разворачивается на своей инфраструктуре, без привязки к внешним сервисам.
https://github.com/banshee86vr/snorlx

5. Открытый сервер для мессенджера MAX и ТамТам – энтузиасты написали на Python собственную реализацию серверной части через обратный инжиниринг протокола. Поддерживает MariaDB, MySQL, SQLite. Код под лицензией BSD – интересный пример импортонезависимого подхода.
opennet.ru

🔍 Безопасность цепочки поставок – проблема не уходит
Инцидент с Cline показывает, что атака через postinstall-скрипты в npm остаётся тривиальной. Ни один аудит зависимостей не спасёт, если вы автоматически обновляете пакеты без проверки diff. Практический вывод: используйте npm audit, lockfile-ы, а в CI – запрет произвольных postinstall-скриптов через .npmrc с ignore-scripts=true и явный whitelist.

🛠 Команда дня:
npm config set ignore-scripts true

Запрещает выполнение lifecycle-скриптов (preinstall, postinstall, prepare) при npm install.
Это снижает риск supply-chain атак, когда вредоносный пакет запускает код во время установки.
⚠️ Но многие пакеты используют postinstall, поэтому включать стоит осознанно.

💬 Переслал коллегам? Пусть подпишутся: @DevITWay

#дайджест #devops
🔥21
🛠 Гадание по YAML-конфигу твоей жизни: Career Matcher v1.0

На досуге собрал тулзу, которая делает больно, но честно. Знакомьтесь – Career Matcher.

Типичная ситуация: видишь вакансию мечты в BigTech, смотришь в своё резюме, потом снова на вакансию... И такое чувство, что между вами пропасть размером в Legacy-монолит. Чтобы не гадать «возьмут – не возьмут», я запилил бесплатный анализатор.

Как это работает (без регистрации и СМС):

🔗 Линк: https://lms.devitacademy.com/career

1. Закидываешь текст своего CV.
2. Копипастишь описание вакансии.
3. Ждешь ~10 секунд (пока магия AI перемалывает скиллы).

Что на выходе (самый сок):

Процент матча: Визуальный индикатор, насколько ты «свой» для этой позиции.
Оценка грейда: На какой уровень реально тянет опыт (Junior/Middle/Senior).
Зарплатная вилка: Ориентир по рынку 2026 года, чтобы не продешевить на оффере.
Gap-анализ: Таблица навыков – что уже есть, чего не хватает и насколько это критично для нанимающего лида.

Внутри – инженерный жир (HA на минималках):
Я не просто прикрутил одну LLM-ку, а заморочился над архитектурой:

AI-Chain с фолбеком: Сначала запрос идет в жирную Llama 3.3 70B через Groq. Если Groq прилёг – переключается на Kimi K2. Если и там беда – поднимается локальный «кракен» Qwen3 14B на моей RTX 3090 (Ollama). 100% доступность, даже если внешние API решат отдохнуть.

Таксономия РФ-рынка: Знает про ~50 актуальных DevOps-скиллов, а не абстрактную воду.

Маппинг на обучение: Если тулза видит просадку по K8s или Linux, она сразу подскажет конкретную неделю курса, где этот пробел закрывается.

Почему это стоит потыкать?

1. Никакого гейтинга: Результат сразу. Логин через Telegram нужен, только если захочешь сохранить глубокую оценку в профиль.
2. Скорость: 5 коммитов от прототипа до продакшена – чистый инжиниринг без бюрократии.
3. Честность: Лимит 3 запроса в час на IP без регистрации, 10 запросов в час после регистрации.

Деплойте свои резюме сюда: https://lms.devitacademy.com/career

Если Match % меньше 40 – не расстраивайся, это просто повод обновить конфиг головы.

#карьера #ai
🤩3🔥1
Как захакать собес за 30 секунд: Позиция «Своего»

Вчера я выложил Career Matcher – инструмент, который честно говорит: «дружище, вот тут ты красавчик, а тут подтяни матчасть».

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

Есть один прием, который меняет ход всей встречи.
Называется – «Позиция трудоустроенного».

В чём механика?

Ты перестаешь быть «просителем» (кандидатом, который ждет оценки) и начинаешь вести себя как партнер, который уже вышел на работу и вникает в процессы.

Почувствуй разницу в вопросах:

Обычный кандидат: «А какой у вас стек?», «А как вы обучаете новичков?», «Какой у вас график?» (Фокус на себе и комфорте).
Кандидат в позиции трудоустроенного: «Когда я приступлю, с кем из команды синхронизироваться в первую неделю, чтобы быстрее закрыть горящие тикеты?», «Как мы будем измерять успех этого проекта через полгода?» (Фокус на результате и команде).

---

3 маркера, которые переключают восприятие интервьюера:

1. Местоимение «Мы» вместо «Вы»: Когда ты говоришь «Как мы будем фиксить техдолг?», интервьюер подсознательно уже видит тебя в штатном расписании. Мозгу сложнее отказать тому, кого он уже «принял».
2. Процессы вместо условий: Вопросы про приоритеты в спринте или формат ретроспективы показывают, что тебя волнует работа, а не наличие печенек в офисе.
3. Детали вместо общих фраз: Ты спрашиваешь не «что делать», а «с чего я начну, чтобы принести пользу в первый же день».

Пять «киллер-вопросов» для DevOps-собеса:

1. «Какой инцидент за последний месяц был самым болезненным? Как бы мы его расковыряли, если бы я уже был в команде?»
2. «CI/CD пайплайн – он уже "забетонирован" или у нас есть план по его перестройке?»
3. «Если я выхожу в понедельник – какая задача горит ярче всего?»
4. «Как мы балансируем между фичами и техдолгом? Выделен ли у нас бюджет времени на рефакторинг?»
5. «Мониторинг – мы уже видим всё, что нужно, или мой первый приоритет – закрыть слепые зоны?»

Сохрани себе – пригодится перед следующим созвоном.

---

Где грань между уверенностью и кринжем?

Здоровый подход: Любознательный тон, искренний интерес к проблемам бизнеса. Ты — партнер.
Перебор: Снисходительность и советы «как вам всё тут переделать». Ты задаешь вопросы, а не раздаешь ответы.

Итог:
Вчера – нашел точки роста.
Сегодня – знаешь, как их упаковать в оффер.
Завтра – выходишь на работу.

Проверь свои сильные стороны перед следующим собесом:
👉 lms.devitacademy.com/career

ЗЫ можно проверить функционал просто указав слева пару скилов, а в требованиях другие или схожие без лишних слов 😜.

#карьера #devops
🔥3
99.9% доступности – это не «почти всегда работает».

Это ~8 часов 45 минут простоя в год.

А 99.99% – уже всего 52 минуты.

На собеседованиях часто говорят:
«У нас SLA – три девятки».
Или сверху спустят KPI 99.99% для ресурса, который просит его пристрелить.

А потом не могут сказать, сколько это в минутах.

Собрал калькулятор, который считает в обе стороны:
→ вводишь процент – получаешь допустимый простой
→ вводишь простой – получаешь реальный SLA

Популярные уровни:

• 99% – 3 дня 15 часов простоя в год
• 99.9% – 8 часов 45 минут
• 99.99% – 52 минуты
• 99.999% – ~5 минут

Разница между 99.9% и 99.99% – одна девятка.
Но по архитектуре и стоимости – пропасть.

Быстрый тест для DevOps:
сколько downtime в год у 99.95% SLA?

👉 sla.devitacademy.com

#мышление #devops
5🔥1