Обновить
512K+

DevOps *

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

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

Как я за 15 лет устал диагностировать серверы руками и сделал инструмент, который делает это за 60 секунд

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

Я работаю с Linux больше 15 лет. Начинал с хостинга, где «сервер тормозит» означало зайти по SSH и запустить top. Потом были выделенные серверы, кластеры, Kubernetes. Задачи менялись, но вопрос оставался один и тот же:

Сервер тормозит. Что не так?

За эти годы у меня накопились инструкции, SSH-скрипты, обёртки над vmstat, iostat, ss, perf. Каждый раз, подключаясь к проблемному серверу, я тратил 20-40 минут на одни и те же действия вроде команды top

Это Tier 1 — базовый уровень. Но когда top показывает что всё вроде нормально, а приложение всё равно тормозит, начинается настоящая диагностика.

Читать далее

Новости

Не настраивайте локальное окружение вручную. Devcontainers — уже пора! Часть первая

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

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

Всё это — девконтейнеры! Да, мы начинаем программировать прямо в контейнере. И всё это бесплатно и без необходимости развёртывания новых сущностей в вашей организации. О такой кнопке «сделать хорошо» мы и поговорим в этой статье по мотивам моего доклада для DevOps Conf

Читать далее

Разбираем хаос в Linux‑логах: journald, rsyslog и файлы

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

“Где мои логи — в /var/log/messages, /var/log/syslog или только в journalctl?” — этот вопрос рано или поздно задает себе каждый инженер, который вынужден переключаться между разными дистрибутивами: Ubuntu, CentOS, Alpine, корпоративные Unix системы. 

Типичный сценарий: вы заходите на сервер, ищете /var/log/messages, а его или нет, или он есть, но journalctl показывает гораздо больше событий, чем файл. 

Иногда сервер внезапно начинает сильно использовать CPU, и в итоге причиной оказывается агрессивное логирование. 

Если к этому добавить разнородный парк, где рядом с Ubuntu живут динозавры на AIX и Solaris, путаница приобретает глобальный характер. 

Сейчас мы живем в эпоху «двоевластия»: systemd‑journald уже стал стандартом де‑факто, но rsyslog все еще присутствует во многих дистрибутивах по инерции или ради совместимости. Эта статья для инженеров, которые хотят понимать, кто именно пишет логи в Linux, почему они дублируются, где теряются CPU и I/O, и как настроить логирование так, чтобы диск не превращался в помойку. 

Мы пройдем путь от бинарных логов AIX до journald, а в конце разберемся, как практически использовать journalctl с популярными инфраструктурными службами. 

Читать далее

maxpack: межфайловая дедупликация на версионных данных

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

Разбор межфайловой дедупликации на версионных данных: почему обычная упаковка упирается в потолок и что меняется на CPython, Go и Node.js.

Читать далее

PocketCoder-A1: Как я заставил свой Claude работать в три смены

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

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

Как мы сделали Авто-Кодера, выжимая максимум из нашей подписки на LLM!

Читать далее

Почему нельзя генерировать пароли через random в Python: разбор на практике

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

Вы уверены, что ваш “случайный” пароль действительно случайный?

Я тоже так думал — пока не полез разбираться, как Python на самом деле генерирует случайные значения. Оказалось, что привычный random — это не про безопасность вообще. Это генератор, который только выглядит случайным, но при определённых условиях может быть воспроизведён. Что даст нам возможность предсказать все будущие пароли и прошлые.

В статье я последовательно разбираю:

почему классическая “энтропия пароля” часто вводит в заблуждение;

как устроен Mersenne Twister и в чём его фундаментальная проблема;

почему даже хороший seed (через os.urandom) не делает random безопасным;

и что на практике можно (и нельзя) восстановить, имея время генерации, код и несколько паролей.

Я попытался воспроизвести реальную атаку: восстановить seed по временной метке и набору сгенерированных паролей. Спойлер — всё оказалось сложнее, чем кажется.

Отдельно показываю, где проходит граница между «кажется надёжным» и «действительно криптостойким», и почему secrets — это не просто «рекомендованный модуль», а принципиально другой класс генерации.

Читать далее

Почему LLM-агенты в CI/CD выбирают читерство вместо решения задачи

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

