Общая память: почему .md – это не RAG
В серии про "Барьер" я топил за то, что нельзя становиться био-адаптером для нейронки. Нужно выходить на уровень архитектора.
Знаете момент в "Матрице", когда Нео открывает глаза и говорит "I know kung fu"? Ему загрузили программу напрямую в мозг.
Теперь представьте Нео, у которого загрузка слетает каждые два часа. Он снова не знает кунг-фу. Каждый спарринг начинается с "а что такое удар?".
Вот так работает AI-ассистент без памяти. Каждая сессия – чистый лист. Ты заново объясняешь структуру проекта, свои конвенции, свои баги. Цифровая деменция.
Главный вопрос после тех постов: как сделать так, чтобы AI не "забывал" контекст через два часа?
Обычно предлагают два пути:
1. Закинуть всё в CLAUDE.md или скармливать Obsidian-плагинам.
2. Поднимать RAG.
Первый вариант работает до определённого масштаба. Пока у тебя 50 заметок и один проект, .md хватает. Но у этого подхода есть "стеклянный потолок". Например, Claude Code принудительно обрезает CLAUDE.md после ~200 строк. Даже если скормить модели огромный файл целиком, вступает в силу эффект Lost in the Middle: модели хуже извлекают данные из середины длинного контекста (это подтверждено тестами ребят из Stanford и Anthropic). Кроме того, это статика: спрашиваешь про Rust, а модель "переваривает" и твои заметки по Python, просто потому что они лежат в том же файле.
RAG (Retrieval-Augmented Generation) – это уже не просто "положи файл". Здесь речь про динамику и фильтрацию.
Например, у меня сейчас:
180+ файлов памяти (заметки, логи, база знаний).
11 000+ только профильных DevOps-фрагментов (всего в базе под 300к векторов).
Векторный стор (Qdrant) + семантический поиск.
Это и есть "человек в цепочке". Я сам решаю, что пойдет в индекс и как оно режется на чанки. RAG не пихает в модель всё подряд – он делает семантический поиск и отдает только те куски, которые релевантны текущему вопросу. В итоге ассистент не просто "умный", он контекстный. Он знает специфику именно моего кода и старые баги моих проектов.
Многие боятся лезть в RAG, думая, что нужны серверные стойки.
Спойлер: GPU не нужен .
Для персональной базы знаний в пару тысяч фрагментов Qdrant занимает ~100 МБ оперативки – это действительно уровень одной вкладки Chrome. У меня на 300к векторов база потребляет 4.7 ГБ RAM, работая на обычном CPU. Поиск по смыслу при этом происходит мгновенно.
В следующих постах и заметках в блоге попробуем собрать пайплайн с нуля.
Скоро про Qdrant. Минимум теории, только конфиги и запуск.
#миникурс #мышление
В серии про "Барьер" я топил за то, что нельзя становиться био-адаптером для нейронки. Нужно выходить на уровень архитектора.
Знаете момент в "Матрице", когда Нео открывает глаза и говорит "I know kung fu"? Ему загрузили программу напрямую в мозг.
Теперь представьте Нео, у которого загрузка слетает каждые два часа. Он снова не знает кунг-фу. Каждый спарринг начинается с "а что такое удар?".
Вот так работает AI-ассистент без памяти. Каждая сессия – чистый лист. Ты заново объясняешь структуру проекта, свои конвенции, свои баги. Цифровая деменция.
Главный вопрос после тех постов: как сделать так, чтобы AI не "забывал" контекст через два часа?
Обычно предлагают два пути:
1. Закинуть всё в CLAUDE.md или скармливать Obsidian-плагинам.
2. Поднимать RAG.
Первый вариант работает до определённого масштаба. Пока у тебя 50 заметок и один проект, .md хватает. Но у этого подхода есть "стеклянный потолок". Например, Claude Code принудительно обрезает CLAUDE.md после ~200 строк. Даже если скормить модели огромный файл целиком, вступает в силу эффект Lost in the Middle: модели хуже извлекают данные из середины длинного контекста (это подтверждено тестами ребят из Stanford и Anthropic). Кроме того, это статика: спрашиваешь про Rust, а модель "переваривает" и твои заметки по Python, просто потому что они лежат в том же файле.
RAG (Retrieval-Augmented Generation) – это уже не просто "положи файл". Здесь речь про динамику и фильтрацию.
Например, у меня сейчас:
180+ файлов памяти (заметки, логи, база знаний).
11 000+ только профильных DevOps-фрагментов (всего в базе под 300к векторов).
Векторный стор (Qdrant) + семантический поиск.
Это и есть "человек в цепочке". Я сам решаю, что пойдет в индекс и как оно режется на чанки. RAG не пихает в модель всё подряд – он делает семантический поиск и отдает только те куски, которые релевантны текущему вопросу. В итоге ассистент не просто "умный", он контекстный. Он знает специфику именно моего кода и старые баги моих проектов.
Многие боятся лезть в RAG, думая, что нужны серверные стойки.
Спойлер:
Для персональной базы знаний в пару тысяч фрагментов Qdrant занимает ~100 МБ оперативки – это действительно уровень одной вкладки Chrome. У меня на 300к векторов база потребляет 4.7 ГБ RAM, работая на обычном CPU. Поиск по смыслу при этом происходит мгновенно.
В следующих постах и заметках в блоге попробуем собрать пайплайн с нуля.
Скоро про Qdrant. Минимум теории, только конфиги и запуск.
#миникурс #мышление
🔥8❤1
Как понять, что ты стал чужим KPI, а не кандидатом
"Ходит дурачок по лесу,
ищет дурачок глупее себя"
– Егор Летов
Недавно со мной общался AI-бот от крупной компании. Четыре раунда глубоких вопросов: архитектура моей платформы, стек, метрики, бюджеты. По сути бесплатный консалтинг на полчаса.
В ответ на мои вопросы о зарплате, стеке и локации бот выдавал "нет информации". Через три недели шаблонный отказ без фидбека (сами нашли, сами написали, сами отказали, молодцы). Система не оценивала мою экспертизу, она её тупо собирала. Это не скрининг, а экстракция данных какая-то под видом интервью.
Красные флаги, что вы строчка в отчёте:
– Односторонний обмен. Бот вытягивает детали архитектуры, но не дает конкретики по вакансии.
– Барьер из чат-ботов. Вас не пускают к живому человеку, так как бот собирает данные дешевле и быстрее.
– Зарплата на первой минуте. Сбор рыночных вилок без контекста задач и стека.
– Рекрутер "на подмене". Человек в чате не знает деталей позиции и работает просто как оператор эксельки.
– Документы до этапов. Просьба прислать трудовую "для белого списка" еще до технического интервью.
– Фантомные вакансии. В 2026 году до 40% вакансий просто фейки для создания видимости рынка или сбора аналитики.
Что с этим делать:
– Выходите на нанимающих напрямую. LinkedIn, митапы или рефералы позволяют обойти "сборочный цех" ботов.
– Соблюдайте пропорциональность. Глубина вашего ответа должна соответствовать прозрачности вакансии. Не назвали стек – не расписывайте архитектуру.
– Тестируйте инверсией. Спросите бота или рекрутера: "Какую техническую боль команда решала в прошлом квартале?". Шаблонный ответ – признак мертвой вакансии.
– Никаких документов до оффера. Паспорт и трудовая передаются только при оформлении.
– Если чувствуете, что вас гоняют по кругу – вы не в найме, а в чужой отчетности.
Если хочешь разобрать свою стратегию поиска и перестать быть чужим KPI – записывайся на разбор:
calendly.com/devitway/meet-with-me
#devops #карьера
"Ходит дурачок по лесу,
ищет дурачок глупее себя"
– Егор Летов
Недавно со мной общался AI-бот от крупной компании. Четыре раунда глубоких вопросов: архитектура моей платформы, стек, метрики, бюджеты. По сути бесплатный консалтинг на полчаса.
В ответ на мои вопросы о зарплате, стеке и локации бот выдавал "нет информации". Через три недели шаблонный отказ без фидбека (сами нашли, сами написали, сами отказали, молодцы). Система не оценивала мою экспертизу, она её тупо собирала. Это не скрининг, а экстракция данных какая-то под видом интервью.
Красные флаги, что вы строчка в отчёте:
– Односторонний обмен. Бот вытягивает детали архитектуры, но не дает конкретики по вакансии.
– Барьер из чат-ботов. Вас не пускают к живому человеку, так как бот собирает данные дешевле и быстрее.
– Зарплата на первой минуте. Сбор рыночных вилок без контекста задач и стека.
– Рекрутер "на подмене". Человек в чате не знает деталей позиции и работает просто как оператор эксельки.
– Документы до этапов. Просьба прислать трудовую "для белого списка" еще до технического интервью.
– Фантомные вакансии. В 2026 году до 40% вакансий просто фейки для создания видимости рынка или сбора аналитики.
Что с этим делать:
– Выходите на нанимающих напрямую. LinkedIn, митапы или рефералы позволяют обойти "сборочный цех" ботов.
– Соблюдайте пропорциональность. Глубина вашего ответа должна соответствовать прозрачности вакансии. Не назвали стек – не расписывайте архитектуру.
– Тестируйте инверсией. Спросите бота или рекрутера: "Какую техническую боль команда решала в прошлом квартале?". Шаблонный ответ – признак мертвой вакансии.
– Никаких документов до оффера. Паспорт и трудовая передаются только при оформлении.
– Если чувствуете, что вас гоняют по кругу – вы не в найме, а в чужой отчетности.
Если хочешь разобрать свою стратегию поиска и перестать быть чужим KPI – записывайся на разбор:
calendly.com/devitway/meet-with-me
#devops #карьера
🔥4👍2❤1
⚡️ DevOps Digest #14 | 10.05.2026
🔥 Главное за неделю:
1. Cilium: практики защиты CI/CD в open-source проекте. Команда Cilium опубликовала разбор того, как они защищают свой конвейер сборки – актуально для любого, кто поддерживает CI/CD с публичными контрибьюторами и supply-chain рисками.
🔗 https://cilium.io/blog/2026/05/06/securing-cicd-open-source-lessons-from-cilium
2. Kubescape набирает обороты – open-source платформа безопасности Kubernetes для IDE, CI/CD и кластеров. Сканирование на соответствие стандартам, поиск мисконфигураций, анализ рисков. Работает локально, без привязки к облачным вендорам.
🔗 https://github.com/kubescape/kubescape
3. Gitleaks – поиск секретов в репозиториях продолжает расти (230 звёзд за неделю). Инструмент для интеграции в CI/CD: сканирует коммиты, pre-commit хуки, целые репозитории на предмет утечек ключей, токенов и паролей.
🔗 https://github.com/gitleaks/gitleaks
4. Импортозамещение: централизованная аутентификация в Linux. Практический опыт интегратора по настройке аутентификации в закрытом контуре – FreeIPA, SSSD, работа с отечественными дистрибутивами. Полезно тем, кто мигрирует с Active Directory.
🔗 https://habr.com/ru/companies/astralinux/articles/1023816/
🔍 Безопасность CI/CD – не только про код
Cilium показал, что защита пайплайна – это не только сканирование образов. Это подписание артефактов, ограничение прав GitHub Actions runners, изоляция секретов между окружениями и аудит доступа контрибьюторов. Если у вас в CI есть хотя бы один step с доступом к продовым секретам – стоит пройтись по их чеклисту.
🛠 Команда дня:
Сканирует кластер Kubernetes на мисконфигурации и соответствие стандартам безопасности (NSA, MITRE). Работает без облачного аккаунта
#дайджест #security #cicd
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Cilium: практики защиты CI/CD в open-source проекте. Команда Cilium опубликовала разбор того, как они защищают свой конвейер сборки – актуально для любого, кто поддерживает CI/CD с публичными контрибьюторами и supply-chain рисками.
🔗 https://cilium.io/blog/2026/05/06/securing-cicd-open-source-lessons-from-cilium
2. Kubescape набирает обороты – open-source платформа безопасности Kubernetes для IDE, CI/CD и кластеров. Сканирование на соответствие стандартам, поиск мисконфигураций, анализ рисков. Работает локально, без привязки к облачным вендорам.
🔗 https://github.com/kubescape/kubescape
3. Gitleaks – поиск секретов в репозиториях продолжает расти (230 звёзд за неделю). Инструмент для интеграции в CI/CD: сканирует коммиты, pre-commit хуки, целые репозитории на предмет утечек ключей, токенов и паролей.
🔗 https://github.com/gitleaks/gitleaks
4. Импортозамещение: централизованная аутентификация в Linux. Практический опыт интегратора по настройке аутентификации в закрытом контуре – FreeIPA, SSSD, работа с отечественными дистрибутивами. Полезно тем, кто мигрирует с Active Directory.
🔗 https://habr.com/ru/companies/astralinux/articles/1023816/
🔍 Безопасность CI/CD – не только про код
Cilium показал, что защита пайплайна – это не только сканирование образов. Это подписание артефактов, ограничение прав GitHub Actions runners, изоляция секретов между окружениями и аудит доступа контрибьюторов. Если у вас в CI есть хотя бы один step с доступом к продовым секретам – стоит пройтись по их чеклисту.
🛠 Команда дня:
kubescape scan --enable-host-scan --format pretty-printer
Сканирует кластер Kubernetes на мисконфигурации и соответствие стандартам безопасности (NSA, MITRE). Работает без облачного аккаунта
#дайджест #security #cicd
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
cilium.io
Securing CI/CD for an open source project: lessons from Cilium
A case study of how Cilium secures its CI/CD pipeline end to end: SHA-pinned actions, two-phase checkouts for pull_request_target, Re...
🔥4
RAG Pipeline 1/N: Qdrant
Qdrant – векторная БД. Текст превращается в массив из 384 чисел. Два похожих текста дают похожие массивы. Косинусная близость (Cosine similarity) между "reverse proxy" и "проксирование запросов" – 0.94. Между "reverse proxy" и "рецепт борща" – 0.12. PostgreSQL с LIKE так не умеет.
В посте практика от docker run до семантического поиска на Python. Без теории ради теории: запустил, создал коллекцию, загрузил данные, нашёл по смыслу. Плюс продакшен-параметры из моего рабочего pipeline: 16 446 чанков, 384 измерения, systemd timer на синхронизацию.
Это первый пост серии RAG Pipeline.
Следующий – про embeddings: Ollama vs API, подводные камни с русским текстом.
👉 devopsway.ru/posts/rag-01-qdrant-vectors/
#кейс #ai
Qdrant – векторная БД. Текст превращается в массив из 384 чисел. Два похожих текста дают похожие массивы. Косинусная близость (Cosine similarity) между "reverse proxy" и "проксирование запросов" – 0.94. Между "reverse proxy" и "рецепт борща" – 0.12. PostgreSQL с LIKE так не умеет.
В посте практика от docker run до семантического поиска на Python. Без теории ради теории: запустил, создал коллекцию, загрузил данные, нашёл по смыслу. Плюс продакшен-параметры из моего рабочего pipeline: 16 446 чанков, 384 измерения, systemd timer на синхронизацию.
Это первый пост серии RAG Pipeline.
Следующий – про embeddings: Ollama vs API, подводные камни с русским текстом.
👉 devopsway.ru/posts/rag-01-qdrant-vectors/
#кейс #ai
🔥6❤1
RAG Pipeline 2/N: Embeddings
Embedding-модель превращает текст в массив чисел. От выбора модели зависит, найдёт ваш RAG правильный фрагмент или вернёт мусор.
Взял три модели из Ollama и скормил им пару фраз на русском: "настройка reverse proxy" и "проксирование запросов через nginx". Смысл одинаковый, слова разные. Для контроля добавил "рецепт борща" – модель должна понять, что это не про nginx.
Результат:
– all-MiniLM (23 MB): score 0.24.
Провал. RAG ничего не найдёт.
– nomic-embed-text (274 MB): score 0.45.
Но "рецепт борща" тоже 0.46. Модель не отличает nginx от кулинарии.
– mxbai-embed-large (670 MB): score 0.72.
Работает, но борщ всё ещё 0.50 – порог нужно настраивать аккуратно.
Почему так плохо? Русское слово "контейнер" для этих моделей – девять токенов: "к", "о", "н", "т", "е", "и", "н", "е", "р". Побуквенно. Русского текста в обучающих данных было мало, и модели его просто плохо понимают.
Ещё в посте: почему batch ломается на длинном русском тексте, зачем чистить текст перед embedding, и реальные параметры pipeline для 206,000+ векторов.
Полная версия с кодом и benchmark-скриптом
👉 devopsway.ru/posts/rag-02-embeddings/
#кейс #ai
Embedding-модель превращает текст в массив чисел. От выбора модели зависит, найдёт ваш RAG правильный фрагмент или вернёт мусор.
Взял три модели из Ollama и скормил им пару фраз на русском: "настройка reverse proxy" и "проксирование запросов через nginx". Смысл одинаковый, слова разные. Для контроля добавил "рецепт борща" – модель должна понять, что это не про nginx.
Результат:
– all-MiniLM (23 MB): score 0.24.
Провал. RAG ничего не найдёт.
– nomic-embed-text (274 MB): score 0.45.
Но "рецепт борща" тоже 0.46. Модель не отличает nginx от кулинарии.
– mxbai-embed-large (670 MB): score 0.72.
Работает, но борщ всё ещё 0.50 – порог нужно настраивать аккуратно.
Почему так плохо? Русское слово "контейнер" для этих моделей – девять токенов: "к", "о", "н", "т", "е", "и", "н", "е", "р". Побуквенно. Русского текста в обучающих данных было мало, и модели его просто плохо понимают.
Ещё в посте: почему batch ломается на длинном русском тексте, зачем чистить текст перед embedding, и реальные параметры pipeline для 206,000+ векторов.
Полная версия с кодом и benchmark-скриптом
👉 devopsway.ru/posts/rag-02-embeddings/
#кейс #ai
🔥3👍2
⚡️ DevOps Digest #15 | 18.05.2026
🔥 Главное за неделю:
1. Kubernetes v1.36: ExternalIPs в Service объявлен deprecated – Поле .spec.externalIPs признано небезопасным (CVE-2020-8554) и объявлено устаревшим. Если используете его в on-premise кластере вместо облачного балансировщика – пора переходить на MetalLB или kube-vip. В будущих версиях kube-proxy перестанет поддерживать ExternalIPs.
🔗 https://kubernetes.io/blog/2026/05/14/kubernetes-v1-36-deprecation-and-removal-of-service-externalips/
2. Terraform 1.15: переменные в source модулей и deprecation переменных – Теперь можно использовать переменные прямо в source и version модулей (через новый атрибут const = true). Плюс появился механизм пометки переменных как deprecated с кастомным сообщением – удобно при рефакторинге больших конфигураций.
🔗 https://www.hashicorp.com/blog/new-in-terraform-115-dynamic-sources-variable-deprecation-and-more
3. node-ipc снова скомпрометирован – но не через код, а через домен за $9 – Атакующие перехватили просроченный домен мейнтейнера, сбросили пароль npm-аккаунта и опубликовали вредоносные версии пакета. Payload крал AWS-ключи, SSH и .env, а эксфильтрация шла через DNS TXT-записи – SIEM такое почти не видит. Если у вас есть npm-зависимости в CI/CD – стоит прочитать.
🔗 https://habr.com/ru/articles/1035902/
4. Стоимость уборки за AI-кодом – то, о чём молчит нарратив про скорость – GitHub прогнозирует 14 млрд коммитов в 2026 году. Но AI генерирует код быстрее, чем команды успевают его ревьюить и поддерживать. Статья разбирает скрытые расходы: технический долг, раздувание кодовой базы, проблемы с безопасностью сгенерированного кода. Полезный взгляд для тех, кто внедряет AI-инструменты в пайплайн.
🔗 https://thenewstack.io/cleanup-cost-ai-code/
5. Как программа попадает в память: от execve до main – Пошаговый разбор того, что происходит в Linux после ./myprogram: как ядро находит файл, загружает ELF в память, вызывает динамический линковщик и доходит до main(). Всё с примерами через strace. Отличный материал для понимания того, что происходит под капотом.
🔗 https://habr.com/ru/articles/1036444/
6. Cloudflare: как оптимизация TCP в ядре Linux сломала QUIC – Инженеры обнаружили, что окно перегрузки CUBIC залипает на минимуме и не восстанавливается. Причина – Linux-ядро обнуляет таймер cwnd_epoch при переходе в idle, но QUIC-реализация quiche использует CUBIC иначе, чем TCP-стек ядра. Починили одной строкой. Поучительный разбор про то, как допущения одной подсистемы ломают другую.
🔗 https://blog.cloudflare.com/quic-death-spiral-fix/
🛠 Команда недели:
Найти все Service с externalIPs в кластере – после deprecation в K8s 1.36 стоит знать, где они у вас.
#дайджест #kubernetes #devops
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Kubernetes v1.36: ExternalIPs в Service объявлен deprecated – Поле .spec.externalIPs признано небезопасным (CVE-2020-8554) и объявлено устаревшим. Если используете его в on-premise кластере вместо облачного балансировщика – пора переходить на MetalLB или kube-vip. В будущих версиях kube-proxy перестанет поддерживать ExternalIPs.
🔗 https://kubernetes.io/blog/2026/05/14/kubernetes-v1-36-deprecation-and-removal-of-service-externalips/
2. Terraform 1.15: переменные в source модулей и deprecation переменных – Теперь можно использовать переменные прямо в source и version модулей (через новый атрибут const = true). Плюс появился механизм пометки переменных как deprecated с кастомным сообщением – удобно при рефакторинге больших конфигураций.
🔗 https://www.hashicorp.com/blog/new-in-terraform-115-dynamic-sources-variable-deprecation-and-more
3. node-ipc снова скомпрометирован – но не через код, а через домен за $9 – Атакующие перехватили просроченный домен мейнтейнера, сбросили пароль npm-аккаунта и опубликовали вредоносные версии пакета. Payload крал AWS-ключи, SSH и .env, а эксфильтрация шла через DNS TXT-записи – SIEM такое почти не видит. Если у вас есть npm-зависимости в CI/CD – стоит прочитать.
🔗 https://habr.com/ru/articles/1035902/
4. Стоимость уборки за AI-кодом – то, о чём молчит нарратив про скорость – GitHub прогнозирует 14 млрд коммитов в 2026 году. Но AI генерирует код быстрее, чем команды успевают его ревьюить и поддерживать. Статья разбирает скрытые расходы: технический долг, раздувание кодовой базы, проблемы с безопасностью сгенерированного кода. Полезный взгляд для тех, кто внедряет AI-инструменты в пайплайн.
🔗 https://thenewstack.io/cleanup-cost-ai-code/
5. Как программа попадает в память: от execve до main – Пошаговый разбор того, что происходит в Linux после ./myprogram: как ядро находит файл, загружает ELF в память, вызывает динамический линковщик и доходит до main(). Всё с примерами через strace. Отличный материал для понимания того, что происходит под капотом.
🔗 https://habr.com/ru/articles/1036444/
6. Cloudflare: как оптимизация TCP в ядре Linux сломала QUIC – Инженеры обнаружили, что окно перегрузки CUBIC залипает на минимуме и не восстанавливается. Причина – Linux-ядро обнуляет таймер cwnd_epoch при переходе в idle, но QUIC-реализация quiche использует CUBIC иначе, чем TCP-стек ядра. Починили одной строкой. Поучительный разбор про то, как допущения одной подсистемы ломают другую.
🔗 https://blog.cloudflare.com/quic-death-spiral-fix/
🛠 Команда недели:
kubectl get svc -A -o json | jq -r '.items[] | select(.spec.externalIPs != null) | "\(.metadata.namespace)/\(.metadata.name): \(.spec.externalIPs)"'
Найти все Service с externalIPs в кластере – после deprecation в K8s 1.36 стоит знать, где они у вас.
#дайджест #kubernetes #devops
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
Kubernetes
Kubernetes v1.36: Deprecation and removal of Service ExternalIPs
The .spec.externalIPs field for Service was an early attempt to provide cloud-load-balancer-like functionality for non-cloud clusters. Unfortunately, the API assumes that every user in the cluster is fully trusted, and in any situation where that is not the…
🔥5❤1
RAG Pipeline 3/N: Чанки
RAG-pipeline не скармливает файл модели целиком. Он отдаёт фрагменты – чанки по 800 символов. Если граница реза прошла посередине мысли, модель получит огрызок и ответит мусором.
Первая версия моего pipeline резала по 1500 символов. Ollama падала с HTTP 500 – binary search показал: worst-case русский markdown укладывает 512 токенов в 912 символов. 1500 – это ~840 токенов, на 60% больше лимита. Уменьшил до 800 – ошибки ушли.
Но размер – полдела. Фрагмент "…настройка Cad" без продолжения "dy reverse proxy" бесполезен.
У меня два уровня нарезки:
– Сначала по заголовкам H2/H3 в markdown. Каждая секция – логически завершённая мысль.
– Если секция больше 800 символов – дорезка с перекрытием (overlap) 150 символов. Контекст на стыке не теряется. 800/150 – соотношение, к которому пришёл после трёх итераций.
Ещё санитизация: Unicode-мусор, управляющие символы, строки длиннее 200 знаков без пробелов (base64, хеши) – всё это шумные векторы.
Фрагменты короче 20 символов отбрасываются.
Результат: 180+ файлов памяти → 3 010 фрагментов в Qdrant. Каждый фрагмент несёт метаданные: файл, секция, зона (hot/warm/cold), проект. Это потом позволяет фильтровать поиск, а не надеяться только на косинусную близость.
Полная версия с кодом и скриптом нарезки
👉 devopsway.ru/posts/rag-03-chunking/
Следующий – про поиск: почему одних векторов мало и зачем гибридный поиск (BM25 + dense).
#кейс #ai
RAG-pipeline не скармливает файл модели целиком. Он отдаёт фрагменты – чанки по 800 символов. Если граница реза прошла посередине мысли, модель получит огрызок и ответит мусором.
Первая версия моего pipeline резала по 1500 символов. Ollama падала с HTTP 500 – binary search показал: worst-case русский markdown укладывает 512 токенов в 912 символов. 1500 – это ~840 токенов, на 60% больше лимита. Уменьшил до 800 – ошибки ушли.
Но размер – полдела. Фрагмент "…настройка Cad" без продолжения "dy reverse proxy" бесполезен.
У меня два уровня нарезки:
– Сначала по заголовкам H2/H3 в markdown. Каждая секция – логически завершённая мысль.
– Если секция больше 800 символов – дорезка с перекрытием (overlap) 150 символов. Контекст на стыке не теряется. 800/150 – соотношение, к которому пришёл после трёх итераций.
Ещё санитизация: Unicode-мусор, управляющие символы, строки длиннее 200 знаков без пробелов (base64, хеши) – всё это шумные векторы.
Фрагменты короче 20 символов отбрасываются.
Результат: 180+ файлов памяти → 3 010 фрагментов в Qdrant. Каждый фрагмент несёт метаданные: файл, секция, зона (hot/warm/cold), проект. Это потом позволяет фильтровать поиск, а не надеяться только на косинусную близость.
Полная версия с кодом и скриптом нарезки
👉 devopsway.ru/posts/rag-03-chunking/
Следующий – про поиск: почему одних векторов мало и зачем гибридный поиск (BM25 + dense).
#кейс #ai
🔥4
Локальный AI в терминале: как собрать автономный стек и не зависеть от вендоров
В апреле Alibaba прикрыла бесплатный тир Qwen Code. Инструмент, на который завязали часть пайплайнов, протух за пару месяцев. Вывод банальный: любой внешний вендор – это точка отказа.
Пересобрал стек и статью по принципу полной автономности. CLI отдельно, инференс отдельно. Если завтра закроется очередной API-токен, мы просто меняем одну строку в конфиге.
Что внутри:
– 3 CLI (OpenCode, Aider, Qwen Code) – установлены, настроены, проверены
– MoE-модели: Qwen 3 30B-A3B выдаёт 20 t/s на CPU – быстрее, чем dense 8B
– Тест на DevOps-задачах: Dockerfile, systemd, Terraform, K8s – Gemma 4 26B оказалась лучше Qwen по качеству
– Грабли: /no_think сломан в Ollama 0.24, thinking mode жрёт токены, модели болтают вместо кода
– CPU vs GPU: реальные замеры на RTX 3090 и CPU с ограничением потоков
Полная версия с конфигами, Modelfile и таблицами
👉 devopsway.ru/posts/local-ai-devops-ollama-2026/
#гайд #ai #devops
В апреле Alibaba прикрыла бесплатный тир Qwen Code. Инструмент, на который завязали часть пайплайнов, протух за пару месяцев. Вывод банальный: любой внешний вендор – это точка отказа.
Пересобрал стек и статью по принципу полной автономности. CLI отдельно, инференс отдельно. Если завтра закроется очередной API-токен, мы просто меняем одну строку в конфиге.
Что внутри:
– 3 CLI (OpenCode, Aider, Qwen Code) – установлены, настроены, проверены
– MoE-модели: Qwen 3 30B-A3B выдаёт 20 t/s на CPU – быстрее, чем dense 8B
– Тест на DevOps-задачах: Dockerfile, systemd, Terraform, K8s – Gemma 4 26B оказалась лучше Qwen по качеству
– Грабли: /no_think сломан в Ollama 0.24, thinking mode жрёт токены, модели болтают вместо кода
– CPU vs GPU: реальные замеры на RTX 3090 и CPU с ограничением потоков
Полная версия с конфигами, Modelfile и таблицами
👉 devopsway.ru/posts/local-ai-devops-ollama-2026/
#гайд #ai #devops
🔥5❤2🙏1👻1
⚡️ DevOps Digest #16 | 25.05.2026
🔥 Главное за неделю:
1. Песочница для AI-агентов: почему "просто Docker" не спасает – Пошаговый гайд по изоляции AI-агентов, которые выполняют код: drop root, фильтрация syscalls, сетевые политики, отключение docker.sock. Актуально для всех, кто запускает автоматизацию с доступом к shell.
🔗 https://dev.to/alanwest/how-to-sandbox-ai-coding-agents-without-crippling-them-116c
2. docker-use – переключение между аккаунтами Docker Hub – Простая CLI-утилита: по директории конфигов на каждый аккаунт + shell-функция для переключения через
🔗 https://dev.to/chiragagg5k/managing-multiple-docker-hub-accounts-using-docker-use-b6p
3. Массовые обновления безопасности: nginx, OpenSSH, PostgreSQL, rsync, dnsmasq – На этой неделе вышли патчи для Debian, SUSE, Ubuntu, Fedora, AlmaLinux. Затронуты nginx, openssh, postgresql (14–18), rsync, dnsmasq, bind9, podman, runc. Проверьте свои серверы.
🔗 https://lwn.net/Articles/1073860/
4. Как ломаются сложные системы: 18 уроков для дежурного инженера – Разбор классической работы Ричарда Кука через призму SRE: катастрофа требует стечения нескольких отказов, система уже содержит баги, о которых вы не знаете, и постмортемы – не поиск виноватых, а способ учиться.
🔗 https://how.complexsystems.fail/
5. Кто мониторит AI-агентов в продакшене – CrewAI, AutoGen, LangGraph уже работают в production, но наблюдаемость этих систем хуже, чем у микросервисов 10 лет назад. Статья разбирает, что именно ломается: петли вызовов, рост latency, неконтролируемые расходы.
🔗 https://thenewstack.io/who-monitors-ai-agents/
6. CGE – краулер с визуализацией связей между поддоменами – Open-source инструмент для red team: собирает поддомены из SSL-сертификатов, краулит эндпоинты, парсит JS/HTML/формы, строит граф взаимодействий в реальном времени. Web UI + CLI.
🔗 https://github.com/a11mut3d/CGE
🛠 Команда недели:
Показывает последние 20 событий кластера в хронологическом порядке. Быстрый способ понять, что происходило, когда поды начали падать.
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Песочница для AI-агентов: почему "просто Docker" не спасает – Пошаговый гайд по изоляции AI-агентов, которые выполняют код: drop root, фильтрация syscalls, сетевые политики, отключение docker.sock. Актуально для всех, кто запускает автоматизацию с доступом к shell.
🔗 https://dev.to/alanwest/how-to-sandbox-ai-coding-agents-without-crippling-them-116c
2. docker-use – переключение между аккаунтами Docker Hub – Простая CLI-утилита: по директории конфигов на каждый аккаунт + shell-функция для переключения через
DOCKER_CONFIG. Полезно, если работаете с несколькими реестрами.🔗 https://dev.to/chiragagg5k/managing-multiple-docker-hub-accounts-using-docker-use-b6p
3. Массовые обновления безопасности: nginx, OpenSSH, PostgreSQL, rsync, dnsmasq – На этой неделе вышли патчи для Debian, SUSE, Ubuntu, Fedora, AlmaLinux. Затронуты nginx, openssh, postgresql (14–18), rsync, dnsmasq, bind9, podman, runc. Проверьте свои серверы.
🔗 https://lwn.net/Articles/1073860/
4. Как ломаются сложные системы: 18 уроков для дежурного инженера – Разбор классической работы Ричарда Кука через призму SRE: катастрофа требует стечения нескольких отказов, система уже содержит баги, о которых вы не знаете, и постмортемы – не поиск виноватых, а способ учиться.
🔗 https://how.complexsystems.fail/
5. Кто мониторит AI-агентов в продакшене – CrewAI, AutoGen, LangGraph уже работают в production, но наблюдаемость этих систем хуже, чем у микросервисов 10 лет назад. Статья разбирает, что именно ломается: петли вызовов, рост latency, неконтролируемые расходы.
🔗 https://thenewstack.io/who-monitors-ai-agents/
6. CGE – краулер с визуализацией связей между поддоменами – Open-source инструмент для red team: собирает поддомены из SSL-сертификатов, краулит эндпоинты, парсит JS/HTML/формы, строит граф взаимодействий в реальном времени. Web UI + CLI.
🔗 https://github.com/a11mut3d/CGE
🛠 Команда недели:
kubectl get events --sort-by='.lastTimestamp' -A | tail -20
Показывает последние 20 событий кластера в хронологическом порядке. Быстрый способ понять, что происходило, когда поды начали падать.
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
DEV Community
How to sandbox AI coding agents without crippling them
A practical guide to sandboxing AI agents with layered defenses: containers, seccomp, namespaces, and network controls — without breaking them.
🔥4❤1
RAG Pipeline 4/N: Гибридный поиск
Продолжаем серию про построение конвейера "общей памяти" между сессиями с LLM.
В предыдущих постах разобрали векторный поиск, эмбеддинги и нарезку на чанки. Сегодня – почему одних векторов мало.
Запрос "docker compose настройка". Векторный поиск возвращает чанки про оркестрацию, networking, даже Kubernetes. Семантические соседи. А конкретный
BM25 (поиск по ключевым словам) – обратная история. "docker compose" – вот три чанка, где это упоминается. Но "как поднять сервисы в фоне" он не свяжет с
Запускаю оба параллельно, результаты сливаю по рангам (Reciprocal Rank Fusion). Векторный ~50ms, BM25 ~5ms, слияние ~5ms. Итого ~80ms – копейки на фоне генерации ответа.
Два нюанса, которые стоили часов отладки.
– Первый: русская морфология. "Настройка", "настройки", "настроить" – без pymorphy BM25 на русском теряет треть релевантности.
– Второй: "docker", "kubectl", "git" встречаются в каждом втором чанке. Наивный BM25 посчитает их стоп-словами и выкинет. А для девопса это ключевые термины. Защищаю от фильтрации явным списком из 179 токенов.
Результат: точность top-5 выросла на треть по сравнению с чистым векторным. Особенно на запросах с конкретными командами.
Следующий – про переранжирование: 10 результатов есть, но порядок неправильный.
Полная версия с кодом и сравнением методов
👉 devopsway.ru/posts/rag-04-hybrid-search/
#кейс #ai
Продолжаем серию про построение конвейера "общей памяти" между сессиями с LLM.
В предыдущих постах разобрали векторный поиск, эмбеддинги и нарезку на чанки. Сегодня – почему одних векторов мало.
Запрос "docker compose настройка". Векторный поиск возвращает чанки про оркестрацию, networking, даже Kubernetes. Семантические соседи. А конкретный
docker compose up -d из моего конспекта – на пятой позиции. Для эмбеддинга "настройка" и "конфигурирование" – одно и то же, точное совпадение слова ему безразлично.BM25 (поиск по ключевым словам) – обратная история. "docker compose" – вот три чанка, где это упоминается. Но "как поднять сервисы в фоне" он не свяжет с
docker compose up -d никогда.Запускаю оба параллельно, результаты сливаю по рангам (Reciprocal Rank Fusion). Векторный ~50ms, BM25 ~5ms, слияние ~5ms. Итого ~80ms – копейки на фоне генерации ответа.
Два нюанса, которые стоили часов отладки.
– Первый: русская морфология. "Настройка", "настройки", "настроить" – без pymorphy BM25 на русском теряет треть релевантности.
– Второй: "docker", "kubectl", "git" встречаются в каждом втором чанке. Наивный BM25 посчитает их стоп-словами и выкинет. А для девопса это ключевые термины. Защищаю от фильтрации явным списком из 179 токенов.
Результат: точность top-5 выросла на треть по сравнению с чистым векторным. Особенно на запросах с конкретными командами.
Следующий – про переранжирование: 10 результатов есть, но порядок неправильный.
Полная версия с кодом и сравнением методов
👉 devopsway.ru/posts/rag-04-hybrid-search/
#кейс #ai
🔥3❤1
⚡️ DevOps Digest #17 | 01.06.2026
🔥 Главное за неделю:
1. Kubernetes: исправляют записи о незакрытых CVE — сканеры могут заалертить – 1 июня Kubernetes SRC обновит CVE-записи для трёх старых уязвимостей (CVE-2020-8561, CVE-2020-8562, CVE-2021-25740), которые ранее ошибочно указывали наличие фикса. Эти баги — архитектурные компромиссы, полного исправления нет. После обновления записей сканеры могут начать показывать новые алерты на ваших кластерах — не паникуйте, но проверьте, применимы ли mitigation из описания CVE.
🔗 https://kubernetes.io/blog/2026/05/26/reconciling-unfixed-kubernetes-cves/
2. GitLab 19.0: SBOM-сканирование зависимостей стало GA – Новый анализатор строит полный граф зависимостей (включая транзитивные), сверяет с базой уязвимостей и показывает проблемы прямо в merge request. Если используете GitLab — включите и замените старый Gemnasium-сканер: он видит глубже и находит больше.
🔗 https://about.gitlab.com/blog/sbom-based-dependency-scanning/
3. Чеклист на 54 пункта для деплоя в прод – Инженер из промышленной автоматизации собрал проверки по 4 фазам: pre-deploy, execution, post-deploy, 24h stability. Ничего революционного, но как готовый шаблон для команды без формализованного процесса — отличная отправная точка. Особенно полезно джунам, которые деплоят впервые.
🔗 https://dev.to/fabrciowplima/the-54-point-production-deployment-checklist-that-saves-you-from-3am-rollbacks-22i4
4. Java vs C# в Kubernetes: практический гайд по оптимизации Docker-образов – Подробное сравнение двух стеков в контейнерной среде: размеры образов, время старта, настройка JVM/AOT, GC, лимиты памяти, пробы. Полезно тем, кто контейнеризирует Java/C#-приложения и хочет понять, где теряются ресурсы.
🔗 https://dev.to/syedahmershah/java-vs-c-optimizing-docker-for-kubernetes-1kkc
5. LeafWiki — self-hosted вики в одном Go-бинарнике – SQLite, Markdown-файлы на диске, Ctrl+V для вставки скриншотов, SSO через HTTP-заголовки (Authentik, Authelia), роли. Ноль внешних зависимостей. Если ищете лёгкую вики для внутренней документации в закрытом контуре — стоит попробовать.
🔗 https://github.com/perber/leafwiki
🛠 Команда недели:
Покажет последние 20 событий о failed проверках (liveness/readiness) по всем namespace. Удобно для быстрой диагностики, когда поды рестартятся без видимой причины.
#дайджест #kubernetes #security
🔥 Главное за неделю:
1. Kubernetes: исправляют записи о незакрытых CVE — сканеры могут заалертить – 1 июня Kubernetes SRC обновит CVE-записи для трёх старых уязвимостей (CVE-2020-8561, CVE-2020-8562, CVE-2021-25740), которые ранее ошибочно указывали наличие фикса. Эти баги — архитектурные компромиссы, полного исправления нет. После обновления записей сканеры могут начать показывать новые алерты на ваших кластерах — не паникуйте, но проверьте, применимы ли mitigation из описания CVE.
🔗 https://kubernetes.io/blog/2026/05/26/reconciling-unfixed-kubernetes-cves/
2. GitLab 19.0: SBOM-сканирование зависимостей стало GA – Новый анализатор строит полный граф зависимостей (включая транзитивные), сверяет с базой уязвимостей и показывает проблемы прямо в merge request. Если используете GitLab — включите и замените старый Gemnasium-сканер: он видит глубже и находит больше.
🔗 https://about.gitlab.com/blog/sbom-based-dependency-scanning/
3. Чеклист на 54 пункта для деплоя в прод – Инженер из промышленной автоматизации собрал проверки по 4 фазам: pre-deploy, execution, post-deploy, 24h stability. Ничего революционного, но как готовый шаблон для команды без формализованного процесса — отличная отправная точка. Особенно полезно джунам, которые деплоят впервые.
🔗 https://dev.to/fabrciowplima/the-54-point-production-deployment-checklist-that-saves-you-from-3am-rollbacks-22i4
4. Java vs C# в Kubernetes: практический гайд по оптимизации Docker-образов – Подробное сравнение двух стеков в контейнерной среде: размеры образов, время старта, настройка JVM/AOT, GC, лимиты памяти, пробы. Полезно тем, кто контейнеризирует Java/C#-приложения и хочет понять, где теряются ресурсы.
🔗 https://dev.to/syedahmershah/java-vs-c-optimizing-docker-for-kubernetes-1kkc
5. LeafWiki — self-hosted вики в одном Go-бинарнике – SQLite, Markdown-файлы на диске, Ctrl+V для вставки скриншотов, SSO через HTTP-заголовки (Authentik, Authelia), роли. Ноль внешних зависимостей. Если ищете лёгкую вики для внутренней документации в закрытом контуре — стоит попробовать.
🔗 https://github.com/perber/leafwiki
🛠 Команда недели:
kubectl get events --field-selector reason=Unhealthy --sort-by='.lastTimestamp' -A | tail -20
Покажет последние 20 событий о failed проверках (liveness/readiness) по всем namespace. Удобно для быстрой диагностики, когда поды рестартятся без видимой причины.
#дайджест #kubernetes #security
Kubernetes
Reconciling the Past: Correcting Records for Unfixed Kubernetes CVEs
The Kubernetes project relies on transparency to empower cluster administrators and security researchers. One important way we do that is by publishing CVE records into the Common Vulnerabilities and Exposures database. As part of our ongoing effort to mature…
🔥3❤2
RAG Pipeline 5/N: Почему ваш гибридный поиск – это просто первичный отсев, а не точная сортировка
Гибридный поиск (пост 4/N) находит нужный кусок кода или доки в условный top-15, но порядок внутри этого топа напоминает лотерею. Алгоритм RRF пытается скрестить ужа с ежом: "Так, BM25 поставил этот чанк первым, векторный поиск – третьим, складываем обратные ранги".
Проблема в том, что ни один из этих алгоритмов не читал документ вместе с вашим запросом. Они просто сравнивают сухие индексы и вектора. А для LLM критически важен именно top-1. Что туда попало – из того она и соберет ответ. Если на первом месте оказался мусор, замаскированный под релевантный результат, на выходе получите классический garbage in, garbage out. Чтобы решить это, в стек пришлось тащить Cross-encoder.
Как это работает на пальцах
Cross-encoder не занимается сравнением готовых векторов. Он берет запрос, приклеивает к нему текст найденного чанка и читает их вместе, как человек. Модель буквально вчитывается в контекст пары "вопрос-ответ".
Минус очевиден – это дорого по ресурсам. Гонять такую модель по всему корпусу в 360K чанков – безумие. Поэтому мы используем каскадную схему, знакомую любому инженеру по классической архитектуре систем:
– Bi-encoder + BM25 – это наш L1/L2 кэш или Bloom-фильтр перед диском. Его задача – быстро отсечь 99% явного мусора и выплюнуть пачку кандидатов.
– Cross-encoder – это финальный тяжелый запрос к диску. Он ювелирно разбирает оставшийся 1% (наши 15 кандидатов) и расставляет их по реальной релевантности.
Что показали тесты на NORA
Загнал в систему пачку из 30 реальных тестовых запросов по репозиторию. Результат: у двух третей запросов после реранкинга top-1 полностью изменился. Гибридный поиск честно находил нужный кусок, но закапывал его на 5-7 место.
Живой пример:
Запрос: "XSS vulnerability in NORA UI".
– До реранкинга: На первом месте болтался какой-то случайный JSON, который dense search случайно ранжировал выше нужного чанка.
– После реранкинга: Система вытащила конкретный чанк с фиксом пайплайна под issue #521. Rerank score 0.99 – модель уверена.
Цена вопроса и суровая реальность
За точность приходится платить таймингами, и чудес тут нет.
– Время поиска без реранкера: 91ms
– Время поиска с реранкером: 3.3 секунды (на CPU)
Для CLI-утилиты или MCP-тула, который ты запустил в фоне и ждешь развернутый аудит, это приемлемо. Сидишь, пьешь кофе, автоматизация работает. Но если вы попытаетесь прикрутить такую схему на автокомплит в IDE – вы просто убьете UX, разработчики вас проклянут. Для фаст-трека нужен либо мощный GPU-инференс, либо более легкие дистиллированные модели.
В следующем посте разберем классические грабли: почему пайплайн, который выдавал 98% accuracy на моих локальных данных, мгновенно развалился, стоило закинуть в него чужой репозиторий.
Полная версия с кодом интеграции и замерами производительности каскада:
👉devopsway.ru/posts/rag-05-reranking/
#кейс #ai
Гибридный поиск (пост 4/N) находит нужный кусок кода или доки в условный top-15, но порядок внутри этого топа напоминает лотерею. Алгоритм RRF пытается скрестить ужа с ежом: "Так, BM25 поставил этот чанк первым, векторный поиск – третьим, складываем обратные ранги".
Проблема в том, что ни один из этих алгоритмов не читал документ вместе с вашим запросом. Они просто сравнивают сухие индексы и вектора. А для LLM критически важен именно top-1. Что туда попало – из того она и соберет ответ. Если на первом месте оказался мусор, замаскированный под релевантный результат, на выходе получите классический garbage in, garbage out. Чтобы решить это, в стек пришлось тащить Cross-encoder.
Как это работает на пальцах
Cross-encoder не занимается сравнением готовых векторов. Он берет запрос, приклеивает к нему текст найденного чанка и читает их вместе, как человек. Модель буквально вчитывается в контекст пары "вопрос-ответ".
Минус очевиден – это дорого по ресурсам. Гонять такую модель по всему корпусу в 360K чанков – безумие. Поэтому мы используем каскадную схему, знакомую любому инженеру по классической архитектуре систем:
– Bi-encoder + BM25 – это наш L1/L2 кэш или Bloom-фильтр перед диском. Его задача – быстро отсечь 99% явного мусора и выплюнуть пачку кандидатов.
– Cross-encoder – это финальный тяжелый запрос к диску. Он ювелирно разбирает оставшийся 1% (наши 15 кандидатов) и расставляет их по реальной релевантности.
Что показали тесты на NORA
Загнал в систему пачку из 30 реальных тестовых запросов по репозиторию. Результат: у двух третей запросов после реранкинга top-1 полностью изменился. Гибридный поиск честно находил нужный кусок, но закапывал его на 5-7 место.
Живой пример:
Запрос: "XSS vulnerability in NORA UI".
– До реранкинга: На первом месте болтался какой-то случайный JSON, который dense search случайно ранжировал выше нужного чанка.
– После реранкинга: Система вытащила конкретный чанк с фиксом пайплайна под issue #521. Rerank score 0.99 – модель уверена.
Цена вопроса и суровая реальность
За точность приходится платить таймингами, и чудес тут нет.
– Время поиска без реранкера: 91ms
– Время поиска с реранкером: 3.3 секунды (на CPU)
Для CLI-утилиты или MCP-тула, который ты запустил в фоне и ждешь развернутый аудит, это приемлемо. Сидишь, пьешь кофе, автоматизация работает. Но если вы попытаетесь прикрутить такую схему на автокомплит в IDE – вы просто убьете UX, разработчики вас проклянут. Для фаст-трека нужен либо мощный GPU-инференс, либо более легкие дистиллированные модели.
В следующем посте разберем классические грабли: почему пайплайн, который выдавал 98% accuracy на моих локальных данных, мгновенно развалился, стоило закинуть в него чужой репозиторий.
Полная версия с кодом интеграции и замерами производительности каскада:
👉devopsway.ru/posts/rag-05-reranking/
#кейс #ai
🔥3❤2
⚡️ DevOps Digest #18 | 08.06.2026
🔥 Главное за неделю:
1. Риск-ориентированное ревью IaC-пулл-реквестов – Не каждый PR в Terraform/Ansible заслуживает одинакового внимания. Подход с оценкой риска (blast radius, окружение, тип ресурса, откатываемость) помогает направить внимание ревьюеров туда, где оно действительно нужно. Полезная модель для любой команды, которая тонет в PR на инфраструктуру.
🔗 https://devops.com/risk-based-review-for-infrastructure-as-code-pull-requests/
2. Аудит песочницы AI-чатбота как чёрного ящика Linux – Инженер за 6 часов исследовал рантайм Kimi 2.6 стандартными Linux-инструментами: нашёл захардкоженный SSH-пароль в
🔗 https://dev.to/alex72py/i-audited-an-ai-chatbots-sandbox-like-a-black-box-linux-machine-bhe
3. acme.sh снова в трендах GitHub – Чистый shell-скрипт для автоматизации TLS-сертификатов через ACME-протокол. Работает без зависимостей, поддерживает десятки DNS-провайдеров и wildcard-сертификаты. Если вы ещё управляете сертификатами вручную или привязаны к certbot – стоит посмотреть.
🔗 https://github.com/acmesh-official/acme.sh
4. Метастабильные отказы: почему устранение триггера не помогает – SRE Weekly выделяет статью о метастабильных сбоях: система восстанавливается после триггера, но остаётся в нестабильном состоянии и падает снова. Классика для on-premise инфраструктуры с ограниченным запасом ресурсов. Рекомендую прочитать и оригинальную статью.
🔗 https://sreweekly.com/sre-weekly-issue-520/
5. AI ускоряет DevOps, но интеграции тормозят – AI-инструменты сделали отдельные шаги умнее (сканирование, код-ревью, триаж инцидентов), но передача данных между Jira, ServiceNow, мониторингом и CI/CD осталась ручной. Bottleneck сместился от написания кода к стыкам между инструментами. Актуально для команд, которые внедряют AI-помощников и удивляются, что пайплайн не ускорился.
🔗 https://devops.com/ai-is-accelerating-devops-poor-integrations-are-slowing-it-down/
🛠 Команда недели:
Проверяет переменные окружения текущего процесса на утечки секретов. Полезно при аудите контейнеров и CI-раннеров – если видите тут пароли в открытом виде, пора переходить на Vault или sealed secrets.
#дайджест #devops #security
🔥 Главное за неделю:
1. Риск-ориентированное ревью IaC-пулл-реквестов – Не каждый PR в Terraform/Ansible заслуживает одинакового внимания. Подход с оценкой риска (blast radius, окружение, тип ресурса, откатываемость) помогает направить внимание ревьюеров туда, где оно действительно нужно. Полезная модель для любой команды, которая тонет в PR на инфраструктуру.
🔗 https://devops.com/risk-based-review-for-infrastructure-as-code-pull-requests/
2. Аудит песочницы AI-чатбота как чёрного ящика Linux – Инженер за 6 часов исследовал рантайм Kimi 2.6 стандартными Linux-инструментами: нашёл захардкоженный SSH-пароль в
/proc/self/environ, измерил лимиты cgroup, определил инфраструктуру (K8s Pod, Burstable QoS). Отличный пример того, как базовые навыки Linux и контейнерной безопасности работают на практике.🔗 https://dev.to/alex72py/i-audited-an-ai-chatbots-sandbox-like-a-black-box-linux-machine-bhe
3. acme.sh снова в трендах GitHub – Чистый shell-скрипт для автоматизации TLS-сертификатов через ACME-протокол. Работает без зависимостей, поддерживает десятки DNS-провайдеров и wildcard-сертификаты. Если вы ещё управляете сертификатами вручную или привязаны к certbot – стоит посмотреть.
🔗 https://github.com/acmesh-official/acme.sh
4. Метастабильные отказы: почему устранение триггера не помогает – SRE Weekly выделяет статью о метастабильных сбоях: система восстанавливается после триггера, но остаётся в нестабильном состоянии и падает снова. Классика для on-premise инфраструктуры с ограниченным запасом ресурсов. Рекомендую прочитать и оригинальную статью.
🔗 https://sreweekly.com/sre-weekly-issue-520/
5. AI ускоряет DevOps, но интеграции тормозят – AI-инструменты сделали отдельные шаги умнее (сканирование, код-ревью, триаж инцидентов), но передача данных между Jira, ServiceNow, мониторингом и CI/CD осталась ручной. Bottleneck сместился от написания кода к стыкам между инструментами. Актуально для команд, которые внедряют AI-помощников и удивляются, что пайплайн не ускорился.
🔗 https://devops.com/ai-is-accelerating-devops-poor-integrations-are-slowing-it-down/
🛠 Команда недели:
cat /proc/self/environ | tr '\0' '\n' | grep -iE 'pass|key|token|secret'
Проверяет переменные окружения текущего процесса на утечки секретов. Полезно при аудите контейнеров и CI-раннеров – если видите тут пароли в открытом виде, пора переходить на Vault или sealed secrets.
#дайджест #devops #security
DevOps.com
Risk-Based Review for Infrastructure as Code Pull Requests
Learn how risk-based IaC reviews reduce reviewer fatigue and improve deployment safety through transparent risk scoring.
🔥4❤2
RAG Pipeline 6/N: Бенчмарк – 98% на своих данных, 52.7% на чужих
Продолжаю серию про конвейер "общей памяти" между сессиями с LLM. В предыдущих постах разобрали векторный поиск, эмбеддинги, нарезку на чанки, гибридный поиск и переранжирование. Конвейер собран и работает. Сегодня вопрос, который я долго откладывал: насколько он вообще хорош? Пока нет цифры, "хорошо" остаётся ощущением, а не фактом.
Взял 50 своих вопросов по реальным рабочим заметкам и прогнал систему. С первого захода – 20% (поймал пару тихих ошибок: поиск молча возвращал пустоту). После четырёх правок – 98%.
Но 98% на своих вопросах – это экзамен, который сам себе составил и сам же сдал. Поэтому прогнал ту же систему через чужой бенчмарк – LoCoMo (1986 вопросов, придумал не я). Результат: 52.7%. Выше, чем у "голого" GPT-4 на том же тесте (32%), но далеко от лучших (Mem0 – 92.5%).
Дальше попытка улучшить. И вот что показали замеры:
– находить нужный фрагмент система стала заметно лучше: с 67 до 83 из 100;
– а отвечать правильно – почти не сдвинулась: с 53 до 55 из 100.
В этом разрыве вся суть. Найти нужную страницу и дать по ней правильный ответ – две разные задачи. Можно положить перед моделью идеально подходящий текст, а она всё равно ответит мимо. Поиск я подтянул сильно, но узкое место просто переехало в генерацию ответа.
Три вывода:
1. Свой бенчмарк всегда льстит. Нужна честная оценка – бери вопросы, которые придумал не ты.
2. Хороший поиск ≠ хороший ответ. Между "нашёл" и "понял" – разрыв на этапе генерации.
3. 98% и 52% – не противоречие. Первое меряет твой прогресс, второе – реальное место среди других. Нужны обе цифры.
Полная версия с методикой, кодом и разбором всех просадок:
👉 devopsway.ru/posts/rag-06-benchmark/
#кейс #ai
Продолжаю серию про конвейер "общей памяти" между сессиями с LLM. В предыдущих постах разобрали векторный поиск, эмбеддинги, нарезку на чанки, гибридный поиск и переранжирование. Конвейер собран и работает. Сегодня вопрос, который я долго откладывал: насколько он вообще хорош? Пока нет цифры, "хорошо" остаётся ощущением, а не фактом.
Взял 50 своих вопросов по реальным рабочим заметкам и прогнал систему. С первого захода – 20% (поймал пару тихих ошибок: поиск молча возвращал пустоту). После четырёх правок – 98%.
Но 98% на своих вопросах – это экзамен, который сам себе составил и сам же сдал. Поэтому прогнал ту же систему через чужой бенчмарк – LoCoMo (1986 вопросов, придумал не я). Результат: 52.7%. Выше, чем у "голого" GPT-4 на том же тесте (32%), но далеко от лучших (Mem0 – 92.5%).
Дальше попытка улучшить. И вот что показали замеры:
– находить нужный фрагмент система стала заметно лучше: с 67 до 83 из 100;
– а отвечать правильно – почти не сдвинулась: с 53 до 55 из 100.
В этом разрыве вся суть. Найти нужную страницу и дать по ней правильный ответ – две разные задачи. Можно положить перед моделью идеально подходящий текст, а она всё равно ответит мимо. Поиск я подтянул сильно, но узкое место просто переехало в генерацию ответа.
Три вывода:
1. Свой бенчмарк всегда льстит. Нужна честная оценка – бери вопросы, которые придумал не ты.
2. Хороший поиск ≠ хороший ответ. Между "нашёл" и "понял" – разрыв на этапе генерации.
3. 98% и 52% – не противоречие. Первое меряет твой прогресс, второе – реальное место среди других. Нужны обе цифры.
Полная версия с методикой, кодом и разбором всех просадок:
👉 devopsway.ru/posts/rag-06-benchmark/
#кейс #ai
🔥4❤2
⚡️ DevOps Digest #19 | 15.06.2026
🔥 Главное за неделю:
1. Атака на цепочку поставок: клон Shai-Hulud пришёл в PyPI – Пять вредоносных пакетов: тайпсквоттинг Flask, Requests, NumPy плюс перехваченный легитимный mflux-streamlit. Код срабатывает прямо на установке (без import), это самораспространяющийся вор учёток, нацеленный на CI/CD-окружения. Вывод: пиньте версии, проверяйте зависимости перед сборкой, не ставьте свежие релизы вслепую.
🔗 https://about.gitlab.com/blog/shai-hulud-copycat-campaign-targets-python-developers/
2. GitHub Actions: долой PAT для агентных воркфлоу – Теперь можно использовать встроенный GITHUB_TOKEN вместо персонального токена: он короткоживущий, привязан к конкретному запуску и ограничен правами из workflow-файла. Откажитесь от долгоживущих широких PAT в пользу scoped-токенов везде, где это возможно.
🔗 https://devops.com/github-removes-pat-requirement-for-agentic-workflows/
3. AmneziaWG 2.0: маскировка переезжает в сам поток данных – Если раньше имитация была короткой «дымовой завесой» перед хендшейком, то теперь транспортные пакеты на проводе выглядят как трафик другого протокола. Практично для закрытых контуров, где обычный WireGuard режется по DPI.
🔗 https://habr.com/ru/articles/1047080/
4. Ansible Automation Platform 2.7 – Новый релиз развивает self-service-портал автоматизации: операционные команды могут отдавать готовые сценарии тем, кто не является экспертом в Ansible. Если живёте на AAP – посмотрите changelog перед обновлением.
🔗 https://www.redhat.com/en/blog/whats-new-ansible-automation-platform-2-7
5. K8s Necromancer: чёрный ящик для умерших подов – Контроллер перехватывает смерть пода до сборки мусора и замораживает форензику: логи, таймлайн событий, ENV, снапшот spec, графики CPU/память из Prometheus. Лекарство от вечного «CrashLoopBackOff без контекста, логи уже ротировались».
🔗 https://dev.to/solojoe/k8s-necromancer-a-black-box-flight-recorder-for-dead-kubernetes-pods-4pa8
🛠 Команда недели:
Показывает последние 20 событий кластера в хронологическом порядке – быстрый разбор, когда «только что что-то сломалось», а куда смотреть, ещё непонятно.
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Атака на цепочку поставок: клон Shai-Hulud пришёл в PyPI – Пять вредоносных пакетов: тайпсквоттинг Flask, Requests, NumPy плюс перехваченный легитимный mflux-streamlit. Код срабатывает прямо на установке (без import), это самораспространяющийся вор учёток, нацеленный на CI/CD-окружения. Вывод: пиньте версии, проверяйте зависимости перед сборкой, не ставьте свежие релизы вслепую.
🔗 https://about.gitlab.com/blog/shai-hulud-copycat-campaign-targets-python-developers/
2. GitHub Actions: долой PAT для агентных воркфлоу – Теперь можно использовать встроенный GITHUB_TOKEN вместо персонального токена: он короткоживущий, привязан к конкретному запуску и ограничен правами из workflow-файла. Откажитесь от долгоживущих широких PAT в пользу scoped-токенов везде, где это возможно.
🔗 https://devops.com/github-removes-pat-requirement-for-agentic-workflows/
3. AmneziaWG 2.0: маскировка переезжает в сам поток данных – Если раньше имитация была короткой «дымовой завесой» перед хендшейком, то теперь транспортные пакеты на проводе выглядят как трафик другого протокола. Практично для закрытых контуров, где обычный WireGuard режется по DPI.
🔗 https://habr.com/ru/articles/1047080/
4. Ansible Automation Platform 2.7 – Новый релиз развивает self-service-портал автоматизации: операционные команды могут отдавать готовые сценарии тем, кто не является экспертом в Ansible. Если живёте на AAP – посмотрите changelog перед обновлением.
🔗 https://www.redhat.com/en/blog/whats-new-ansible-automation-platform-2-7
5. K8s Necromancer: чёрный ящик для умерших подов – Контроллер перехватывает смерть пода до сборки мусора и замораживает форензику: логи, таймлайн событий, ENV, снапшот spec, графики CPU/память из Prometheus. Лекарство от вечного «CrashLoopBackOff без контекста, логи уже ротировались».
🔗 https://dev.to/solojoe/k8s-necromancer-a-black-box-flight-recorder-for-dead-kubernetes-pods-4pa8
🛠 Команда недели:
kubectl get events -A --sort-by='.lastTimestamp' | tail -20
Показывает последние 20 событий кластера в хронологическом порядке – быстрый разбор, когда «только что что-то сломалось», а куда смотреть, ещё непонятно.
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
GitLab
Shai-Hulud copycat campaign targets Python developers through PyPI typosquatting
GitLab’s Vulnerability Research team has uncovered a new Python supply chain attack targeting PyPI, deploying the Shai-Hulud worm to steal credentials from CI/CD systems.
🔥2❤1
Ошибка, которой нет в логах: как не изобрести велосипед с LLM-мотором на дежурстве
История о том, как одна пропущенная строчка в логе съедает два часа инженерного времени
Пользователь загружает фото с Айфона в наш AI-сервис, получает ошибку, а у разработчиков на тестовых стендах всё работает. В логах стандартный
Пришлось идти в мессенджеры, выпрашивать у клиента исходный файл и ковырять его руками. Выяснилось, что картинка весит 5 МБ (в лимит по байтам укладывались), но её разрешение – 12.2 Мп. Внешний API резал файлы именно по габаритам, выставляя жесткий лимит в 12 Мп. Автоматика могла бы выплюнуть эту причину одной строкой, но вместо неё контекст собирали люди.
В статье разбираем, как правильно выстроить регистрацию ошибок и почему сейчас не стоит слепо следовать тренду на автоматизацию мониторинга с помощью LLM:
– Контекст вместо сырых трейсов: как оформлять логи и настраивать сбор метаданных в Sentry или его легковесном open-source аналоге GlitchTip.
– Почему LLM не место в критическом пути алертинга: разбираем проблемы с недетерминизмом, задержками ответов и поведением моделей во время OOM-штормов, когда логи сыплются тысячами строк в секунду.
– Архитектура здорового человека: как спроектировать трехуровневую систему, где за мгновенные оповещения отвечает жесткое ядро на регулярных выражениях, а нейросеть работает офлайн и пакетно — просто предлагая новые правила для этого ядра.
Фикс кейса: как мы закрыли проблему с Айфонами с помощью Pillow и как доставляем такие инциденты до дежурных через alert-платформу Pusk.
👉 Читать статью полностью
#кейс #devops
История о том, как одна пропущенная строчка в логе съедает два часа инженерного времени
Пользователь загружает фото с Айфона в наш AI-сервис, получает ошибку, а у разработчиков на тестовых стендах всё работает. В логах стандартный
raise_for_status() на 400 Bad Request. Видно, что упало, но само тело ответа от внешнего провайдера никто не сохранил.Пришлось идти в мессенджеры, выпрашивать у клиента исходный файл и ковырять его руками. Выяснилось, что картинка весит 5 МБ (в лимит по байтам укладывались), но её разрешение – 12.2 Мп. Внешний API резал файлы именно по габаритам, выставляя жесткий лимит в 12 Мп. Автоматика могла бы выплюнуть эту причину одной строкой, но вместо неё контекст собирали люди.
В статье разбираем, как правильно выстроить регистрацию ошибок и почему сейчас не стоит слепо следовать тренду на автоматизацию мониторинга с помощью LLM:
– Контекст вместо сырых трейсов: как оформлять логи и настраивать сбор метаданных в Sentry или его легковесном open-source аналоге GlitchTip.
– Почему LLM не место в критическом пути алертинга: разбираем проблемы с недетерминизмом, задержками ответов и поведением моделей во время OOM-штормов, когда логи сыплются тысячами строк в секунду.
– Архитектура здорового человека: как спроектировать трехуровневую систему, где за мгновенные оповещения отвечает жесткое ядро на регулярных выражениях, а нейросеть работает офлайн и пакетно — просто предлагая новые правила для этого ядра.
Фикс кейса: как мы закрыли проблему с Айфонами с помощью Pillow и как доставляем такие инциденты до дежурных через alert-платформу Pusk.
👉 Читать статью полностью
#кейс #devops
🔥3👍2
⚡️ DevOps Digest #20 | 22.06.2026
🔥 Главное за неделю:
1. Прогнал gitleaks по своему репозиторию – нашёл 12 живых секретов – Инженер был уверен, что его homelab-репозиторий чист: CI зелёный, секреты вроде бы в Vault. Полный скан истории нашёл 12 секретов в открытом виде, включая приватный OIDC-ключ, которым подписываются SSO-токены для ArgoCD, Vault и Grafana. Прогони полную историю у себя – почти наверняка что-то всплывёт.
🔗 https://dev.to/dwoitzik/i-ran-gitleaks-against-my-own-repo-and-found-12-real-secrets-1j18
2. IncidentRelay дорос до полноценного on-call – Open-source и self-hosted система дежурств: маршрутизация алертов, эскалации, ACK/Resolve. За месяц добралась до v1.0.21-beta и закрыла всю цепочку дежурства. Живая альтернатива PagerDuty и OpsGenie для закрытого контура.
🔗 https://habr.com/ru/articles/1050286/
3. Terraform Ansible collection 2.0 – HashiCorp выкатила версию 2.0 на pyTFE: динамический инвентарь и доработанные Terraform actions. Связка provisioning (Terraform) и управления конфигурацией (Ansible) стала плотнее и двунаправленной. Если оба инструмента в твоей обвязке – посмотри, что поменялось.
🔗 https://www.hashicorp.com/blog/whats-new-with-terraform-ansible
4. Вышел Valkey 9.1 – Open-source форк Redis под крылом Linux Foundation: кеш, очереди, key-value-структуры. Заметную часть багфиксов в релизе бэкпортировал AI-агент – сам разруливал конфликты и гонял CI. Главное – это бесплатная замена Redis после смены его лицензии.
🔗 https://thenewstack.io/valkey-ai-backporting-agents/
5. Arcane – простой веб-UI для Docker – Self-hosted панель управления контейнерами на Go, на этой неделе набрала больше сотни звёзд. Лёгкая альтернатива Portainer, когда нужен понятный интерфейс для контейнеров на одном-двух хостах.
🔗 https://github.com/getarcaneapp/arcane
6. "Скорость – это не поток" – Деплои чаще, дашборды зелёные, а ценность всё равно стоит в очереди. Разбор, почему автоматизация без системного выравнивания просто разгоняет хаос, и как Value Stream Mapping показывает, где реально застревает работа. Полезно тем, кто внедряет DevOps-практики.
🔗 https://devops.com/you-cannot-fake-flow-what-organizations-get-wrong-about-value-delivery/
🛠 Команда недели:
Использование inode по файловым системам. Если IUse% подходит к 100, а по df -h места ещё полно – диск забит не объёмом, а числом файлов: классика на legacy-серверах, где мелкие логи или сессии выели все inode, и запись падает с No space left on device, хотя "место вроде есть".
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Прогнал gitleaks по своему репозиторию – нашёл 12 живых секретов – Инженер был уверен, что его homelab-репозиторий чист: CI зелёный, секреты вроде бы в Vault. Полный скан истории нашёл 12 секретов в открытом виде, включая приватный OIDC-ключ, которым подписываются SSO-токены для ArgoCD, Vault и Grafana. Прогони полную историю у себя – почти наверняка что-то всплывёт.
🔗 https://dev.to/dwoitzik/i-ran-gitleaks-against-my-own-repo-and-found-12-real-secrets-1j18
2. IncidentRelay дорос до полноценного on-call – Open-source и self-hosted система дежурств: маршрутизация алертов, эскалации, ACK/Resolve. За месяц добралась до v1.0.21-beta и закрыла всю цепочку дежурства. Живая альтернатива PagerDuty и OpsGenie для закрытого контура.
🔗 https://habr.com/ru/articles/1050286/
3. Terraform Ansible collection 2.0 – HashiCorp выкатила версию 2.0 на pyTFE: динамический инвентарь и доработанные Terraform actions. Связка provisioning (Terraform) и управления конфигурацией (Ansible) стала плотнее и двунаправленной. Если оба инструмента в твоей обвязке – посмотри, что поменялось.
🔗 https://www.hashicorp.com/blog/whats-new-with-terraform-ansible
4. Вышел Valkey 9.1 – Open-source форк Redis под крылом Linux Foundation: кеш, очереди, key-value-структуры. Заметную часть багфиксов в релизе бэкпортировал AI-агент – сам разруливал конфликты и гонял CI. Главное – это бесплатная замена Redis после смены его лицензии.
🔗 https://thenewstack.io/valkey-ai-backporting-agents/
5. Arcane – простой веб-UI для Docker – Self-hosted панель управления контейнерами на Go, на этой неделе набрала больше сотни звёзд. Лёгкая альтернатива Portainer, когда нужен понятный интерфейс для контейнеров на одном-двух хостах.
🔗 https://github.com/getarcaneapp/arcane
6. "Скорость – это не поток" – Деплои чаще, дашборды зелёные, а ценность всё равно стоит в очереди. Разбор, почему автоматизация без системного выравнивания просто разгоняет хаос, и как Value Stream Mapping показывает, где реально застревает работа. Полезно тем, кто внедряет DevOps-практики.
🔗 https://devops.com/you-cannot-fake-flow-what-organizations-get-wrong-about-value-delivery/
🛠 Команда недели:
df -ih
Использование inode по файловым системам. Если IUse% подходит к 100, а по df -h места ещё полно – диск забит не объёмом, а числом файлов: классика на legacy-серверах, где мелкие логи или сессии выели все inode, и запись падает с No space left on device, хотя "место вроде есть".
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
DEV Community
I Ran Gitleaks Against My Own Repo and Found 12 Real Secrets
A full-history gitleaks scan of a homelab repo that had been running for months turned up 12 distinct plaintext secrets — including an OIDC signing key. Here's the scanning setup, the baseline strategy that doesn't block on pre-existing leaks, and the remediation…
👍4🔥1
Разбираемся с сетями (без занудства и OSI ради OSI)
Давай честно: сколько раз за последний год ты нейрогуглил что-то по сетям или лез в калькулятор подсетей, чтобы проверить маску /24 и /25, или пытался понять, а те, кто выпускают для корпсети имена доменов в своём уме или это у тебя уже кукуха отлетела? А когда на собесе спрашивают "что происходит, если ввести URL в браузер", внутри обычно что-то типа: "Ну там DNS бороздит просторы Большого театра и пакеты летают".
И это нормально. Обычно сети либо учат по академическим кирпичам типа Олифера (где засыпаешь на главе про физический уровень), либо собирают по кусочкам на практике: тут скопировал конфиг ингресса, там пробросил порт в докере – вроде завелось, и ладно.
Проблемы начинаются как обычно внезапно, когда сыплет 502 ошибка, pod не видит базу, а сертификат внезапно протух. И ты сидишь перед монитором, пытаясь угадать, на каком вообще этапе всё сломалось. (Хотя мы-то знаем, что виноват всегда DNS. Даже когда он не виноват).
Решил собрать в кучу и разложить по полочкам ту базу по сетям, которая реально нужна каждый день в DevOps. Назовём это Networking 20/80.
План такой: пройдёмся по ключевым темам короткими и понятными постами. Никакой зубрёжки ради собесов, только практика:
1. Как на самом деле устроена модель сети (и почему OSI полезна только для диагностики).
2. IP-адреса, подсети и маршрутизация на пальцах.
3. DNS – как он устроен внутри и почему ломается.
4. TCP и UDP: флаги, хендшейки и почему рвутся соединения.
5. HTTP, HTTPS и TLS (что под капотом у сертификатов).
6. Файрволы и базовый забор из правил.
7. Балансировка трафика и то, как всё это крутится внутри Kubernetes.
В каждом посте – минимум теории, происхождение протоколов (чтобы понять логику создателей) и живые команды, которые пригодятся в консоли (ip, ping, traceroute, ss). Задача – научиться понимать, на каком уровне искать, когда всё упало.
Первый пост уже готов, погнали разбираться 👇
https://devopsway.ru/posts/networking-00-model/
#networking #linux #devops
Давай честно: сколько раз за последний год ты нейрогуглил что-то по сетям или лез в калькулятор подсетей, чтобы проверить маску /24 и /25, или пытался понять, а те, кто выпускают для корпсети имена доменов в своём уме или это у тебя уже кукуха отлетела? А когда на собесе спрашивают "что происходит, если ввести URL в браузер", внутри обычно что-то типа: "Ну там DNS бороздит просторы Большого театра и пакеты летают".
И это нормально. Обычно сети либо учат по академическим кирпичам типа Олифера (где засыпаешь на главе про физический уровень), либо собирают по кусочкам на практике: тут скопировал конфиг ингресса, там пробросил порт в докере – вроде завелось, и ладно.
Проблемы начинаются как обычно внезапно, когда сыплет 502 ошибка, pod не видит базу, а сертификат внезапно протух. И ты сидишь перед монитором, пытаясь угадать, на каком вообще этапе всё сломалось. (Хотя мы-то знаем, что виноват всегда DNS. Даже когда он не виноват).
Решил собрать в кучу и разложить по полочкам ту базу по сетям, которая реально нужна каждый день в DevOps. Назовём это Networking 20/80.
План такой: пройдёмся по ключевым темам короткими и понятными постами. Никакой зубрёжки ради собесов, только практика:
1. Как на самом деле устроена модель сети (и почему OSI полезна только для диагностики).
2. IP-адреса, подсети и маршрутизация на пальцах.
3. DNS – как он устроен внутри и почему ломается.
4. TCP и UDP: флаги, хендшейки и почему рвутся соединения.
5. HTTP, HTTPS и TLS (что под капотом у сертификатов).
6. Файрволы и базовый забор из правил.
7. Балансировка трафика и то, как всё это крутится внутри Kubernetes.
В каждом посте – минимум теории, происхождение протоколов (чтобы понять логику создателей) и живые команды, которые пригодятся в консоли (ip, ping, traceroute, ss). Задача – научиться понимать, на каком уровне искать, когда всё упало.
Первый пост уже готов, погнали разбираться 👇
https://devopsway.ru/posts/networking-00-model/
#networking #linux #devops
🔥7👍1
⚡️ DevOps Digest #21 | 29.06.2026
🔥 Главное за неделю:
1. Podman 6.0 — много breaking changes – Вышел мажор: несколько статических IP на контейнер, улучшенная изоляция сети ради совместимости с Docker, переписанные Quadlet и обработка конфигов. Перед апгрейдом обязательно прочитай release notes – ломающих изменений хватает.
🔗 https://lwn.net/Articles/1079600/
2. Плагин Cluster API для Headlamp – У open-source UI для Kubernetes появился визуальный модуль для Cluster API: обзор кластеров, MachineDeployments и Machines, масштабирование прямо из интерфейса вместо сырых kubectl-команд. Удобно тем, кто рулит жизненным циклом кластеров.
🔗 https://kubernetes.io/blog/2026/06/25/headlamp-cluster-api-plugin/
3. DataSafeS3 v1.0.1 / v1.0.2 – Молодой российский open-source: своё S3-хранилище с веб-консолью, ролями и журналом действий на своём железе (нужны только Docker и Linux). Команда честно разбирает, что сломалось после первого релиза и как чинили – полезно тем, кто уже катит его в тестовом контуре.
🔗 https://habr.com/ru/articles/1053082/
4. Progressive delivery: управляем blast radius – Разбор, как уйти от "выкатил и молись" к контролируемым релизам: разделяем deployment (выкладка кода) и release (показ фичи юзерам), катим на 1–5% трафика через canary и feature flags, держим наготове kill switch. Наблюдаем, решаем, расширяем.
🔗 https://devops.com/mastering-the-blast-radius-deployment-without-fear-progressive-delivery-in-modern-devops/
5. Когда брешь вендора становится твоей – Забытый доступ у вендора Klue открыл атакующим данные Salesforce его клиентов. Хороший разбор цепочечных SaaS-взломов и чек-лист: какие ключи и интеграции пора проаудитить, чтобы чужой инцидент не стал твоим.
🔗 https://snyk.io/blog/when-a-vendors-breach-becomes-yours-lessons-from-the-klue-incident/
6. Vessel – обновление панели для VPS – Локальная (local-first) панель управления сервером на Rust/Tauri: автодетект и установка Docker, запуск контейнеров из UI, хвост логов нескольких контейнеров в одном окне через один SSH-канал. Лицензия MIT.
🔗 https://github.com/shihebamrii/vessel
🛠 Команда недели:
Список всех SUID-бинарников: каждый запускается с правами root, поэтому забытый или подозрительный файл здесь – прямой путь к эскалации привилегий. -xdev держит поиск в пределах одной ФС (не лезет в /proc, /sys, сетевые маунты) – быстро и без шума.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Podman 6.0 — много breaking changes – Вышел мажор: несколько статических IP на контейнер, улучшенная изоляция сети ради совместимости с Docker, переписанные Quadlet и обработка конфигов. Перед апгрейдом обязательно прочитай release notes – ломающих изменений хватает.
🔗 https://lwn.net/Articles/1079600/
2. Плагин Cluster API для Headlamp – У open-source UI для Kubernetes появился визуальный модуль для Cluster API: обзор кластеров, MachineDeployments и Machines, масштабирование прямо из интерфейса вместо сырых kubectl-команд. Удобно тем, кто рулит жизненным циклом кластеров.
🔗 https://kubernetes.io/blog/2026/06/25/headlamp-cluster-api-plugin/
3. DataSafeS3 v1.0.1 / v1.0.2 – Молодой российский open-source: своё S3-хранилище с веб-консолью, ролями и журналом действий на своём железе (нужны только Docker и Linux). Команда честно разбирает, что сломалось после первого релиза и как чинили – полезно тем, кто уже катит его в тестовом контуре.
🔗 https://habr.com/ru/articles/1053082/
4. Progressive delivery: управляем blast radius – Разбор, как уйти от "выкатил и молись" к контролируемым релизам: разделяем deployment (выкладка кода) и release (показ фичи юзерам), катим на 1–5% трафика через canary и feature flags, держим наготове kill switch. Наблюдаем, решаем, расширяем.
🔗 https://devops.com/mastering-the-blast-radius-deployment-without-fear-progressive-delivery-in-modern-devops/
5. Когда брешь вендора становится твоей – Забытый доступ у вендора Klue открыл атакующим данные Salesforce его клиентов. Хороший разбор цепочечных SaaS-взломов и чек-лист: какие ключи и интеграции пора проаудитить, чтобы чужой инцидент не стал твоим.
🔗 https://snyk.io/blog/when-a-vendors-breach-becomes-yours-lessons-from-the-klue-incident/
6. Vessel – обновление панели для VPS – Локальная (local-first) панель управления сервером на Rust/Tauri: автодетект и установка Docker, запуск контейнеров из UI, хвост логов нескольких контейнеров в одном окне через один SSH-канал. Лицензия MIT.
🔗 https://github.com/shihebamrii/vessel
🛠 Команда недели:
find / -xdev -perm -4000 -type f 2>/dev/null
Список всех SUID-бинарников: каждый запускается с правами root, поэтому забытый или подозрительный файл здесь – прямой путь к эскалации привилегий. -xdev держит поиск в пределах одной ФС (не лезет в /proc, /sys, сетевые маунты) – быстро и без шума.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
LWN.net
Podman 6.0 released
Version 6.0.0 of the Podman container-management tool has been released. Notable new features i [...]
🔥3
IP-адреса и подсети: та самая математика, из-за которой ты лезешь в калькулятор
📺 В предыдущих сериях: это второй пост мини-курса "Networking 20/80" – 20% сетевых знаний, которые закрывают 80% работы DevOps. В нулевом разбирались с картой слоёв: на каком этаже искать супостата, когда всё упало. Сегодня спускаемся на этаж адресов.
На собесе меня как-то спросили: "для чего нужна маска подсети?". Мозг, натренированный на корпоративный тикет – где заполняешь поля по готовой архитектурной схеме, как предки завещали, – честно выдал то, чем реально пользуешься, когда нарезаешь подсети под контуры: "чтобы посчитать, сколько влезет хостов". Формально не враньё. Но это ответ про побочный эффект, а не про смысл – и если интервьюер в теме, он тут же начнёт раскручивать тебя в нужном направлении, или нет 😅
А смысл в том, что маска проводит границу: где заканчивается "своя" сеть и начинается "чужая". Из этой границы растёт всё остальное – пойдёт пакет напрямую через свитч или полезет через роутер, можно ли отрезать одно окружение от другого. Сколько хостов влезет – это просто сдача от битов, которые остались под хост.
Плохая новость: в адресации действительно есть арифметика.
Хорошая: вся она – степени двойки, и её реально держать в голове, а не в закладке с калькулятором.
В посте раскладываю по полочкам:
– почему в сети /24 не 256 адресов, а 254 (куда делись два и кто их съел);
– как за десять секунд понять, в одной ли сети два адреса – и почему от этого зависит, нужен тебе роутер или хватит свитча;
– откуда взялись 10.x, 172.16.x и 192.168.x и почему их не пускают в интернет;
– что на самом деле делает NAT, когда твой pod или домашний ноут выходят наружу под одним IP;
– IPv6 – ровно тот минимум, из-за незнания которого сервис молча не отвечает половине клиентов.
Плюс три классических подвоха с собеса (с ответами, которые не стыдно проговорить вслух) и код-челлендж: разбить
Полная версия с таблицами масок, разбором NAT в Kubernetes и шпаргалкой размеров сетей 👇
https://devopsway.ru/posts/networking-01-ip-subnets/
#networking #linux #devops
📺 В предыдущих сериях: это второй пост мини-курса "Networking 20/80" – 20% сетевых знаний, которые закрывают 80% работы DevOps. В нулевом разбирались с картой слоёв: на каком этаже искать супостата, когда всё упало. Сегодня спускаемся на этаж адресов.
На собесе меня как-то спросили: "для чего нужна маска подсети?". Мозг, натренированный на корпоративный тикет – где заполняешь поля по готовой архитектурной схеме, как предки завещали, – честно выдал то, чем реально пользуешься, когда нарезаешь подсети под контуры: "чтобы посчитать, сколько влезет хостов". Формально не враньё. Но это ответ про побочный эффект, а не про смысл – и если интервьюер в теме, он тут же начнёт раскручивать тебя в нужном направлении, или нет 😅
А смысл в том, что маска проводит границу: где заканчивается "своя" сеть и начинается "чужая". Из этой границы растёт всё остальное – пойдёт пакет напрямую через свитч или полезет через роутер, можно ли отрезать одно окружение от другого. Сколько хостов влезет – это просто сдача от битов, которые остались под хост.
Плохая новость: в адресации действительно есть арифметика.
Хорошая: вся она – степени двойки, и её реально держать в голове, а не в закладке с калькулятором.
В посте раскладываю по полочкам:
– почему в сети /24 не 256 адресов, а 254 (куда делись два и кто их съел);
– как за десять секунд понять, в одной ли сети два адреса – и почему от этого зависит, нужен тебе роутер или хватит свитча;
– откуда взялись 10.x, 172.16.x и 192.168.x и почему их не пускают в интернет;
– что на самом деле делает NAT, когда твой pod или домашний ноут выходят наружу под одним IP;
– IPv6 – ровно тот минимум, из-за незнания которого сервис молча не отвечает половине клиентов.
Плюс три классических подвоха с собеса (с ответами, которые не стыдно проговорить вслух) и код-челлендж: разбить
10.100.0.0/16 на prod, staging и dev так, чтобы ничего не пересеклось.Полная версия с таблицами масок, разбором NAT в Kubernetes и шпаргалкой размеров сетей 👇
https://devopsway.ru/posts/networking-01-ip-subnets/
#networking #linux #devops
🔥4
⚡️ DevOps Digest #22 | 06.07.2026
🔥 Главное за неделю:
1. Вышел Git 2.55.0 – появилась
🔗 https://about.gitlab.com/blog/whats-new-in-git-2-55-0/
2. Анатомия атаки на Codecov: звонок из твоего же пайплайна – разбор того, как одна строка в bash-скрипте 61 день сливала переменные окружения из CI-раннеров тысяч организаций. Это не разовый сбой одного вендора, а структурная дыра почти всех CI. Если секреты живут в пайплайне – прочти и проверь, что и откуда ты curl-ишь в раннере.
🔗 https://thenewstack.io/codecov-supply-chain-attack/
3. Docker vs Kubernetes: нужен ли тебе оркестратор уже сейчас – трезвый разбор для тех, кто вкатывается. Docker пакует и запускает контейнер на одной машине, Kubernetes держит заявленное состояние на флоте машин. Ранний переезд на K8s – это сложность, которая аукнется в субботу с пейджером в руках, а не выгода.
🔗 https://dev.to/jjoyneriv/docker-vs-kubernetes-do-you-actually-need-an-orchestrator-yet-57k0
4. Как перенести Docker Compose на новую VPS без даунтайма – практический гайд ровно под типовую скромную инфру: один сервер, compose, nginx как реверс-прокси. Разобран переезд к провайдеру пожирнее без простоя для круглосуточного сервиса.
🔗 https://habr.com/ru/articles/1055858/
5. EasyTier – децентрализованный mesh-VPN на Rust с поддержкой WireGuard – self-hosted и cloud-agnostic: связать разбросанные машины в единую сеть внутри закрытого контура без чужого облака и центрального сервера. 200+ звёзд за неделю – стоит присмотреться.
🔗 https://github.com/EasyTier/EasyTier
6. Health, readiness и observability: что измерять, прежде чем назвать сервис "живым" – понятный джуну разбор, чем liveness отличается от readiness и как отличить "процесс запущен" от "сервис реально обслуживает запросы". База, на которой строятся нормальные пробы в K8s.
🔗 https://blog.stackademic.com/health-readiness-and-observability-signals-what-to-measure-before-you-call-something-up-0c4c64f6ae64
🛠 Команда недели:
Показывает удалённые, но всё ещё открытые процессами файлы – ровно тот случай, когда
#дайджест #devops #cicd
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Вышел Git 2.55.0 – появилась
git history fixup: правки уходят в старый коммит без интерактивного rebase, а все зависимые ветки в стеке пересобираются сами. Плюс fsmonitor-демон для Linux (быстрый git status в монорепо) и ускоренные git grep/git cherry в partial clone.🔗 https://about.gitlab.com/blog/whats-new-in-git-2-55-0/
2. Анатомия атаки на Codecov: звонок из твоего же пайплайна – разбор того, как одна строка в bash-скрипте 61 день сливала переменные окружения из CI-раннеров тысяч организаций. Это не разовый сбой одного вендора, а структурная дыра почти всех CI. Если секреты живут в пайплайне – прочти и проверь, что и откуда ты curl-ишь в раннере.
🔗 https://thenewstack.io/codecov-supply-chain-attack/
3. Docker vs Kubernetes: нужен ли тебе оркестратор уже сейчас – трезвый разбор для тех, кто вкатывается. Docker пакует и запускает контейнер на одной машине, Kubernetes держит заявленное состояние на флоте машин. Ранний переезд на K8s – это сложность, которая аукнется в субботу с пейджером в руках, а не выгода.
🔗 https://dev.to/jjoyneriv/docker-vs-kubernetes-do-you-actually-need-an-orchestrator-yet-57k0
4. Как перенести Docker Compose на новую VPS без даунтайма – практический гайд ровно под типовую скромную инфру: один сервер, compose, nginx как реверс-прокси. Разобран переезд к провайдеру пожирнее без простоя для круглосуточного сервиса.
🔗 https://habr.com/ru/articles/1055858/
5. EasyTier – децентрализованный mesh-VPN на Rust с поддержкой WireGuard – self-hosted и cloud-agnostic: связать разбросанные машины в единую сеть внутри закрытого контура без чужого облака и центрального сервера. 200+ звёзд за неделю – стоит присмотреться.
🔗 https://github.com/EasyTier/EasyTier
6. Health, readiness и observability: что измерять, прежде чем назвать сервис "живым" – понятный джуну разбор, чем liveness отличается от readiness и как отличить "процесс запущен" от "сервис реально обслуживает запросы". База, на которой строятся нормальные пробы в K8s.
🔗 https://blog.stackademic.com/health-readiness-and-observability-signals-what-to-measure-before-you-call-something-up-0c4c64f6ae64
🛠 Команда недели:
lsof -nP +L1 2>/dev/null | sort -k7 -rn | head
Показывает удалённые, но всё ещё открытые процессами файлы – ровно тот случай, когда
df кричит "диск полон", а du ничего не находит. Классика после ротации логов: место освободится только после рестарта процесса или обнуления его дескриптора.#дайджест #devops #cicd
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
GitLab
What's new in Git 2.55.0?
Learn about the new features and changes in Git 2.55, including a new git-history(1) fixup command, an fsmonitor daemon for Linux, pushing to remote groups, and more.
🔥3❤2