LLM-агенты отлично решают алгоритмические задачи. Но что произойдет, если поместить их в реальную инфраструктуру – с CI/CD, branch protection и security-политиками?

Я провел эксперимент: дал агентам простую задачу – внести изменение в репозиторий и замерджить его в main, соблюдая все правила. При этом у них был доступ к тем же инструментам, что и у разработчика, включая GitHub CLI и админский токен.

Результат оказался немного неожиданным. Практически все модели успешно выполнили задачу, но ни одна так, как я ожидал.

Читать далее

AI для умного дома: что уже работает сегодня (часть 1)

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

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

Читать далее

Гибридный поиск по коду в GitLab: как я ускорил поиск по 100+ GitLab-проектам с часов до минут

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

Когда проектов в GitLab становится много, довольно быстро появляется одна и та же задача: найти, где используется конкретный API, URL, env-переменная или конфигурационный параметр.

Пока репозиториев мало, всё просто: открыл поиск, ввел строку, получил результат. Но когда проектов уже больше сотни, а нужные вхождения лежат не только в коде, но и в YAML-конфигах, Helm-чартах, .env и JSON-файлах, жизнь становится менее романтичной.

Первый лобовой вариант — просто скачать все проекты локально и искать по ним через grep, ripgrep или IDE. Работает, но тащить 100+ репозиториев на локальную машину ради одной проверки — идея так себе. Ноутбук, скорее всего, энтузиазма не разделит.

Мне хотелось искать прямо поверх GitLab, без локального зеркала всей группы репозиториев. Я начал с просмотра готовых вариантов, а в итоге пришёл к своему гибридному краулеру: код ищется через GitLab API, а конфиги добираются отдельным глубоким обходом файлов. В результате поиск по 100+ проектам сократился с часов до нескольких минут.

Читать далее

Как аномальный NXDOMAIN-трафик привёл к росту счетов в Cloud DNS, а поддержка не помогла вовремя

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

Использовали Cloud DNS, всё работало штатно.

В марте 2026 года мы столкнулись с неприятной ситуацией: в облачном DNS, который использовался для одной из наших публичных зон, начался резкий всплеск публичных авторитетных DNS‑запросов, причём основную массу составляли ответы NXDOMAIN.

На практике это привело сразу к двум проблемам:

Читать далее

DevOps как сервис: как выстроить поддержку, унификацию и внедрение новых технологий без хаоса

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

Меня зовут Андрей Трегубов, я руковожу группой DevOps в Ви.Tech, IT‑дочке ВсеИнструменты.ру. Недавно мы записали подкаст с Александром Крыловым, директором по развитию продукта «Штурвал», и обсудили, где у DevOps заканчивается роль «ребят, которые иногда помогают разработке» и начинается сервисная модель с понятным входом, приоритетами и правилами игры. В этой статье я собрал из нашего разговора самое практичное: когда DevOps уже пора выстраивать как сервис, почему на росте перестает работать героизм, как не утонуть в поддержке, что делать с зоопарком технологий и где в этой истории нужны Enabling Team, безопасность и ИИ.

Можно долго спорить о терминах, но на практике все очень приземленно. Есть команда, к ней приходят с запросами, она что‑то делает, где‑то автоматизирует, где‑то чинит, где‑то вытаскивает всех из пожара. И какое‑то время это даже выглядит нормально. Проблема в том, что «нормально» и «масштабируется» далеко не одно и то же.

Читать далее

Колобок-стек: я от бабушки ушёл, или как мы написали свой сервер алертов на 16 МБ

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

Pusk — self-hosted сервер алертов на 16 МБ. Один бинарник, без внешних сервисов, частично совместим с Telegram Bot API (13 методов из 80+).

Типичная ситуация: несколько серверов, Zabbix собирает метрики, Python‑боты шлют алерты в Telegram. У кого‑то это веб‑проект, у кого‑то видеонаблюдение, у кого‑то живые эфиры, где 2 минут без алерта = зрители видят чёрный экран. Работало годами.

А потом канал до API отвалился. Причина неважна — лимиты, блокировки, авария на стороне провайдера. Алерты встали. Нужен был свой канал доставки, который не зависит от внешних сервисов.

Покатились →

Функциональный Rust. Глава 0: Зачем нужно ФП?

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

TL;DR: Затем, что с ним код чище, читаемее и предсказуемее ;)

Старый объектно-ориентированный или императивный подход к программированию несёт в себе множество проблем, которые решает функциональное программирование. Даже в современной среде все до сих пор считают, что объектно-ориентированное программирование — правильное программирование, а функциональное — «для математиков и задротов», или вообще даже для варваров, которые даже не слышали об объектной и императивной «цивилизации».

Читать далее

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

Jarvis Pattern: почему AI-агенту не нужен фреймворк, а нужна операционная система

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

Один AI-агент на базе Claude Sonnet закрывает 100% моих DevSecOps-задач. Без фреймворков, без оркестраторов, без векторных баз. Только LLM, операционная система и markdown-файлы. Рассказываю архитектуру, которая за этим стоит.

Формула: LLM + OS + Files

Apple хочет чтобы я купил Mac за 200к. У меня два приложения в App Store и ни одного макбука

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

У меня нет макбука. Но два моих приложения лежат в App Store. Рассказываю весь путь: регистрация Apple Developer из России, сертификаты без Xcode, автоматическая сборка через GitHub Actions. Три варианта: для вайбкодеров, программистов без мака и хардкорщиков.

Читать далее

Как засунуть 62ГБ в 15ГБ и не сойти с ума: Партизанский MLOps на примере Gemma 4 31B

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

TL;DR: В этой статье мы возьмем новейшую Gemma 4 31B, которая в оригинале весит 62 ГБ, и заставим её работать и выгружаться на бесплатном Kaggle с лимитом диска в 57 ГБ. Спойлер: нам придется удалять исходники прямо во время работы Python-скрипта.

Читать далее

Осваиваем replication slots в Postgres: как предотвратить разрастание WAL и другие проблемы в продакшене

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

Логическая репликация в Postgres редко ломает прод внезапно — чаще она долго и методично копит проблему, пока replication slot удерживает всё больше WAL, потребитель отстаёт, а свободное место на диске начинает таять. В этой статье разбирается именно такая зона риска: как устроена работа replication slots, почему одних базовых настроек здесь недостаточно и какие практики реально помогают держать под контролем WAL, публикации, heartbeats, failover и мониторинг. Материал особенно полезен тем, кто работает с CDC, Debezium и production-инстансами Postgres, где цена ошибки измеряется уже не теорией, а стабильностью системы.

Разбор PostgreSQL

Почему rollback на ext4 — боль, и как я решил это через rsync

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

Я не собирался делать этот проект.
Просто однажды сломал систему — и понял, что rollback на ext4 не такая простая вещь, как кажется.

В итоге собрал своё решение на rsync: быстрый и предсказуемый откат без смены файловой системы.

Кода тут минимум — он на GitHub. В статье — про сам подход: проблему, попытки решения и итог.

Вернуть систему

Даёшь самоуправление! Управляем конфигурацией HashiСorp Vault изнутри, опираясь на Git и кворум подписей

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

При управлении доступом в HashiCorp Vault есть выбор: делать это либо супербезопасно, но неудобно, либо удобно, но с риском компрометации секретов. В первом случае вы отзываете root-токен после инициализации хранилища и для каждого изменения конфигурации собираете кворум владельцев Shamir-ключей. Во втором — применяете конфигурацию через CI/CD или из-под администратора, и тогда где-то обязательно существует «кольцо всевластия»: токен или пароль, компрометация которого даёт полный контроль над инфраструктурой секретов.

Мы решили объединить безопасность и удобство в одном решении. Взяли идею кворума и привычный инженерному сообществу способ аудита изменений — коммиты в Git. Что получилось — читайте под катом. Cпойлер: вы сможете использовать это решение бесплатно.

Читать далее

Почему при 136 рпс и 150 рпс лимита наблюдалось 7 рпс ошибок 429

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

На скрине показано 40 минут графиков с балансировки некоторого эндпоинта. На выделенном участке видно 129.01 рпс успехов и 7.27 ошибок 4xx, которые являлись 429 от рпс-лимитера. Настройка рпс-лимитера находилась на уровне “не более 150 запросов с интервалом в 1 секунду”. Не странно ли видеть такое уверенный и постоянный фон ошибок про превышение лимита?

Далее попробуем объяснить этот график
1
23 ...