<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DevOps Brain 🧠</title><link>https://devopsbrain.ru/</link><description>Recent content on DevOps Brain 🧠</description><generator>Hugo</generator><language>en-us</language><copyright>© It Cat</copyright><lastBuildDate>Wed, 11 Mar 2026 09:00:00 +0300</lastBuildDate><atom:link href="https://devopsbrain.ru/index.xml" rel="self" type="application/rss+xml"/><item><title>Подготовка к интервью DevOps/Sre 2026</title><link>https://devopsbrain.ru/posts/2026-03-11-interview-devops-questions-2026/</link><pubDate>Wed, 11 Mar 2026 09:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2026-03-11-interview-devops-questions-2026/</guid><description>&lt;h2 id="git-сценарии-git-scenarios">Git Сценарии (Git Scenarios)&lt;/h2>
&lt;ol>
&lt;li>Разработчик случайно запушил плохой коммит в основную ветку (&lt;code>main&lt;/code>), и продакшн уже сломан. Как бы вы быстро стабилизировали продакшн? Вы бы использовали &lt;code>revert&lt;/code>, &lt;code>reset&lt;/code> или создали hotfix-ветку? Объясните своё решение.&lt;/li>
&lt;li>Кто-то случайно закоммитил ключи API и секреты в публичный репозиторий на GitHub. Какие шаги вы предпримете немедленно, чтобы снизить риски и очистить историю репозитория?&lt;/li>
&lt;li>Два пул-реквеста готовы к релизу, но оба изменяют одни и те же файлы, и теперь возникли конфликты. Как бы вы разрешили конфликт, не внеся при этом новых багов?&lt;/li>
&lt;li>Вы откатили плохой коммит (сделали &lt;code>revert&lt;/code>), но сам откат вызвал новые проблемы. Как вы будете расследовать, что именно сломалось?&lt;/li>
&lt;li>В вашей команде есть окружения &lt;code>dev&lt;/code>, &lt;code>staging&lt;/code> и &lt;code>production&lt;/code>. Как бы вы спроектировали Git-стратегию ветвления, чтобы избежать хаоса во время релизов?&lt;/li>
&lt;/ol>
&lt;h2 id="cicd-сценарии-cicd-scenarios">CI/CD Сценарии (CI/CD Scenarios)&lt;/h2>
&lt;ol start="6">
&lt;li>Ваш пайплайн CI (непрерывной интеграции) иногда падает, но при повторном запуске проходит успешно. Это начинает разрушать доверие к пайплайну. Как бы вы отладили эту нестабильность?&lt;/li>
&lt;li>Сборка в CI проходит успешно, но развертывание на продакшн терпит неудачу из-за различий в окружениях. Как бы вы это предотвратили?&lt;/li>
&lt;li>Вам нужно внедрить утверждение вручную (manual approval) перед развертыванием на продакшн, но не задерживать команду тестирования. Как бы вы спроектировали этот процесс?&lt;/li>
&lt;li>Один из этапов вашего пайплайна развертывания иногда зависает, не выдавая ошибок. Как бы вы отладили это, ничего не перезапуская вручную?&lt;/li>
&lt;li>Разработчики жалуются, что пайплайн занимает 25 минут, что замедляет обратную связь. Как бы вы оптимизировали его?&lt;/li>
&lt;/ol>
&lt;h2 id="docker-и-сценарии-с-контейнерами-docker--container-scenarios">Docker и Сценарии с Контейнерами (Docker &amp;amp; Container Scenarios)&lt;/h2>
&lt;ol start="11">
&lt;li>Контейнер на продакшне падает через несколько минут после запуска, но локально у разработчика всё работает. Как бы вы это отладили?&lt;/li>
&lt;li>Разработчик обновил зависимости, и образ, который собирался локально, теперь не запускается в стейджинге. В чём может быть причина несоответствия?&lt;/li>
&lt;li>Ваше приложение в контейнере работает медленно. Какие метрики вы бы проверили, и как бы вы определили, проблема в приложении или в хосте?&lt;/li>
&lt;li>Образ Docker&amp;rsquo;а содержит уязвимости, но команда разработки говорит, что им нужно срочно сделать развертывание. Как бы вы сбалансировали безопасность и срочность?&lt;/li>
&lt;li>Вы используете Docker Compose для локальной разработки, но на продакшне используете Kubernetes. Какие подводные камни могут возникнуть?&lt;/li>
&lt;/ol>
&lt;h2 id="kubernetes-и-сценарии-с-оркестрацией-kubernetes--orchestration-scenarios">Kubernetes и Сценарии с Оркестрацией (Kubernetes &amp;amp; Orchestration Scenarios)&lt;/h2>
&lt;ol start="16">
&lt;li>Поды (Pods) в Kubernetes перезапускаются в цикле (CrashLoopBackOff). Какие шаги вы предпримете для диагностики?&lt;/li>
&lt;li>Вы развернули новую версию, и часть трафика начала уходить на старую версию (во время развертывания). Как бы вы это расследовали?&lt;/li>
&lt;li>После масштабирования развертывания (deployment) несколько подов находятся в состоянии &lt;code>Pending&lt;/code>. Что, скорее всего, не так, и как бы вы это исправили?&lt;/li>
&lt;li>Сервис не виден другим подам в том же кластере. Как бы вы это отладили?&lt;/li>
&lt;li>Ingress (входной контроллер) не маршрутизирует трафик к сервису. Где бы вы искали проблему в первую очередь?&lt;/li>
&lt;li>У вас произошёл сбой ноды в кластере, и поды не перепланируются (не переезжают). Почему это могло произойти?&lt;/li>
&lt;li>Ваше приложение в Kubernetes потребляет слишком много памяти. Какие действия вы предпримете для стабилизации?&lt;/li>
&lt;/ol>
&lt;h2 id="terraform-и-сценарии-с-инфраструктурой-как-кодом-terraform--iac-scenarios">Terraform и Сценарии с Инфраструктурой как Кодом (Terraform &amp;amp; IaC Scenarios)&lt;/h2>
&lt;ol start="23">
&lt;li>Вы запустили &lt;code>terraform apply&lt;/code>, и он висит уже 20 минут. Как бы вы это отладили, не сломав состояние?&lt;/li>
&lt;li>Кто-то вручную изменил ресурс в облачной консоли. Как бы вы обнаружили это расхождение (дрейф) и исправили его?&lt;/li>
&lt;li>Один из разработчиков случайно удалил файл состояния (state file). Как бы вы восстановили инфраструктуру?&lt;/li>
&lt;li>Ваш план Terraform показывает, что он хочет уничтожить критическую базу данных, но вы не меняли её конфигурацию. Что происходит, и как бы вы это предотвратили?&lt;/li>
&lt;li>Вы работаете в команде из 10 человек, использующих одну и ту же конфигурацию Terraform. Как бы вы организовали работу с состояниями, чтобы избежать блокировок и ошибок?&lt;/li>
&lt;li>Ваш план показывает много изменений в ресурсах, которые, как вы знаете, не должны меняться. Как бы вы это отладили?&lt;/li>
&lt;/ol>
&lt;h2 id="сценарии-с-облаками-и-сетями-cloud--networking-scenarios">Сценарии с Облаками и Сетями (Cloud &amp;amp; Networking Scenarios)&lt;/h2>
&lt;ol start="29">
&lt;li>Приложение развёрнуто, но пользователи не могут подключиться. Где вы будете искать проблему: балансировщик, DNS (система доменных имён), группа безопасности?&lt;/li>
&lt;li>База данных работает медленно. Как бы вы определили, проблема на стороне БД, сети или приложения?&lt;/li>
&lt;li>Вы развернули приложение, но оно не может подключиться к API через интернет. Какие компоненты сети вы бы проверили?&lt;/li>
&lt;li>Трафик внезапно вырос, и ваша инфраструктура начала платить большие счета. Как бы вы автоматически защитились от этого в будущем?&lt;/li>
&lt;li>Вам нужно развернуть приложение в нескольких регионах. Как вы будете управлять сетевым взаимодействием и задержками?&lt;/li>
&lt;/ol>
&lt;h2 id="мониторинг-наблюдаемость-и-безопасность-monitoring-observability--security-scenarios">Мониторинг, Наблюдаемость и Безопасность (Monitoring, Observability &amp;amp; Security Scenarios)&lt;/h2>
&lt;ol start="34">
&lt;li>Пользователи жалуются, что сайт тормозит, но все метрики (CPU, RAM) выглядят нормально. Куда вы будете смотреть дальше?&lt;/li>
&lt;li>После развертывания частота ошибок 500 (на стороне сервера) выросла, но вы не видите явных ошибок в логах приложения. Как бы вы это расследовали?&lt;/li>
&lt;li>Вы получаете предупреждение о том, что диск на сервере заполнен на 90%. Какие шаги предпримете, чтобы быстро освободить место и понять причину?&lt;/li>
&lt;li>Дисковое пространство снова заполняется каждые несколько дней, несмотря на то, что вы чистили логи ранее. Как бы вы решили эту проблему навсегда?&lt;/li>
&lt;li>Вы подозреваете, что в кластере запущен несанкционированный контейнер. Как бы вы это проверили и предотвратили повторение?&lt;/li>
&lt;li>Команда безопасности просит предоставить отчёт о том, кто имел доступ к продакшну за последние 90 дней. Где бы вы искали эту информацию?&lt;/li>
&lt;li>Внедрение инструментов мониторинга снизило производительность приложения. Как бы вы изменили подход к сбору метрик?&lt;/li>
&lt;li>Как бы вы обнаружили утечку памяти (memory leak) в приложении до того, как она уронит сервер?&lt;/li>
&lt;/ol>
&lt;h2 id="сценарии-инцидентов-и-коммуникации-incident--communication-scenarios">Сценарии Инцидентов и Коммуникации (Incident &amp;amp; Communication Scenarios)&lt;/h2>
&lt;ol start="42">
&lt;li>Продакшн полностью лежит. Как вы будете коммуницировать с командами и принимать решения в первые 5 минут?&lt;/li>
&lt;li>Менеджер просит назвать точное время починки инцидента, но вы только начали расследование. Как вы ответите?&lt;/li>
&lt;li>Вы нашли причину проблемы, но исправление займёт 30 минут, а простой (даунтайм) будет всё это время. Ваши действия?&lt;/li>
&lt;li>Новая версия софта сломала совместимость со старым API. Как вы проведёте разбор инцидента (post-mortem), не обвиняя людей?&lt;/li>
&lt;li>Разработчик говорит, что «всё должно работать», но на проде всё сломано. Как вы выстроите диалог?&lt;/li>
&lt;/ol>
&lt;h2 id="поведенческие-сценарии-и-сценарии-принятия-решений-behavioral--decision-making-scenarios">Поведенческие Сценарии и Сценарии Принятия Решений (Behavioral &amp;amp; Decision-Making Scenarios)&lt;/h2>
&lt;ol start="47">
&lt;li>Вам нужно внедрить новую практиму, которая сэкономит время, но команда сопротивляется. Как вы поступите?&lt;/li>
&lt;li>Дедлайн горит, стабильность страдает. Вы выберете скорость или качество? Объясните.&lt;/li>
&lt;li>Джуниор-разработчик случайно удалил важную базу данных на проде. Как вы отреагируете и что сделаете в первую очередь?&lt;/li>
&lt;li>Команда хочет переписать всю инфраструктуру на новых инструментах, потому что «старые надоели». Как вы оцените это решение?&lt;/li>
&lt;/ol>
&lt;h2 id="devsecops-безопасность-на-всех-этапах">DevSecOps (Безопасность на всех этапах)&lt;/h2>
&lt;ol start="51">
&lt;li>В CI/CD‑пайплайне вы обнаружили, что используемый базовый образ Docker содержит критическую уязвимость. Релиз должен состояться сегодня. Как вы поступите?&lt;/li>
&lt;li>Разработчик просит добавить секреты (пароли, токены) в код для удобства тестирования. Как вы объясните, почему это плохая практика, и предложите безопасную альтернативу?&lt;/li>
&lt;li>Ваш кластер Kubernetes сканируют на уязвимости и находят, что некоторые поды работают с привилегиями root. Как исправить ситуацию и предотвратить её в будущем?&lt;/li>
&lt;li>Внедряется политика, запрещающая публичные S3‑бакеты. Одна команда настаивает на публичном доступе для своего проекта. Как найти компромисс, не жертвуя безопасностью?&lt;/li>
&lt;li>При развёртывании нового сервиса выясняется, что он требует открыть нестандартный порт наружу. Как оценить риски и какие шаги предпринять для безопасного открытия порта?&lt;/li>
&lt;/ol>
&lt;h2 id="finops-и-управление-затратами-cloud-cost-optimization">FinOps и управление затратами (Cloud Cost Optimization)&lt;/h2>
&lt;ol start="56">
&lt;li>Ежемесячный счёт за облако вырос на 30% без видимых причин. Как вы будете расследовать, откуда взялись лишние расходы?&lt;/li>
&lt;li>Разработчики создают много тестовых окружений вручную и забывают их удалять. Как автоматизировать контроль затрат и чистку неиспользуемых ресурсов?&lt;/li>
&lt;li>Вы используете spot‑инстансы для экономии, но некоторые критичные задачи не должны прерываться. Как спроектировать архитектуру для устойчивости при работе с прерываемыми инстансами?&lt;/li>
&lt;li>Финансовый отдел просит предсказать расходы на следующий квартал. Какие данные и подходы вы используете для прогнозирования?&lt;/li>
&lt;li>Вы замечаете, что некоторые инстансы имеют низкую загрузку CPU, но работают 24/7. Как оптимизировать использование ресурсов без ущерба для производительности?&lt;/li>
&lt;/ol>
&lt;h2 id="gitops-и-продвинутые-стратегии-доставки">GitOps и продвинутые стратегии доставки&lt;/h2>
&lt;ol start="61">
&lt;li>После применения манифеста через ArgoCD приложение не обновляется, хотя синхронизация показывает успех. Как диагностировать причину?&lt;/li>
&lt;li>Команда хочет откатить неудачный релиз, но ArgoCD автоматически синхронизируется с Git, возвращая обратно. Как правильно организовать откат в GitOps?&lt;/li>
&lt;li>Вы используете несколько кластеров (dev, staging, prod) с одной Git‑репой. Как организовать управление конфигурациями для разных окружений без дублирования кода?&lt;/li>
&lt;li>При push в репозиторий пайплайн запускает обновление, но изменения не доходят до продакшна из‑за ошибки в CI. Как обеспечить согласованность между репо и кластером?&lt;/li>
&lt;li>Разработчик случайно запушил неверный тег образа в ветку production, и ArgoCD начал разворачивать неправильную версию. Как быстро отреагировать и предотвратить такие инциденты в будущем?&lt;/li>
&lt;/ol>
&lt;h2 id="service-mesh-и-управление-трафиком">Service Mesh и управление трафиком&lt;/h2>
&lt;ol start="66">
&lt;li>Внедрили Istio, и после этого приложение стало работать медленнее. Какие шаги предпринять для выявления узкого места?&lt;/li>
&lt;li>Один из микросервисов начал отвечать ошибками 503, а логи приложения чисты. Как Service Mesh может помочь найти причину?&lt;/li>
&lt;li>Нужно ограничить доступ между сервисами по принципу наименьших привилегий. Как настроить политики авторизации в Service Mesh?&lt;/li>
&lt;li>Вы хотите постепенно перевести трафик с версии v1 на v2 сервиса. Как с помощью Service Mesh реализовать canary‑деплой?&lt;/li>
&lt;li>При использовании mTLS в Service Mesh срок действия сертификатов истёк, и сервисы перестали общаться. Как автоматизировать обновление сертификатов?&lt;/li>
&lt;/ol>
&lt;h2 id="наблюдаемость-20-трейсинг-и-профилирование">Наблюдаемость 2.0: трейсинг и профилирование&lt;/h2>
&lt;ol start="71">
&lt;li>Пользователи жалуются на высокую задержку при выполнении конкретной операции, но метрики общей нагрузки в норме. Как распределённый трейсинг поможет локализовать проблему?&lt;/li>
&lt;li>Вы видите, что один из сервисов потребляет аномально много CPU. Какие инструменты непрерывного профилирования помогут понять, какая функция виновата?&lt;/li>
&lt;li>Как спроектировать систему сбора трейсов, чтобы минимизировать влияние на производительность приложения?&lt;/li>
&lt;li>В дашбордах вы видите противоречивые данные: метрики говорят, что всё хорошо, а трейсы показывают много ошибок. В чём может быть причина?&lt;/li>
&lt;li>Как вы будете использовать данные трейсинга для оптимизации взаимодействия между сервисами (например, уменьшения количества вызовов)?&lt;/li>
&lt;/ol>
&lt;h2 id="disaster-recovery-и-бизнеснепрерывность">Disaster Recovery и бизнес‑непрерывность&lt;/h2>
&lt;ol start="76">
&lt;li>Один регион облака полностью вышел из строя. Как быстро переключить трафик на другой регион? Какие компоненты должны быть настроены заранее?&lt;/li>
&lt;li>При тестировании Disaster Recovery выяснилось, что восстановление базы данных занимает 12 часов, хотя RTO (целевое время восстановления) — 4 часа. Как улучшить?&lt;/li>
&lt;li>Критическое приложение использует локальные диски (ephemeral storage). Как обеспечить сохранность данных при сбое ноды?&lt;/li>
&lt;li>Как провести учения по аварийному восстановлению, не нарушая работу продакшна?&lt;/li>
&lt;li>В процессе восстановления вы обнаружили, что некоторые DNS‑записи до сих пор указывают на старый IP. Как автоматизировать обновление DNS при переключении?&lt;/li>
&lt;/ol>
&lt;h2 id="serverless-и-бессерверные-архитектуры">Serverless и бессерверные архитектуры&lt;/h2>
&lt;ol start="81">
&lt;li>Ваша Lambda‑функция начала выполняться дольше, и часть запросов падает по таймауту. Как найти узкое место без доступа к серверу?&lt;/li>
&lt;li>При резком скачке трафика Lambda масштабируется, но база данных не выдерживает. Как защитить БД от перегрузки?&lt;/li>
&lt;li>Вы перешли на serverless, и счета выросли из‑за большого количества вызовов dev‑среды. Как ограничить использование в не‑prod окружениях?&lt;/li>
&lt;li>Как отлаживать и тестировать serverless‑приложения локально, чтобы избежать проблем при деплое?&lt;/li>
&lt;li>В Lambda используется много библиотек, и размер пакета превышает лимит. Как оптимизировать размер функции?&lt;/li>
&lt;/ol>
&lt;h2 id="управление-конфигурациями-и-автоматизация-серверов">Управление конфигурациями и автоматизация серверов&lt;/h2>
&lt;ol start="86">
&lt;li>Вы запустили плейбук Ansible на сотне серверов, и он упал на середине из‑за ошибки в одной задаче. Как возобновить выполнение с места сбоя?&lt;/li>
&lt;li>Разработчик изменил конфигурационный файл вручную на сервере, и при следующем запуске Ansible изменения перезаписались. Как балансировать между автоматизацией и ручными правками?&lt;/li>
&lt;li>Нужно развернуть новое приложение на разнородных серверах (разные ОС, версии). Как спроектировать роли/рецепты для максимальной переиспользуемости?&lt;/li>
&lt;li>Как обеспечить безопасное хранение секретов в системах управления конфигурациями (Ansible Vault, encrypted data bags и т.д.)?&lt;/li>
&lt;li>При массовом обновлении конфигурации вы хотите сначала протестировать на небольшой группе серверов. Как реализовать canary‑развёртывание конфигураций?&lt;/li>
&lt;/ol>
&lt;h2 id="качество-инфраструктурного-кода-и-тестирование-iac-testing">Качество инфраструктурного кода и тестирование (IaC Testing)&lt;/h2>
&lt;ol start="91">
&lt;li>Вы написали модуль Terraform, но хотите убедиться, что он создаёт ресурсы правильно и не нарушает политики безопасности. Какие виды тестов вы включите?&lt;/li>
&lt;li>При запуске &lt;code>terraform plan&lt;/code> вы видите, что будет удалён важный ресурс, хотя код не меняли. Как автоматически проверять подобные риски?&lt;/li>
&lt;li>Как интегрировать линтеры и статические анализаторы (tflint, checkov) в CI/CD, чтобы они не блокировали пайплайн, но информировали команду?&lt;/li>
&lt;li>Ваш код Terraform использует модули из реестра. Как гарантировать, что обновление модуля не сломает инфраструктуру?&lt;/li>
&lt;li>Как тестировать политики (например, запрет публичных IP) до того, как ресурсы будут созданы?&lt;/li>
&lt;/ol>
&lt;h2 id="базы-данных-в-devopsпрактике">Базы данных в DevOps‑практике&lt;/h2>
&lt;ol start="101">
&lt;li>Вы обновили схему базы данных (миграция), и после деплоя приложение стало отвечать с ошибками. Как быстро откатить изменения данных, не нарушая целостность?&lt;/li>
&lt;li>Запросы к базе резко замедлились, хотя нагрузка на приложение не выросла. Метрики CPU/IO в норме. Какие шаги предпримете для диагностики?&lt;/li>
&lt;li>Разработчик случайно выполнил &lt;code>DELETE&lt;/code> без &lt;code>WHERE&lt;/code> на продакшн‑базе. Как восстановить данные, если резервная копия была сделана 6 часов назад?&lt;/li>
&lt;li>При развёртывании нового релиза вы обнаружили, что автоматическая миграция базы данных запустилась дважды и привела к дублированию данных. Как предотвратить такие ситуации в будущем?&lt;/li>
&lt;li>Ваше приложение использует репликацию master‑slave. При отказе master‑ноды вы вручную продвигаете slave, но приложение продолжает писать в старый master после его восстановления. Как автоматизировать переключение и избежать рассинхронизации?&lt;/li>
&lt;li>В вашем стеке одновременно используются PostgreSQL, Redis и Kafka. Опишите, как вы организуете мониторинг и алертинг для всей этой связки, чтобы быстро обнаружить проблему (например, падение продьюсера в Kafka, которое приводит к устареванию кэша в Redis и, как следствие, к тяжелым запросам в PostgreSQL).&lt;/li>
&lt;/ol>
&lt;h3 id="postgresql">PostgreSQL&lt;/h3>
&lt;ol start="106">
&lt;li>Вы выполнили миграцию схемы, которая добавила новый столбец с &lt;code>NOT NULL&lt;/code> без значения по умолчанию. После деплоя приложение стало падать с ошибками. Как исправить ситуацию без остановки сервиса?&lt;/li>
&lt;li>Репликация PostgreSQL (physical streaming) внезапно остановилась. Какие шаги предпринять для диагностики и восстановления синхронизации, не теряя данные?&lt;/li>
&lt;li>Запросы к определённой таблице стали выполняться очень медленно после роста объёма данных. Как с помощью &lt;code>EXPLAIN&lt;/code> и анализа индексов найти проблему и предложить оптимизацию?&lt;/li>
&lt;li>Вам нужно настроить резервное копирование PostgreSQL с поддержкой point‑in‑time recovery (PITR). Опишите процесс: какие инструменты используете, как часто делаете полные бэкапы и как храните WAL‑архивы.&lt;/li>
&lt;/ol>
&lt;h3 id="mysql">MySQL&lt;/h3>
&lt;ol start="110">
&lt;li>При пиковой нагрузке вы замечаете, что многие запросы к MySQL встают в состояние &lt;code>Waiting for table metadata lock&lt;/code>. Как определить, какой запрос блокирует остальные, и как предотвратить такие ситуации?&lt;/li>
&lt;li>Вы настроили репликацию master‑slave (асинхронную). В один момент слейв начинает отставать на несколько часов. Какие метрики проверить, и как можно ускорить репликацию?&lt;/li>
&lt;li>Разработчик случайно выполнил &lt;code>DROP TABLE&lt;/code> на тестовой базе, но через минуту понял ошибку. Есть только ежедневный снепшот. Как восстановить удалённую таблицу с минимальными потерями данных?&lt;/li>
&lt;li>В MySQL 8 появилась поддержка ролей и более строгих политик безопасности. Как вы настроите привилегии для приложения, чтобы оно имело доступ только к нужным таблицам и не могло случайно удалить данные?&lt;/li>
&lt;/ol>
&lt;h3 id="clickhouse">ClickHouse&lt;/h3>
&lt;ol start="114">
&lt;li>Вы загружаете большие объёмы данных в ClickHouse, и скорость вставки резко падает после нескольких часов работы. Какие параметры таблицы (партиционирование, TTL, индексы) вы проверите в первую очередь?&lt;/li>
&lt;li>Запросы к распределённой таблице (Distributed) выполняются медленно, хотя каждая шарда по отдельности отвечает быстро. Где искать узкое место: сеть, настройки Distributed, ключ шардирования?&lt;/li>
&lt;li>Одна из реплик ClickHouse вышла из строя. Как восстановить её без остановки записи на кластер и без потери данных?&lt;/li>
&lt;li>Вы хотите организовать ротацию старых данных в ClickHouse (например, удалять данные старше 30 дней). Какие механизмы ClickHouse для этого существуют, и как настроить автоматическую очистку с минимальным влиянием на производительность?&lt;/li>
&lt;/ol>
&lt;h3 id="redis">Redis&lt;/h3>
&lt;ol start="118">
&lt;li>После сбоя питания Redis потерял часть данных, хотя была включена опция &lt;code>appendonly yes&lt;/code>. Как проверить целостность AOF‑файла и настроить гарантии сохранности (durability) без сильного падения производительности?&lt;/li>
&lt;li>Вы используете Redis как кэш с TTL. Некоторые ключи не удаляются после истечения срока, и память заполняется. Как настроить политику вытеснения (eviction policy) и мониторинг заполнения памяти?&lt;/li>
&lt;li>При пиковой нагрузке Redis начинает отвечать с задержками, и вы видите в логах множество &lt;code>MISCONF&lt;/code> ошибок. Что они означают и как быстро стабилизировать работу?&lt;/li>
&lt;li>Настроили Redis Sentinel для автоматического переключения при отказе мастера. Во время тестирования отказоустойчивости обнаружили, что некоторые клиенты продолжают писать в старый мастер после его восстановления. Как обеспечить корректное переключение на стороне приложения?&lt;/li>
&lt;/ol>
&lt;h3 id="rabbitmq">RabbitMQ&lt;/h3>
&lt;ol start="122">
&lt;li>Очередь RabbitMQ переполнилась, и сообщения начали сбрасываться. Какие механизмы защиты (max length, TTL, dead letter exchange) вы настроите, чтобы избежать потери данных и сохранить производительность?&lt;/li>
&lt;li>Приложение жалуется, что сообщения доставляются с большой задержкой. Как с помощью плагина управления и мониторинга (очереди, каналы, подтверждения) определить узкое место?&lt;/li>
&lt;li>Вы обновили версию RabbitMQ, и после перезапуска кластер не смог собраться — ноды не видят друг друга. Какие шаги предпринять для восстановления кластера без потери сообщений?&lt;/li>
&lt;li>Разработчик хочет гарантировать, что сообщение будет обработано ровно один раз (exactly‑once). Объясните, почему в RabbitMQ это сложно достичь, и предложите архитектуру, приближенную к этому требованию.&lt;/li>
&lt;/ol>
&lt;h3 id="kafka">Kafka&lt;/h3>
&lt;ol start="126">
&lt;li>Потребитель (consumer) в группе перестал получать сообщения, хотя оффсеты не двигаются. Как с помощью &lt;code>kafka-consumer-groups&lt;/code> и проверки лага определить, живой ли потребитель и почему он застрял?&lt;/li>
&lt;li>При записи в Kafka продюсер получает ошибку &lt;code>NotLeaderForPartition&lt;/code>. Что это значит, и как клиент должен обрабатывать такую ситуацию?&lt;/li>
&lt;li>Вам нужно перенести данные из одной кластера Kafka в другой без остановки потоковой обработки. Какие инструменты (MirrorMaker, Kafka Connect) вы используете, и как обеспечите консистентность?&lt;/li>
&lt;li>Лаг потребителя (consumer lag) постоянно растёт, но процессорные мощности не утилизированы полностью. Как вы будете исследовать причину: проблемы с сетью, медленная обработка, неоптимальное количество партиций?&lt;/li>
&lt;/ol>
&lt;h2 id="культура-devops-и-взаимодействие-команд">Культура DevOps и взаимодействие команд&lt;/h2>
&lt;ol start="96">
&lt;li>Команда разработки не хочет брать на себя ответственность за эксплуатацию, предпочитая передавать задачи Ops. Как вы будете внедрять культуру &amp;ldquo;You build it, you run it&amp;rdquo;?&lt;/li>
&lt;li>Метрики DORA (частота деплоев, время восстановления) показывают ухудшение. Как провести ретроспективу и найти причины?&lt;/li>
&lt;li>Менеджеры просят гарантировать 100% uptime, но это невозможно. Как выстроить диалог о реалистичных SLI/SLO?&lt;/li>
&lt;li>Разработчики часто обращаются с просьбами предоставить доступ к продакшну для отладки. Как организовать процесс безопасного и аудитируемого доступа?&lt;/li>
&lt;li>Ваша команда внедрила новый инструмент (например, Kubernetes), но adoption идёт медленно. Как стимулировать обучение и переход?&lt;/li>
&lt;/ol></description></item><item><title>Создаем приватную сеть по красоте за пару минут в ZeroTier</title><link>https://devopsbrain.ru/posts/2026-03-05-sozdanie-privatnoy-seti-zerotier/</link><pubDate>Thu, 05 Mar 2026 09:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2026-03-05-sozdanie-privatnoy-seti-zerotier/</guid><description>&lt;p>Решил я недавно поиграться с Dokploy в рамках экспериментов n8n и AI-ассистента. Ну и пока настраивал, заодно решил показать вам ZeroTier. Это сервис, который позволяет объединить устройства через интернет так, будто они находятся в одной локальной сети.&lt;/p>
&lt;p>На самом деле очень крутая штука, тем более что в рамках free-тарифа можно добавить до 10 устройств. Таким образом у нас будет крутая overlay-сеть и мы можем объединить все наши VPS, ноутбуки, телефоны. И самое главное что будет не важно что они сидят за NAT.&lt;/p></description></item><item><title>Reverse proxy vs Load Balancer vs Api Gateway - в чем разница</title><link>https://devopsbrain.ru/posts/2026-02-25-reverse-proxy-vs-load-balancer-vs-api-gateway/</link><pubDate>Wed, 25 Feb 2026 09:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2026-02-25-reverse-proxy-vs-load-balancer-vs-api-gateway/</guid><description>&lt;p>&amp;ldquo;Reverse Proxy&amp;rdquo;, &amp;ldquo;Load Balancer&amp;rdquo; и &amp;ldquo;API Gateway&amp;rdquo; – давайте на примерах разберемся в чем разница с точки зрения реальной эксплуатации. Инструменты вроде Nginx, HAProxy или Traefik могут брать на себя разные роли в зависимости от того, как вы их настроите. Тот же Nginx может завести вас очень далеко. Но все же к выбору надо подходить исходя из требований к архитектуре. Давайте разбираться&lt;/p>
&lt;p>&lt;strong>Reverse Proxy&lt;/strong> cидит перед вашим бэкендом и скрывает его от мира. Зачем? Да потому что тогда вашему приложению придется заниматься тем, чем ему не надо бы заниматься. Например, терминация SSL, отдача статики, включение компрессии gzip и тд. Reverse Proxy берет эту &amp;ldquo;грязную работу&amp;rdquo; на себя.&lt;/p></description></item><item><title>Симулируем сети в GNS3. Часть 3 — Переходим на Cisco и VLAN</title><link>https://devopsbrain.ru/posts/2026-02-04-simuliruem-seti-v-gns-cisco-vlan/</link><pubDate>Wed, 04 Feb 2026 09:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2026-02-04-simuliruem-seti-v-gns-cisco-vlan/</guid><description>&lt;p>Привет,в этой серии мы продолжаем осваивать возможности GNS3 и изучать теорию сетей на практике.&lt;/p>
&lt;p>Предыдущие части:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://devopsbrain.ru/posts/2026-01-07-modelirovanie-seti-na-macos-ustanovka-i-nastroyka/">Симулируем сети в GNS3. Часть 1 - настройка под MacOS&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://devopsbrain.ru/posts/2026-01-20-simuliruem-seti-v-gns3-delaem-pervuyu-set/">Симулируем сети в GNS3. Часть 2 - делаем свою первую сеть&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Наша схема сети уже неплохая, но она плохо масштабируется. Для простоты понимания в чем проблема, - давайте представим что это сеть небольшого предприятия, в котором есть 3 здания: LAN1 - это 1-ое здание, LAN2 - второе и LAN3 - третье (ZONE1-3 соотвественно).&lt;/p></description></item><item><title>Симулируем сети в GNS3. Часть 2 - делаем свою первую сеть</title><link>https://devopsbrain.ru/posts/2026-01-20-simuliruem-seti-v-gns3-delaem-pervuyu-set/</link><pubDate>Tue, 20 Jan 2026 09:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2026-01-20-simuliruem-seti-v-gns3-delaem-pervuyu-set/</guid><description>&lt;p>Привет, в первой части мы разобрались как &lt;a href="https://devopsbrain.ru/posts/2026-01-07-modelirovanie-seti-na-macos-ustanovka-i-nastroyka/">заставить работать GNS3 под MacOS&lt;/a>.&lt;br>
Ну а в этой мы пройдем путь от создания &lt;strong>простейшей сети&lt;/strong> до построения &lt;strong>сегментированной инфраструктуры&lt;/strong> с политиками безопасности. Вы освоите не только базу, но и будете понимать логику построения безопасных и масштабируемых сетевых решений.&lt;/p>
&lt;h4 id="на-кого-расчитан-данный-материал">На кого расчитан данный материал:&lt;/h4>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Студентов IT-специальностей&lt;/strong>, которые прошли теорию сетей, но не работали с реальным оборудованием.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Начинающих администраторов и энтузиастов&lt;/strong>, которые хотят начать практиковаться в настройке сетей в безопасной виртуальной среде.&lt;/p></description></item><item><title>Симулируем сети в GNS3. Часть 1 - настройка под MacOS</title><link>https://devopsbrain.ru/posts/2026-01-07-modelirovanie-seti-na-macos-ustanovka-i-nastroyka/</link><pubDate>Wed, 07 Jan 2026 09:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2026-01-07-modelirovanie-seti-na-macos-ustanovka-i-nastroyka/</guid><description>&lt;p>Привет, мой читатель! Если ты всегда хотел не только читать про сети, но и ставить эксперименты, настраивать разное сетевое оборудование, прокачать свои навыки - то тебе точно нужен классный симулятор сети. И это … &lt;strong>GNS3&lt;/strong>.&lt;/p>
&lt;p>Не буду долго рассказывать почему тут “такие” параметры, а тут “другие”. Я просто собрал пошаговый план, который работает у меня под m-процессором. И, поверь, там есть своя специфика и неочевидных вещей, которые могу ввести в тупик даже опытных спецалистов. Ну а в следующих статьях частях мы с вами пошагово будем проектировать сети, увеличивая их сложность.&lt;/p></description></item><item><title>Bash-скрипт для полной диагностики Linux системы</title><link>https://devopsbrain.ru/posts/2025-12-26-bash-script-dlya-diagnostiki-linux-sistemy/</link><pubDate>Fri, 26 Dec 2025 10:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-12-26-bash-script-dlya-diagnostiki-linux-sistemy/</guid><description>&lt;p>Когда ты администрируешь несколько серверов, или просто хочешь быстро понять состояние системы - обычно приходится выполнять десяток команд, анализировать логи, смотреть на метрики. Но что если автоматизировать это всё одним скриптом?&lt;/p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/NdnKZ-P-oJA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;p>Сегодня я покажу вам универсальный bash-скрипт, который проводит полную диагностику Linux системы и формирует понятный отчет прямо в консоли. Скрипт работает на Ubuntu, Debian, CentOS, RHEL, Fedora, Arch и других дистрибутивах.&lt;/p></description></item><item><title>Чеклист по инфраструктуре для админов перед праздниками</title><link>https://devopsbrain.ru/posts/2025-12-25-checklist-dlya-admina-devops-sre-pered-prazdnikami/</link><pubDate>Thu, 25 Dec 2025 09:00:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-12-25-checklist-dlya-admina-devops-sre-pered-prazdnikami/</guid><description>&lt;p>Согласитесь, что встретить Новый год рядом с семьёй и друзьями - намного приятнее, чем сидеть за ноутбуком в 02:40 и с квадратными глазами разбираться, почему “что-то там легло”, а доступ к нужным секретам остался только у одного человека… который как раз в этот момент режет оливье и не слышит телефон.&lt;/p>
&lt;p>&lt;img src="images/image.jpg" alt="tmp">&lt;/p>
&lt;p>Ниже я делюсь своим чеклистом из 8 пунктов. Он помогает спокойно уйти в праздники и не проводить их в обнимку с ноутом. А после прочтения, в комментах, обязательно поделитесь что бы вы еще добавили.&lt;/p></description></item><item><title>Лучшие практики конфигурирования Kubernetes в 2025 - Часть 3: безопасность, логи, наблюдаемость и graceful shutdown</title><link>https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-3/</link><pubDate>Thu, 18 Dec 2025 13:43:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-3/</guid><description>&lt;p>Есть два подхода к продакшену: “потом прикрутим безопасность/метрики/грейсфул” и “почему оно снова умерло. Открываем логи и метрики и смотрим!”. Обычно команды быстро мигрируют от первого ко второму - через боль, но мигрируют.&lt;/p>
&lt;p>Эта часть про безопасность подов, сетевые политики, наблюдаемость (метрики/логи/трейсы), корректное завершение (SIGTERM, draining) и управление образами. Это набор лучших практик, который делает инциденты &lt;strong>диагностируемыми&lt;/strong> и &lt;strong>переживаемыми&lt;/strong> - даже когда всё идёт не по плану.&lt;/p>
&lt;p>&lt;!-- raw HTML omitted -->&lt;!-- raw HTML omitted -->&lt;/p></description></item><item><title>Лучшие практики конфигурирования Kubernetes в 2025 - Часть 2: Сервисы, метки, конфиги и лимиты</title><link>https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-2/</link><pubDate>Wed, 17 Dec 2025 13:42:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-2/</guid><description>&lt;p>&lt;strong>&lt;a href="https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-1/">← В предыдущей части&lt;/a>&lt;/strong> мы говорили про самые основы. Пришло время поговорить про сервисы, метки, конфиги и лимиты и секреты. Ведь это те самые места, где небольшая ошибка превращается в инцидент.&lt;/p>
&lt;p>&lt;img src="images/image.png" alt="Best Practice Kubernetes">&lt;/p>
&lt;p>&lt;!-- raw HTML omitted -->&lt;!-- raw HTML omitted -->&lt;/p>
&lt;h2 id="services-и-сеть">Services и сеть&lt;/h2>
&lt;h3 id="17-используйте-dns-для-service-discovery">17. Используйте DNS для Service Discovery&lt;/h3>
&lt;p>DNS даёт гибкость и устойчивость к изменениям IP/эндпойнтов.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># Обращайтесь к сервисам через DNS&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">http://my-service.my-namespace.svc.cluster.local&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">http://my-service.my-namespace &lt;/span> &lt;span style="color:#75715e"># Сокращённая форма&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ae81ff">http://my-service &lt;/span> &lt;span style="color:#75715e"># В пределах того же namespace&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="18-избегайте-hostport-и-hostnetwork">18. Избегайте hostPort и hostNetwork&lt;/h3>
&lt;p>HostNetwork/hostPort ограничивают планирование и расширяют поверхность атаки. Но есть и легитимные use cases в которых это допустимо: DaemonSet мониторинга, CNI plugins, некоторые ingress контроллеры&lt;/p></description></item><item><title>Лучшие практики конфигурирования Kubernetes в 2025 - Часть 1: Это база</title><link>https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-1/</link><pubDate>Wed, 10 Dec 2025 13:41:00 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-1/</guid><description>&lt;p>Kubernetes обычно выглядит дружелюбным ровно до того момента, пока вы не начнёте обновлять кластер или выкатывать изменения. И вот тогда внезапно выясняется, что &amp;ldquo;мелочи&amp;rdquo; в манифестах - не мелочи. В этой серии из 6 частей я соберу лучшие практики конфигурирования Kubernetes.&lt;/p>
&lt;p>&lt;img src="images/image.png" alt="Best Practice Kubernetes">&lt;/p>
&lt;p>В первой части будем говорить про фундамент: версии API, Git как источник истины, YAML и базовый набор привычек для развертывания workloads без “ну оно же вчера работало”. Это те вещи, которые дают самый быстрый эффект и чаще всего окупаются первым же стабильным релизом. А дальше - прикладная &amp;ldquo;эксплуатация по-взрослому&amp;rdquo;: сеть/метки/конфиги и ресурсы (часть 2), безопасность+наблюдаемость+graceful shutdown+образы (часть 3), масштабирование/хранилище/планирование и контейнерные паттерны (часть 4), GitOps/mesh/ingress/RBAC и отладка (часть 5), и финально про стоимость, политики, backup/DR, probes и troubleshooting (часть 6).&lt;/p></description></item><item><title>Как прокачать сетку между разными ЦОД за пару команд</title><link>https://devopsbrain.ru/posts/2025-09-21-bottleneck-bandwidth-and-round-trip-time/</link><pubDate>Sun, 21 Sep 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-09-21-bottleneck-bandwidth-and-round-trip-time/</guid><description>&lt;p>Сегодня поговорим как разогнать скорость передачи по сети на максимум всего за пару команд. В качестве примера представим, что у нас распределенная инфраструктура, которая живет в разных регионах. Также у нас есть какой то VPN между ЦОД-ами, который решает проблему связности ресурсов и безопасности. И есть требование: каждый час надо скачивать бекап на 50GB и разворачивать в другом регионе.&lt;/p>
&lt;p>И вот вы настроили свой cronjob, запустили его и пошли пить чай и брать следующую таску в работу. Через какое то время обнаруживаете что скорость во время скачивания бекапа серьезно проседает, ну и плюс периодически могут теряться пакеты, а RTT вообще 30ms. И вот бекап уже даже за пару часов не может скачаться.&lt;/p></description></item><item><title>CPU - всё что вы хотели знать, но стеснялись спросить</title><link>https://devopsbrain.ru/posts/2025-08-10-about-load-avarage-and-cpu-usage/</link><pubDate>Sun, 10 Aug 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-08-10-about-load-avarage-and-cpu-usage/</guid><description>&lt;p>Сегодня мы рассмотрим два ключевых компонента: CPU Usage (процент использования процессора) и Load Average (среднюю загрузку). Оказывается, что не все понимают и неверно интерпритируют данные от htop или glances о процессоре. Мы заглянем под капот htop и разберем, как именно он получает и обрабатывает данные о CPU. Но прежде чем мы начнем давайте сначала определимся что же такое тактовая частота процессора.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span> — Почему процессор меряет в тактах? 
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> — Потому что в «попугаях» уже занято.
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Тактовая частота - это количество тактов (циклов), которые процессор выполняет за 1 секунду. Такт — это «тик» процессорных часов. Тактовая частота (например, 3 ГГц) = 3 миллиарда «ударов» в секунду. Представьте, что CPU — это фабрика, где каждый рабочий (транзистор) выполняет свою часть задачи строго по сигналу метронома. 1 такт = 1 удар метронома.&lt;/p></description></item><item><title>Как я научил TeamCity говорить с ИИ через MCP, или История одного протокола</title><link>https://devopsbrain.ru/posts/2025-06-26-teamcity-mcp-server/</link><pubDate>Thu, 26 Jun 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-06-26-teamcity-mcp-server/</guid><description>&lt;p>&lt;em>Истина где то рядом, но если хочешь разобраться как оно работает - напиши программу.&lt;/em>&lt;/p>
&lt;hr>
&lt;p>Если вы здесь на пару минут, то тут будем говорить техническую реализацию &lt;strong>teamcity-mcp&lt;/strong>. Он превращает ваш TeamCity в AI-френдли ресурс через протокол Model Context Protocol. Теперь ваш ChatGPT или Claude может тригерить билды, читать логи и даже троллить вас за красные тесты. Всё это работает через JSON-RPC 2.0, потому что в 2024 году мы до сих пор используем технологии из нулевых, но теперь с ИИ.&lt;/p></description></item><item><title>Иллюзия приватности: как мы доверились ИИ без оглядки</title><link>https://devopsbrain.ru/posts/2025-05-20-ai-illusion-of-privacity/</link><pubDate>Tue, 20 May 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-05-20-ai-illusion-of-privacity/</guid><description>&lt;p>Кажется, ещё вчера искусственный интеллект был чем-то из фильмов и фантазий. А сегодня - он везде: в чатах, в рабочих инструментах, в личных помощниках. Мы удивительно легко впустили его в свою жизнь - с интересом, с восхищением, с доверием.&lt;/p>
&lt;p>Мы отправляем в ИИ-сервисы документы, пароли, переписки, исходный код. Мы делимся внутренними обсуждениями, стратегиями, личными вопросами. Как только видим громкую новость о появлении очередной программы или сервиса который должен упростить нам жизнь - бежим его ставить и без оглядки даем доступы до всего что новоустановленный тул может дотянуться.&lt;/p></description></item><item><title>Бесплатный сайт/блог/cv/wiki - закроем уже эту тему</title><link>https://devopsbrain.ru/posts/2025-05-01-besplatny-site/</link><pubDate>Thu, 01 May 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-05-01-besplatny-site/</guid><description>&lt;p>Как же меня бесят статьи в духе “Как всего за 139 рублей в месяц развернуть свой сайт-визитку на vps”. Какие 139 рублей за сайт-визитку, совсем уже стыд потеряли?! Давайте исправлять это недоразумение.&lt;/p>
&lt;p>В этой статье я вам пошагово расскажу и покажу как бесплатно разместить и вести ваш личный сайт(блог, cv, wiki). Вам даже отдельный домен не нужен (все будет “из коробки”), хотя в последнем шагом мы и его прикрутим. От вас нужны будут базовые знания git и просто уметь работать с markdown.&lt;/p></description></item><item><title>Обо мне</title><link>https://devopsbrain.ru/cv/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://devopsbrain.ru/cv/</guid><description>&lt;p>Привет, меня зовут Никита и я — инженер, который умеет слушать бизнес и говорит с ним на одном языке. Работаю на стыке DevOps/SRE, продуктовой инженерии и здравого смысла. Всегда работал только в продуктовых компаниях: запускал и развивал внутреннее IT, улучшал процессы, мониторил тысячи серваков, просыпался ночью от звонков &amp;ldquo;железной леди&amp;rdquo; и пьяным поднимал серваки на корпоративах.&lt;/p>
&lt;p>За плечами тысячи решенных задач, начиная от построения пайплайнов до миграции инфраструктур. Легко могу переключаться между задачами, не теряя контекста (это вообще мой козырь). Могу управлять командой, а могу не управлять и делать все сам. Могу написать приложение, а могу поресечить готовые решения. Могу автоматизировать, где больно. Понимаю, когда нужно оптимизировать и когда лучше не трогать. Могу настроить мониторинг так, чтобы &amp;ldquo;железная леди&amp;rdquo; в on-call звонила ночью только когда полный капец&amp;hellip;&lt;/p></description></item><item><title>Кольцо хеширования - объяснение</title><link>https://devopsbrain.ru/posts/2025-04-29-ring-hashing/</link><pubDate>Tue, 29 Apr 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-04-29-ring-hashing/</guid><description>&lt;p>Кольцо хеширования - это алгоритм распределения ключей между множеством узлов (например, серверов, кешей, шардов БД) таким образом, чтобы минимизировать количество перестановок при добавлении или удалении узлов. А интересен он тем, что этот принцип широко используется в системах с распределённым хранением данных, например, в DynamoDB, Cassandra, Riak, а также в Memcached.&lt;/p>
&lt;p>&lt;img src="images/image.jpg" alt="Image alt">&lt;/p>
&lt;h1 id="основные-термины">Основные термины&lt;/h1>
&lt;ul>
&lt;li>Хеш-пространство. Все возможные значения хеша (например, от 0 до 2³²−1 при использовании 32-битного хеш-функции) образуют кольцо - замкнутое пространство.&lt;/li>
&lt;li>Хеширование узлов. Каждый узел (сервер) получает одно или несколько значений в этом пространстве - они определяются с помощью хеш-функции от имени узла (например, hash(&amp;ldquo;cache1&amp;rdquo;)).&lt;/li>
&lt;li>Хеширование ключей. Каждый ключ (например, ID объекта) также хешируется и отображается на кольцо.&lt;/li>
&lt;li>Поиск узла для ключа. Ищется ближайший по часовой стрелке узел на кольце - он и будет ответственным за хранение данного ключа. Если не нашлось подходящего узла “вправо” - кольцо замыкается, и мы просто берём первый по кругу. Вот такая красивая логика.&lt;/li>
&lt;/ul>
&lt;h1 id="как-рассчитывается-позиция-узла">Как рассчитывается позиция узла&lt;/h1>
&lt;p>При добавлении нового узла, он перехватывает часть ключей у ближайших по кольцу узлов. Остальные остаются на месте. Таким образом изменения затрагивают только часть данных, а не все. Это повышает масштабируемость системы. При удалении узла аналогично - его ключи перераспределяются между оставшимися узлами, что также затрагивает только часть данных.&lt;/p></description></item><item><title>Pulkovo Flightboard Minecraft Plugin</title><link>https://devopsbrain.ru/posts/2025-03-27-pulkovo-flightboard/</link><pubDate>Thu, 27 Mar 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-03-27-pulkovo-flightboard/</guid><description>&lt;h2 id="мотивация">Мотивация&lt;/h2>
&lt;p>Дети увлеклись Minecraft, а мне было интересно попробовать написать плагин для Minecraft. Было решено сделать отображение табло перелетов. Источник данных - Аэропорт Пулково&lt;/p>
&lt;h2 id="описание">Описание&lt;/h2>
&lt;p>FlightBoard — это плагин для Minecraft, который создаёт голограмму с актуальными рейсами из аэропорта Пулково. Данные загружаются через API и обновляются автоматически.&lt;/p>
&lt;p>&lt;img src="images/image.png" alt="alt text">&lt;/p>
&lt;h2 id="функционал">Функционал&lt;/h2>
&lt;p>✈ Отображает список рейсов в виде голограммы (использует Decent Holograms).
🔄 Автоматически обновляет рейсы каждые N секунд (по умолчанию 60 сек).
🛠 Поддержка команд для перезагрузки конфига и обновления табло.
✨ Разные цвета для рейсов по расписанию и задержанных рейсов.&lt;/p></description></item><item><title>На что влияет evaluation_interval и for в алертах prometheus</title><link>https://devopsbrain.ru/posts/2025-02-26-evaluation_interval-and-for-in-prometheus/</link><pubDate>Wed, 26 Feb 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-02-26-evaluation_interval-and-for-in-prometheus/</guid><description>&lt;p>Если вы используете prometheus или victoria metrics для настройки алертов, то наверняка встречали функции анализа временных рядов. Их отличительной особенностью является то, что они на вход получают временной интервал ([X]).&lt;/p>
&lt;ul>
&lt;li>increase() — считает, на сколько увеличился счётчик.&lt;/li>
&lt;li>rate() — усреднённая скорость изменения в секунду.&lt;/li>
&lt;li>delta() — разница между начальным и конечным значением.&lt;/li>
&lt;li>deriv() — скорость изменения с учётом тренда.&lt;/li>
&lt;/ul>
&lt;p>Разберем на примере, где хотим получить все успешные заказы в окружении production.&lt;/p></description></item><item><title>Terraform Kubernetes Desktop Startkit</title><link>https://devopsbrain.ru/posts/2025-02-23-terraform-kubernetes-desktop-startkit/</link><pubDate>Sun, 23 Feb 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-02-23-terraform-kubernetes-desktop-startkit/</guid><description>&lt;p>Мои дети просто обожают играть в minecraft. Ну а я никогда не понимал смысла игры. Ходишь там что-то добываешь без конца и строишь, крафитишь, добываешь и так до бесконечности. Сейчас они обнаружили, что можно ставить моды. Иногда зовут меня смотреть, что у них там получается, а иногда зовут помочь с запуском модов. И тут я решил, что пора их с моими играми познакомить.&lt;/p>
&lt;p>&lt;img src="images/image.jpg" alt="Image alt">&lt;/p>
&lt;p>Вчера я предоложил им поиграть в Terraform. Они поискали и нашли что за игра в Steam &lt;a href="https://store.steampowered.com/app/347790/Terraform">https://store.steampowered.com/app/347790/Terraform&lt;/a>. Но как вы понимаете играли мы в совершенно другую игру. 🧌&lt;/p></description></item><item><title>Подружил metasploit и кubescape или хакаем автоматом</title><link>https://devopsbrain.ru/posts/2025-02-16-metasploit-kubescape/</link><pubDate>Sun, 16 Feb 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-02-16-metasploit-kubescape/</guid><description>&lt;p>Что-то скучный у меня сегодня вечер: жена уехала тусить с подругой, а дети сидят и играют в лего. Штош, тогда надо сделать что-то полезное, но не скучное. Будем писать хацкерский скрипт - это ацкий комбайн из kubescape(k8s) и metasploit.&lt;/p>
&lt;p>&lt;img src="images/image.png" alt="Image alt">&lt;/p>
&lt;p>Идея очень простая: сканим кластер k8s через kubescape, сохраняем результаты в json, дергаем оттуда CVE и ищем в metasploit. По итогу получаем список эксплойтов, которые можно заюзать в metasploit.&lt;/p></description></item><item><title>Настройка самоподписных валидных ssl-сертификатов в локальном k8s</title><link>https://devopsbrain.ru/posts/2025-02-14-valid-ssl-certs-in-local-k8s/</link><pubDate>Fri, 14 Feb 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-02-14-valid-ssl-certs-in-local-k8s/</guid><description>&lt;p>В данном гайде мы настроим автоматический выпуск “валидных” сертификатов в локальном kubernetes кластере. В качестве примера запустим приложение grafana.&lt;/p>
&lt;p>&lt;img src="images/image.jpg" alt="Image alt">&lt;/p>
&lt;p>Что будем делать:&lt;/p>
&lt;ol>
&lt;li>Развернем локально кластер локально. Установим MetalLB, cert-manager, ingress и поднимем тестовое приложение grafana.&lt;/li>
&lt;li>Настроим нашу систему так, чтобы она доверяла выпущенным в кубе сертификатам.&lt;/li>
&lt;li>Используем nip.io, чтобы не заморачиваться с hosts-файлом&lt;/li>
&lt;/ol>
&lt;h2 id="поднимаем-кластер">Поднимаем кластер&lt;/h2>
&lt;p>Тут совершенно нет никаких проблем, я буду использовать стандартный Docker Desktop для запуска. Ставим галочку в настройках Docker Desktop, что нам нужен куб и погнали дальше.&lt;/p></description></item><item><title>Как исправлять ошибки в Git, не оставляя улик</title><link>https://devopsbrain.ru/posts/2025-02-10-kak-ispravit-oshibki-v-git/</link><pubDate>Mon, 10 Feb 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-02-10-kak-ispravit-oshibki-v-git/</guid><description>&lt;p>Кто не сталкивался с коммитами вроде &amp;lsquo;Remove debug log&amp;rsquo;, &amp;lsquo;Fix&amp;rsquo; или &amp;lsquo;фикс фикса&amp;rsquo;? Такие коммиты как грязные носки под кроватью: их не видно, пока не придёт ревьюер с пристальным взглядом или, что еще хуже, потенциальный работодатель, решивший посмотреть на ваш github.&lt;/p>
&lt;p>К счастью, Git предлагает два супер-инструмента для того, чтобы история коммитов выглядела так, будто ты всегда знаешь, что делаешь: git commit &amp;ndash;fixup и git rebase &amp;ndash;autosquash.&lt;/p>
&lt;p>⚠️ Важно! Не вздумайте применять rebase в main или stable-ветках, если не хотите, чтобы ваши коллеги не сделали вам больно. Эти штуки нужны для приведения feature-ветки в божеский вид перед слиянием.&lt;/p></description></item><item><title>Как запустить публичный сайт на телефоне или экономим на спичках</title><link>https://devopsbrain.ru/posts/2025-02-05-kak-zapustit-site-na-telefone/</link><pubDate>Wed, 05 Feb 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-02-05-kak-zapustit-site-na-telefone/</guid><description>&lt;p>Сейчас научу плохому — будем поднимать наше веб-приложение на телефоне с https, dns, cloudflared туннелями и прочей красотой.&lt;/p>
&lt;p>Для этой цели я накидал приложение на go, которое определяет IP адрес, вычисляет город, отправляет запрос во внешний сервис и отдает страницу с данными о погоде в вашей локации. Я не стал упарываться - он просто нужен для демонстрации, исходники тут &lt;a href="https://github.com/itcaat/what-is-the-weather-now">https://github.com/itcaat/what-is-the-weather-now&lt;/a>.&lt;/p>
&lt;p>Что нам нужно:
1️⃣ Само веб-приложение.
2️⃣ Установленный UserLAnd &lt;a href="https://userland.tech/">https://userland.tech/&lt;/a> ( root не потребуется )
3️⃣ GitHub Actions чтобы собрать приложение.
4️⃣ Аккаунт на CloudFlare с нашим подключенным доменом — у меня будет devopsbrain.ru (бесплатный тариф подойдет)&lt;/p></description></item><item><title>Боремся с утечкой секретов в git</title><link>https://devopsbrain.ru/posts/2025-01-28-boremsya-s-utechkoy-sekretov-v-git/</link><pubDate>Tue, 28 Jan 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-01-28-boremsya-s-utechkoy-sekretov-v-git/</guid><description>&lt;p>Утечка секретов это всегда больно. Несу вам два решения, которые помогут обнаружить утекшие секреты и довольно легко интегрируются в cicd. (Методом pennis to nose интеграция в github actions займет минут 10 максимум).&lt;/p>
&lt;p>Trufflehog (&lt;a href="https://github.com/trufflesecurity/trufflehog">https://github.com/trufflesecurity/trufflehog&lt;/a>) и Gitleaks (&lt;a href="https://github.com/gitleaks/gitleaks">https://github.com/gitleaks/gitleaks&lt;/a>) - оба решения очень похожи по своей сути, отличие только в алгоритмах поиска. Ну и Trufflehog - он более универсален и может искать утечки:&lt;/p>
&lt;ul>
&lt;li>git / github&lt;/li>
&lt;li>docker&lt;/li>
&lt;li>filesystem (files and directories)&lt;/li>
&lt;li>gitlab / circleci / travisci / jenkins&lt;/li>
&lt;li>gcs / s3&lt;/li>
&lt;li>postman&lt;/li>
&lt;li>syslog&lt;/li>
&lt;li>elasticsearch&lt;/li>
&lt;/ul>
&lt;p>Я не смог придумать кейсов когда надо постоянно проверять всю историю и при интеграции этих решений (если только вы не работаете в банке =) ). Кажется, достаточно проверить репозиторий один раз и дальше уже навешивать проверку просто на пул-реквесты ( с условием что у вас есть branch protection ). Ну и бонусом можно настроить git-хуки.&lt;/p></description></item><item><title>Обзор ntfy - бесплатного и опенсорсного HTTP-сервиса для уведомлений</title><link>https://devopsbrain.ru/posts/2025-01-25-obzor-ntfy/</link><pubDate>Sat, 25 Jan 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-01-25-obzor-ntfy/</guid><description>&lt;p>Пока сидел и ждал ребенка с тренировки наткнулся на ntfy. Это простой бесплатный и опенсорсный HTTP-сервис для уведомлений. Он позволяет отправлять уведомления на ваш телефон через POST запрос.&lt;/p>
&lt;p>На самом деле прикольный сервис, особенно с учетом что его можно заселфхостить. Ставишь приложение, создаешь &amp;ldquo;топик&amp;rdquo;. И просто curl-ом шлешь запросик.&lt;/p>
&lt;p>&lt;img src="images/subscribe.jpg" alt="Image alt">&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -d &lt;span style="color:#e6db74">&amp;#34;Backup successful 😀&amp;#34;&lt;/span> ntfy.sh/devops-brain-test
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Несмотря на свою простоту, он имеет очень хорошую документацию с кучей примеров использования &lt;a href="https://docs.ntfy.sh/publish">https://docs.ntfy.sh/publish&lt;/a>. Я честно пока не придумал зачем мне это может понадобиться, с учетом того, что нет никаких проблем в telegram создать канал под уведомления и через API-ключ также засылать в телегу.&lt;/p></description></item><item><title>Обзор siyuan - система для личногоуправления знаниями</title><link>https://devopsbrain.ru/posts/2025-01-23-obzor-siyuan/</link><pubDate>Thu, 23 Jan 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-01-23-obzor-siyuan/</guid><description>&lt;p>Наткнулся вчера на решение для личного управления знаниями &lt;a href="https://github.com/siyuan-note/siyuan">https://github.com/siyuan-note/siyuan&lt;/a>. Думаю вот круто - 28000 звезд, написан на go и typescript, есть просто мощнейший редактор, есть расширения и API, интеграция с AI, есть готовые образы docker и активное коммьюнити.&lt;/p>
&lt;p>&lt;img src="images/siyuan01.jpg" alt="Image alt">&lt;/p>
&lt;p>Парни реально пишут крутое решение. Но есть пара минусов:&lt;/p>
&lt;ol>
&lt;li>Нельзя заводить пользователей. Те доступ в workspace тупо по ключу. Ну оно и понятно оно же для личного управления знаниями все же.&lt;/li>
&lt;li>SiYuan предоставляет большую часть функций бесплатно, даже для коммерческого использования. Однако есть платные возможности, которые доступны только членам Membership (платного тарифа). Например, синхронизация через облако.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="images/siyuan02.jpg" alt="Image alt">&lt;/p></description></item><item><title>Вредные советы начинающим специалистам в IT</title><link>https://devopsbrain.ru/posts/2025-01-20-vrednie-soveti-nachinayushim-it-specialistam/</link><pubDate>Mon, 20 Jan 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-01-20-vrednie-soveti-nachinayushim-it-specialistam/</guid><description>&lt;p>Идея написать вредные советы у меня давно витала в голове. Если вы опытный специалист, то я надеюсь вам понравится и вы вспомните где то себя. А если вы как раз в начале карьеры, я надеюсь вы сделаете выводы.&lt;/p>
&lt;p>&lt;img src="images/image.jpg" alt="alt text">&lt;/p>
&lt;ul>
&lt;li>Не читай документацию. Она только путает и отвлекает от настоящей работы — гугли ответы на форумах и копируй чужие решения с StackOverflow или GPT.&lt;/li>
&lt;li>Никогда не проси помощи у коллег. Покажи всем, что ты «волк-одиночка» и можешь сам во всем разобраться, даже если это будет стоить бизнесу денег.&lt;/li>
&lt;li>Постоянно проси помощи у коллег. Это же в их интересах, чтобы ты сделал задачу побыстрее, поэтому постоянно проси помощи. К тому же, коллегам это очень нравится - они так чувствуют, что они важны в компании. Поверь, они очень любят помогать.&lt;/li>
&lt;li>Специально переусложняй реализацию. Чем запутаннее твое решение, тем более высоко смогут оценить тебя коллеги. Ведь это покажет, что ты можешь реализовать “сложные” решения.&lt;/li>
&lt;li>Комментарии и осмысленные названия переменных не нужны. Тут итак все понятно, зачем тратить время на какую то ерунду. К тому же, тимлид и коллеги явно поопытнее и уж точно разберутся.&lt;/li>
&lt;li>Не трать время на тестирование своего решения. Вообще пусть тестирует тот кто поставил тебе задачу, это же им надо.&lt;/li>
&lt;li>Не используй системы контроля версий. Зачем усложнять себе жизнь Git? Просто сохраняй файлы с названиями project_final_v6_final2 (FINAL).zip. Просто потом их в чат можно скинуть автору задачи, он там сам разберется уже. Зато ничего лишнего не будет в архиве.&lt;/li>
&lt;li>Сразу делай в production окружении. Тестовые и локальные окружения только трата времени. Зачем что-то проверять локально, если можно сделать в проде тем самым быстро пофиксить проблему. Коллеги оценят твою скорость и может даже премию дадут.&lt;/li>
&lt;li>Забудь про резервное копирование. Бэкапы — удел тех, кто не уверен в том что делает. Но ты то совершенно точно все делаешь правильно.&lt;/li>
&lt;li>Пароли храни в текстовом файле. Парольные менеджеры это переусложнение на ровном месте. У тебя же стоит антивирус и ты не ставишь программы с левых сайтов. Так что тебя точно никто и никогда не взломает и вирус ты никакой не поймаешь. А в файле все удобно, все под рукой&lt;/li>
&lt;li>Игнорируй обратную связь. Да что они вообще понимают? Ты итак потратил целых 2 недели на решение, а им еще что-то не нравится. Пусть сами тогда делают. Так и скажи руководителю. Скорее всего тебе пойдут на встречу и доделывать будет уже кто то другой.&lt;/li>
&lt;li>Тратить время на свое обучение больше не нужно. Ты ведь уже итак специалист: закончил курсы, посмотрел пару уроков на YouTube, почитал несколько статей — достаточно. Все остальное на практике доберешь. Лучше все изучать сразу на практике без нудной теории. Вот когда коснется чего то, тогда и изучишь.&lt;/li>
&lt;li>Любые знания, не относящиеся к твоей текущей задаче, бесполезны. Мир меняется очень медленно, чтобы тратить время на расширение кругозора и знаний. Если надо будет что то изучить новое — твой руководитель сразу к тебе придет и скажет. Тогда и поизучаешь.&lt;/li>
&lt;li>Забудь о документировании кода и проектов. Всё держи в голове. Документацию придумали те, кому лень разбираться в чем то. Хороший специалист разберется и так в том, что ты написал.&lt;/li>
&lt;li>Не контролируй сроки. Можно не париться на счет сроков. Пусть повисит в in progress несколько недель без движения — никто не заметит. К тому же когда ты ее закроешь, руководство увидит сколько времени потрачено и поймет, что это сложная задача.&lt;/li>
&lt;li>Никому не говори, если где то увидел проблему в проекте. Поверь, не надо подсвечивать ни свои, ни чужие косяки. Во-первых, вдруг &amp;ldquo;это не баг&amp;rdquo; и тогда тебя просто выставят дураком. Во-вторых, могут заставить фиксить.&lt;/li>
&lt;li>И самое главное — скрывай, если накосячил. Никогда, никому не сообщай, что где то серьезно продолбался. Ведь ты явно потеряешь репутацию или (что еще хуже) за это могут сразу уволить. А это явно не входит в твои планы, тем более это может серьезно помешать тебе стать успешным ойтипшником.&lt;/li>
&lt;/ul></description></item><item><title>Как настроить Oh My Zsh</title><link>https://devopsbrain.ru/posts/2025-01-10-kak-nastroit-oh-my-zsh/</link><pubDate>Fri, 10 Jan 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-01-10-kak-nastroit-oh-my-zsh/</guid><description>&lt;p>Всем привет, я тут показывал недавно как сделать такую красоту котлеге и сразу записал небольшой гайд. Хотите такой же zsh на стеройдах? Без проблем!&lt;/p>
&lt;p>&lt;img src="images/image.jpg" alt="alt text">&lt;/p>
&lt;p>Будем юзать Oh My Zsh, который позволит нам получить:&lt;/p>
&lt;p>✨ Автодополнения команд (например, Docker).
⚡ Алиасы для сокращений (например, gcb – создание ветки).
🎨 Красивую кастомизацию с темами.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 1. Устанавливаем oh my zsh&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sh -c &lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#66d9ef">$(&lt;/span>curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh&lt;span style="color:#66d9ef">)&lt;/span>&lt;span style="color:#e6db74">&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 2. Устанавливаем шрифты&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git clone https://github.com/powerline/fonts.git --depth&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd fonts
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>./install.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cd ..
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>rm -rf fonts
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 3. Устанавливаем rvm-prompt, чтобы тема не плевала ошибку&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>curl -sSL https://get.rvm.io | bash
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># 4. Устанавливаем тему&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git clone https://github.com/consolemaverick/zsh2000.git
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ln -s &lt;span style="color:#66d9ef">$(&lt;/span>pwd&lt;span style="color:#66d9ef">)&lt;/span>/zsh2000/zsh2000.zsh-theme ~/.oh-my-zsh/themes/zsh2000.zsh-theme
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Теперь пропишем нужные плагины. Полный список всех плагинов есть по ссылке &lt;a href="https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins">https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins&lt;/a> c детальным описанием. В любом удобном редакторе открываем ~/.zshrc и прописываем параметры.&lt;/p></description></item><item><title>Мини обзор Keep - AI мониторинг</title><link>https://devopsbrain.ru/posts/2025-01-10-mini-obzor-keep/</link><pubDate>Fri, 10 Jan 2025 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-01-10-mini-obzor-keep/</guid><description>&lt;p>Мониторинг и алертинг - это база. Без них не может нормально ехать ни один продукт и ни один бизнес. Если говорить про IT, то чтобы иметь полную картину у вас должны быть:&lt;/p>
&lt;p>🟢 Infrastructure-related alerts - например, высокая утилизация CPU на ноде
🟢 Application-related alerts - например, прилка начала сыпать 500-ми ошибками
🟢 Business-related alerts - например, снижение конверсии&lt;/p>
&lt;p>✍️ Давайте разберем простой кейс, вам прилетел алерт на CPU от ноды с postre в проде. Дежурный инженер открывает борду в grafana ( или zabbix ), смотрит какие то общие показатели. Потом подключается к базе, смотрит какие запросы сейчас обрабатываются, читает логи и тд. И принимает дальнейшие решения по тому в кого эскалировать проблему или решает вопрос сам. И вот этот порядок действий практически всегда один и тот же.&lt;/p></description></item><item><title>Another Redis Benchmark</title><link>https://devopsbrain.ru/posts/2024-11-21-another-redis-benchmark/</link><pubDate>Mon, 18 Nov 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-11-21-another-redis-benchmark/</guid><description>&lt;h2 id="мотивация">Мотивация&lt;/h2>
&lt;p>Мне понадобилось протестировать работу redis с windows хоста, а готовых инструментов не было. Так появился Another Redis Benchmark&lt;/p>
&lt;h2 id="описание">Описание&lt;/h2>
&lt;p>Исходники: &lt;a href="https://github.com/itcaat/another-redis-benchmark">https://github.com/itcaat/another-redis-benchmark&lt;/a>&lt;/p>
&lt;p>&lt;code>Another Redis Benchmark&lt;/code> — это утилита для тестирования производительности Redis, написанная на языке программирования Go. Программа имитирует реальную нагрузку на Redis-сервер, выполняя различные операции (SET, GET, DEL) и измеряя их производительность.&lt;/p>
&lt;p>Программа может быть полезна для:&lt;/p>
&lt;ul>
&lt;li>Оценки производительности Redis-сервера&lt;/li>
&lt;li>Тестирования конфигурации Redis под нагрузкой&lt;/li>
&lt;li>Сравнения производительности различных конфигураций и версий Redis&lt;/li>
&lt;li>Определения оптимальных настроек для конкретных сценариев использования Redis&lt;/li>
&lt;/ul>
&lt;h2 id="основные-возможности">Основные возможности&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Имитация реальной нагрузки&lt;/strong> — программа создает несколько параллельных клиентов, которые одновременно выполняют операции с Redis.&lt;/p></description></item><item><title>Нагрузочное тестирование с помощью grafana k6</title><link>https://devopsbrain.ru/posts/2024-11-18-nagruzochnoe-testirovanie-s-pomoshyu-grafana-k6/</link><pubDate>Mon, 18 Nov 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-11-18-nagruzochnoe-testirovanie-s-pomoshyu-grafana-k6/</guid><description>&lt;p>Давайте познакомимся с таким инструментом как grafana k6. С помощью него вы можете производительность ваших приложений и тестирование хаоса (Это метод, используемый для проверки устойчивости программных систем путем внесения непредвиденных сбоев или сбоев. Целью хаотического тестирования является выявление слабых мест и повышение устойчивости приложения)&lt;/p>
&lt;p>Основной фичей инструмента является то, что вы можете писать довольно сложные сценарии тестирования используя javascript. k6 легко запускается из командной строки и хорошо интегрируется в CI/CD пайплайны, а также эмулирует работу виртуальных пользователей.&lt;/p></description></item><item><title>Opensource свернул не туда?</title><link>https://devopsbrain.ru/posts/2024-11-08-opensource-svernul-ne-tuda/</link><pubDate>Fri, 08 Nov 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-11-08-opensource-svernul-ne-tuda/</guid><description>&lt;p>Сначала Линукс Торвальдс выпилил код российских разработчиков из ядра. Теперь вот тут отклонили PR за русскость &lt;a href="https://github.com/reactor/reactor-core/pull/3897#issuecomment-2460103961">https://github.com/reactor/reactor-core/pull/3897#issuecomment-2460103961&lt;/a>.&lt;/p>
&lt;p>&lt;img src="images/image.jpg" alt="alt text">&lt;/p>
&lt;p>А сегодня я орнул. Короче, есть такая прикольная штука для доставки миграций в базы bytebase зовется. Штука реально крутая, работать можно практически с любой субд, есть gitops, разные флоу, роли права доступа и тд. Ну красота в-общем. Но есть один косячек который глаз мозолит - поскольку у нас оно запущено в кубе, то конечно хочется что бы контейнер bytebase отдавал в логи в json. Пошел я искать как можно это реализовать и нашел кусочек недокументированного кода, где задать вывод лога в json можно сделать через параметр saas. Причем параметр влияет еще на кучу всего в приложении и юзается для их клаудовой версии. Ну думаю &amp;ldquo;непорядок&amp;rdquo; - надо запилить пулик и вынести все в отдельный параметр.&lt;/p></description></item><item><title>Proxmox Service Discovery</title><link>https://devopsbrain.ru/posts/2024-10-22-proxmox-service-disovery/</link><pubDate>Tue, 22 Oct 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-10-22-proxmox-service-disovery/</guid><description>&lt;p>Proxmox Service Discovery - это инструмент для автоматического обнаружения сервисов в кластере Proxmox, работающий на основе DNS. Приложение опрашивает API Proxmox для получения информации о виртуальных машинах и узлах кластера, а затем создает DNS-записи типа &lt;code>A&lt;/code>, которые позволяют другим сервисам находить виртуальные машины по их именам или тегам.&lt;/p>
&lt;p>&lt;a href="https://github.com/itcaat/proxmox-service-discovery">https://github.com/itcaat/proxmox-service-discovery&lt;/a>&lt;/p>
&lt;h2 id="мотивация">Мотивация&lt;/h2>
&lt;p>Изучение golang, работа с API Proxmox. Решить проблему отсутствия service discovery в Proxmox Cluster.&lt;/p>
&lt;h2 id="принцип-работы">Принцип работы&lt;/h2>
&lt;p>&lt;img src="images/image.png" alt="alt text">&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Приложение подключается к API Proxmox с использованием токена аутентификации&lt;/p></description></item><item><title>Давайте все будем писать посмортемы</title><link>https://devopsbrain.ru/posts/2024-10-18-davayte-vse-pisat-postmortemi/</link><pubDate>Fri, 18 Oct 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-10-18-davayte-vse-pisat-postmortemi/</guid><description>&lt;p>Недавно в twitter спрашивал о том, есть ли практика ведения посмортемов. Оказалось, что не такой большой процент заботит эта история. И были даже кейсы, когда просили лида внедрить такую практику, но лид сливался. 😱 Давайте сегодня чуть ближе познакомимся с этим очень важным и нужный инструмент.&lt;/p>
&lt;p>Постмортем ([лат.] «после смерти») — это анализ инцидента, произошедшего в системе, и его последствий. В сфере DevOps/SRE равно как и в разработке продукта постмортемы играют ключевую роль для повышения устойчивости и надежности инфраструктуры. Выделим несколько ключевых моментов о постмортемах и как сделать их полезным инструментом для роста вашей команды.&lt;/p></description></item><item><title>Как рисовать схемы без боли и страданий в excalidraw</title><link>https://devopsbrain.ru/posts/2024-10-17-kak-risovat-schemi-bez-boli/</link><pubDate>Thu, 17 Oct 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-10-17-kak-risovat-schemi-bez-boli/</guid><description>&lt;p>Вечная боль - нарисовать схему работы какой то прилы. Идешь в какой нибудь draw.io. Рисуешь там, экспортишь в файл, сохраняешь в репку. Подключаешь в readme.md. И так по кругу, если что то поменялось. Но оказывается уже есть решение 🦸‍♂️&lt;/p>
&lt;p>Топовая находка этой недели - &lt;a href="https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor">https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor&lt;/a>&lt;/p>
&lt;p>Экстеншен позволяет рисовать офигенские схемки (точно также как на их сайте &lt;a href="https://excalidraw.com/)">https://excalidraw.com/)&lt;/a>, но прям в vs code.&lt;/p>
&lt;p>Как это работает:
1️⃣ Создаем файлик с именем .excalidraw.png в конце (Например в scheme.excalidraw.png)
2️⃣ Внутри vscode открывается редактор
3️⃣ Рисуем/редачим схемку и сохраняем.
4️⃣ В результате это будет обычная png, которая откроется любым просмотрщиком.&lt;/p></description></item><item><title>Github unhappy approve - chrome extension</title><link>https://devopsbrain.ru/posts/2024-10-11-github-unhappy-approve/</link><pubDate>Fri, 11 Oct 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-10-11-github-unhappy-approve/</guid><description>&lt;p>Привет, всем отличной пятницы. Старайтесь сегодня ничего важного не деплоить, а то выходные длинные и хочется хотя бы прожить спокойно и без инцидентов.&lt;/p>
&lt;p>Скинули давеча в чатик такой твит:&lt;/p>
&lt;blockquote class="twitter-tweet">&lt;p lang="en" dir="ltr">New GitHub feature just dropped... 😍 &lt;a href="https://t.co/gXPxRpbBtX">pic.twitter.com/gXPxRpbBtX&lt;/a>&lt;/p>&amp;mdash; Seb Vidal (@SebJVidal) &lt;a href="https://twitter.com/SebJVidal/status/1839694113249096052?ref_src=twsrc%5Etfw">September 27, 2024&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>


&lt;p>И я подумал, реально же бывает сидишь такой и смотришь на pull request и понимаешь что это кусок говна. С одной стороны ты никогда бы такое и не апрувнул, а с другой бизнес требует катить быстрее. Вздох - выдох, закатываешь глаза и ты ставишь апрув. Просто фильм ужасов.&lt;/p></description></item><item><title>Обзор macpine</title><link>https://devopsbrain.ru/posts/2024-08-02-obzor-macpine/</link><pubDate>Fri, 02 Aug 2024 12:13:36 +0530</pubDate><guid>https://devopsbrain.ru/posts/2024-08-02-obzor-macpine/</guid><description>&lt;p>Сегодня поделились интересным проектом для маководов, которым очень нужны VM-ки на Linux, а пользоваться UI совершенно не хочется. Cпециально для вас решение на мульйон баксов, которое позволит за пару минут натянуть эту историю в консоль и наслаждаться.&lt;/p>
&lt;p>🎯️️ Итак, погнали. Поднимем всю эту историю, внутрь воткнем классический nginx и выкинем порт на хостовую машину&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># установим через macpine команды `alpine` и зависимость `qemu`&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>brew install macpine
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># запустим вмку на 10 гигов диска, 4 cpu и 2 гига памяти с именем lol-kek и выкинем SSH порт 2221 на локальный хост. А также дополнительно прокинем 8081 c хоста на 80 порт вм &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>alpine launch -d 10G -c &lt;span style="color:#ae81ff">4&lt;/span> -m &lt;span style="color:#ae81ff">2048&lt;/span> -n lol-kek -s &lt;span style="color:#ae81ff">2221&lt;/span> -p8081:80
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ну и все можно подключаться и проводить эксперименты. Даже порт не надо указывать, он подхватится автоматом&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>alpine ssh lol-kek
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># ставим nginx&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>apk update &lt;span style="color:#f92672">&amp;amp;&amp;amp;&lt;/span> apk add nginx
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># стартуем nginx &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>/etc/init.d/nginx start
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Ну и как бы и все! Открываем браузер http://localhost:8081 и у нас готова изолировнная вм за пару минут ( привет vagrant ).&lt;/p></description></item><item><title>iops-perf - тула для тестирования дисковой подсистемы</title><link>https://devopsbrain.ru/posts/2025-01-08-iops-perf/</link><pubDate>Wed, 31 Jul 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2025-01-08-iops-perf/</guid><description>&lt;h2 id="мотивация">Мотивация&lt;/h2>
&lt;p>Хотлось написать аналог тулов для измерения производительности дисковой подсистемы.&lt;/p>
&lt;p>&lt;img src="images/image.png" alt="alt text">&lt;/p>
&lt;h2 id="описание">Описание&lt;/h2>
&lt;p>Эта простая утилита, написанная на языке Go, предназначена для измерения производительности ввода-вывода дисковой подсистемы. Инструмент симулирует различные нагрузки ввода-вывода путем чтения и записи тестового файла.&lt;/p>
&lt;h2 id="основные-возможности">Основные возможности&lt;/h2>
&lt;ul>
&lt;li>Поддержка последовательных и случайных паттернов ввода-вывода&lt;/li>
&lt;li>Настраиваемые параметры тестирования:
&lt;ul>
&lt;li>Размер файла&lt;/li>
&lt;li>Размер блока данных&lt;/li>
&lt;li>Продолжительность теста&lt;/li>
&lt;li>Параллелизм (количество потоков)&lt;/li>
&lt;li>Режим ввода-вывода: чтение, запись или смешанный&lt;/li>
&lt;li>Соотношение операций записи к чтению в смешанном режиме&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Вывод ключевых метрик производительности:
&lt;ul>
&lt;li>Общее количество операций&lt;/li>
&lt;li>Общий объем обработанных данных&lt;/li>
&lt;li>Пропускная способность в МБ/с&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h2 id="принцип-работы">Принцип работы&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Подготовка файла&lt;/strong>:&lt;/p></description></item><item><title>Suggest News Telegram Bot</title><link>https://devopsbrain.ru/posts/2024-07-31-telegram-bot-suggest-news/</link><pubDate>Wed, 31 Jul 2024 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2024-07-31-telegram-bot-suggest-news/</guid><description>&lt;h2 id="мотивация">Мотивация&lt;/h2>
&lt;p>Мне нужен был очень простой бот в канал &lt;a href="https://t.me/devopsbrain">https://t.me/devopsbrain&lt;/a>, который бы пересылал сообщения от пользователей.&lt;/p>
&lt;h2 id="описание">Описание&lt;/h2>
&lt;p>Бот пересылает сообщения вам в личку, чтобы напрямую не давать свой контакт. Есть рейтлимиты от спамеров. Флоу очень простой - даем ссылку на бота и все что пользователи пишут - летит к вам в личку с дополнительной информацией о том кто это и когда написал.&lt;/p>
&lt;p>Исходники: &lt;a href="https://github.com/itcaat/telegram-bot-suggest-news">https://github.com/itcaat/telegram-bot-suggest-news&lt;/a>&lt;/p></description></item><item><title>TheVerbs - приложение для изучения фразовых глаголов</title><link>https://devopsbrain.ru/posts/2019-11-08-the-verbs-izuchaem-frazovie-glagoli/</link><pubDate>Fri, 08 Nov 2019 13:39:35 +0300</pubDate><guid>https://devopsbrain.ru/posts/2019-11-08-the-verbs-izuchaem-frazovie-glagoli/</guid><description>&lt;h2 id="мотивация">Мотивация&lt;/h2>
&lt;p>Хотелось потрогать технологии PWA и заондно проверить флоу публикации приложения в Android PlayMarket.&lt;/p>
&lt;p>Google Play Market: &lt;a href="https://play.google.com/store/apps/details?id=ru.voiplab.theverbs">https://play.google.com/store/apps/details?id=ru.voiplab.theverbs&lt;/a>&lt;/p>
&lt;h2 id="описание">Описание&lt;/h2>
&lt;p>TheVerbs - это прогрессивное веб-приложение (PWA), созданное для изучения английских фразовых глаголов. Приложение разработано с использованием технологии Blazor WebAssembly и предлагает интерактивный способ запоминать фразовые глаголы через систему карточек.&lt;/p>
&lt;p>С помощью простой и удобной системы карточек вы можете:&lt;/p>
&lt;ul>
&lt;li>Изучать фразовые глаголы с определениями и примерами использования&lt;/li>
&lt;li>Проверять свои знания с помощью тестов&lt;/li>
&lt;li>Отслеживать свой прогресс в изучении&lt;/li>
&lt;li>Сохранять любимые фразовые глаголы в избранное для повторения&lt;/li>
&lt;li>Использовать приложение без интернета благодаря поддержке офлайн-режима&lt;/li>
&lt;li>Заниматься на любом устройстве - компьютере, планшете или смартфоне&lt;/li>
&lt;/ul>
&lt;p>Приложение работает как в браузере, так и может быть установлено на ваше устройство как обычное приложение, обеспечивая удобный доступ в любой момент. Начните изучать английские фразовые глаголы уже сегодня и улучшите свои навыки владения английским языком!&lt;/p></description></item><item><title>Архив статей</title><link>https://devopsbrain.ru/archives/</link><pubDate>Tue, 28 May 2019 00:00:00 +0000</pubDate><guid>https://devopsbrain.ru/archives/</guid><description/></item><item><title>AMI Launcher for Asterisk</title><link>https://devopsbrain.ru/posts/2018-03-04-ami-launcher-for-asterisk/</link><pubDate>Sun, 04 Mar 2018 12:13:36 +0530</pubDate><guid>https://devopsbrain.ru/posts/2018-03-04-ami-launcher-for-asterisk/</guid><description>&lt;p>AMI-Launcher - это Windows-приложение, которое выполняет внешние приложения или открывает веб-страницы в ответ на события звонков Asterisk PBX. Оно подключается к Asterisk Manager Interface (AMI) для отслеживания активности звонков и может запускать различные приложения на разных этапах звонка.&lt;/p>
&lt;h2 id="возможности">Возможности&lt;/h2>
&lt;ul>
&lt;li>Мониторинг активности звонков через Asterisk Manager Interface (AMI)&lt;/li>
&lt;li>Запуск приложений или открытие веб-страниц на разных этапах звонка:
&lt;ul>
&lt;li>До ответа на звонок&lt;/li>
&lt;li>После ответа на звонок&lt;/li>
&lt;li>После завершения звонка&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Поддержка передачи информации о вызывающем абоненте (Caller ID) в запускаемые приложения&lt;/li>
&lt;li>Значок в области уведомлений с индикаторами состояния&lt;/li>
&lt;li>Сопоставление номеров телефонов по шаблону&lt;/li>
&lt;/ul></description></item><item><title>Hugo shortcodes</title><link>https://devopsbrain.ru/posts/1985-06-03-hugo-shortcodes/</link><pubDate>Mon, 03 Jun 1985 12:13:36 +0530</pubDate><guid>https://devopsbrain.ru/posts/1985-06-03-hugo-shortcodes/</guid><description>&lt;h2 id="images">Images&lt;/h2>
&lt;figure>&lt;img src="https://images.unsplash.com/photo-1560032779-0a8809186efd?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=1350&amp;amp;q=80">&lt;figcaption>
 &lt;h4>Dave Herring&lt;/h4>
 &lt;/figcaption>
&lt;/figure>

&lt;figure>&lt;img src="https://images.unsplash.com/photo-1560032779-0a8809186efd?ixlib=rb-1.2.1&amp;amp;ixid=eyJhcHBfaWQiOjEyMDd9&amp;amp;auto=format&amp;amp;fit=crop&amp;amp;w=500&amp;amp;q=80">&lt;figcaption>
 &lt;h4>Dave Herring&lt;/h4>
 &lt;/figcaption>
&lt;/figure>

&lt;h2 id="youtube-video">Youtube video&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/w7Ft2ymGmfc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="tweet">Tweet&lt;/h2>
&lt;blockquote class="twitter-tweet">&lt;p lang="ru" dir="ltr">А помните был ICQ? Один лайк и я запилю небольшой тред о взлете и падении этого легендарного мессанджера. &lt;a href="https://t.co/qTmdKn0ZDZ">pic.twitter.com/qTmdKn0ZDZ&lt;/a>&lt;/p>&amp;mdash; IT Cat ✈️ (@itcaat) &lt;a href="https://twitter.com/itcaat/status/1916024789803663641?ref_src=twsrc%5Etfw">April 26, 2025&lt;/a>&lt;/blockquote>
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8">&lt;/script>


&lt;h2 id="vimeo">Vimeo&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe src="https://player.vimeo.com/video/146022717" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="vimeo video" webkitallowfullscreen mozallowfullscreen allowfullscreen>&lt;/iframe>
&lt;/div>
&lt;h2 id="instagram">Instagram&lt;/h2>
&lt;blockquote
 class="instagram-media"
 data-instgrm-captioned
 data-instgrm-permalink="https://www.instagram.com/p/BWNjjyYFxVx"
 data-instgrm-version="14"
 style="
 background: #fff;
 border: 0;
 border-radius: 3px;
 box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.5), 0 1px 10px 0 rgba(0, 0, 0, 0.15);
 margin: 1px;
 max-width: 540px;
 min-width: 326px;
 padding: 0;
 width: 99.375%;
 width: -webkit-calc(100% - 2px);
 width: calc(100% - 2px);
 "
 >
 &lt;div style="padding: 16px">
 &lt;a
 href="https://www.instagram.com/p/BWNjjyYFxVx"
 style="
 background: #ffffff;
 line-height: 0;
 padding: 0 0;
 text-align: center;
 text-decoration: none;
 width: 100%;
 "
 target="_blank"
 >
 &lt;div style="display: flex; flex-direction: row; align-items: center">
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 flex-grow: 0;
 height: 40px;
 margin-right: 14px;
 width: 40px;
 "
 >&lt;/div>
 &lt;div
 style="
 display: flex;
 flex-direction: column;
 flex-grow: 1;
 justify-content: center;
 "
 >
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 margin-bottom: 6px;
 width: 100px;
 "
 >&lt;/div>
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 width: 60px;
 "
 >&lt;/div>
 &lt;/div>
 &lt;/div>
 &lt;div style="padding: 19% 0">&lt;/div>
 &lt;div
 style="display: block; height: 50px; margin: 0 auto 12px; width: 50px"
 >
 &lt;svg
 width="50px"
 height="50px"
 viewBox="0 0 60 60"
 version="1.1"
 xmlns="https://www.w3.org/2000/svg"
 xmlns:xlink="https://www.w3.org/1999/xlink"
 >
 &lt;g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 &lt;g transform="translate(-511.000000, -20.000000)" fill="#000000">
 &lt;g>
 &lt;path
 d="M556.869,30.41 C554.814,30.41 553.148,32.076 553.148,34.131 C553.148,36.186 554.814,37.852 556.869,37.852 C558.924,37.852 560.59,36.186 560.59,34.131 C560.59,32.076 558.924,30.41 556.869,30.41 M541,60.657 C535.114,60.657 530.342,55.887 530.342,50 C530.342,44.114 535.114,39.342 541,39.342 C546.887,39.342 551.658,44.114 551.658,50 C551.658,55.887 546.887,60.657 541,60.657 M541,33.886 C532.1,33.886 524.886,41.1 524.886,50 C524.886,58.899 532.1,66.113 541,66.113 C549.9,66.113 557.115,58.899 557.115,50 C557.115,41.1 549.9,33.886 541,33.886 M565.378,62.101 C565.244,65.022 564.756,66.606 564.346,67.663 C563.803,69.06 563.154,70.057 562.106,71.106 C561.058,72.155 560.06,72.803 558.662,73.347 C557.607,73.757 556.021,74.244 553.102,74.378 C549.944,74.521 548.997,74.552 541,74.552 C533.003,74.552 532.056,74.521 528.898,74.378 C525.979,74.244 524.393,73.757 523.338,73.347 C521.94,72.803 520.942,72.155 519.894,71.106 C518.846,70.057 518.197,69.06 517.654,67.663 C517.244,66.606 516.755,65.022 516.623,62.101 C516.479,58.943 516.448,57.996 516.448,50 C516.448,42.003 516.479,41.056 516.623,37.899 C516.755,34.978 517.244,33.391 517.654,32.338 C518.197,30.938 518.846,29.942 519.894,28.894 C520.942,27.846 521.94,27.196 523.338,26.654 C524.393,26.244 525.979,25.756 528.898,25.623 C532.057,25.479 533.004,25.448 541,25.448 C548.997,25.448 549.943,25.479 553.102,25.623 C556.021,25.756 557.607,26.244 558.662,26.654 C560.06,27.196 561.058,27.846 562.106,28.894 C563.154,29.942 563.803,30.938 564.346,32.338 C564.756,33.391 565.244,34.978 565.378,37.899 C565.522,41.056 565.552,42.003 565.552,50 C565.552,57.996 565.522,58.943 565.378,62.101 M570.82,37.631 C570.674,34.438 570.167,32.258 569.425,30.349 C568.659,28.377 567.633,26.702 565.965,25.035 C564.297,23.368 562.623,22.342 560.652,21.575 C558.743,20.834 556.562,20.326 553.369,20.18 C550.169,20.033 549.148,20 541,20 C532.853,20 531.831,20.033 528.631,20.18 C525.438,20.326 523.257,20.834 521.349,21.575 C519.376,22.342 517.703,23.368 516.035,25.035 C514.368,26.702 513.342,28.377 512.574,30.349 C511.834,32.258 511.326,34.438 511.181,37.631 C511.035,40.831 511,41.851 511,50 C511,58.147 511.035,59.17 511.181,62.369 C511.326,65.562 511.834,67.743 512.574,69.651 C513.342,71.625 514.368,73.296 516.035,74.965 C517.703,76.634 519.376,77.658 521.349,78.425 C523.257,79.167 525.438,79.673 528.631,79.82 C531.831,79.965 532.853,80.001 541,80.001 C549.148,80.001 550.169,79.965 553.369,79.82 C556.562,79.673 558.743,79.167 560.652,78.425 C562.623,77.658 564.297,76.634 565.965,74.965 C567.633,73.296 568.659,71.625 569.425,69.651 C570.167,67.743 570.674,65.562 570.82,62.369 C570.966,59.17 571,58.147 571,50 C571,41.851 570.966,40.831 570.82,37.631"
 >&lt;/path>
 &lt;/g>
 &lt;/g>
 &lt;/g>
 &lt;/svg>
 &lt;/div>
 &lt;div style="padding-top: 8px">
 &lt;div
 style="
 color: #3897f0;
 font-family: Arial, sans-serif;
 font-size: 14px;
 font-style: normal;
 font-weight: 550;
 line-height: 18px;
 "
 >
 View this post on Instagram
 &lt;/div>
 &lt;/div>
 &lt;div style="padding: 12.5% 0">&lt;/div>
 &lt;div
 style="
 display: flex;
 flex-direction: row;
 margin-bottom: 14px;
 align-items: center;
 "
 >
 &lt;div>
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 height: 12.5px;
 width: 12.5px;
 transform: translateX(0px) translateY(7px);
 "
 >&lt;/div>
 &lt;div
 style="
 background-color: #f4f4f4;
 height: 12.5px;
 transform: rotate(-45deg) translateX(3px) translateY(1px);
 width: 12.5px;
 flex-grow: 0;
 margin-right: 14px;
 margin-left: 2px;
 "
 >&lt;/div>
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 height: 12.5px;
 width: 12.5px;
 transform: translateX(9px) translateY(-18px);
 "
 >&lt;/div>
 &lt;/div>
 &lt;div style="margin-left: 8px">
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 50%;
 flex-grow: 0;
 height: 20px;
 width: 20px;
 "
 >&lt;/div>
 &lt;div
 style="
 width: 0;
 height: 0;
 border-top: 2px solid transparent;
 border-left: 6px solid #f4f4f4;
 border-bottom: 2px solid transparent;
 transform: translateX(16px) translateY(-4px) rotate(30deg);
 "
 >&lt;/div>
 &lt;/div>
 &lt;div style="margin-left: auto">
 &lt;div
 style="
 width: 0px;
 border-top: 8px solid #f4f4f4;
 border-right: 8px solid transparent;
 transform: translateY(16px);
 "
 >&lt;/div>
 &lt;div
 style="
 background-color: #f4f4f4;
 flex-grow: 0;
 height: 12px;
 width: 16px;
 transform: translateY(-4px);
 "
 >&lt;/div>
 &lt;div
 style="
 width: 0;
 height: 0;
 border-top: 8px solid #f4f4f4;
 border-left: 8px solid transparent;
 transform: translateY(-4px) translateX(8px);
 "
 >&lt;/div>
 &lt;/div>
 &lt;/div>
 &lt;div
 style="
 display: flex;
 flex-direction: column;
 flex-grow: 1;
 justify-content: center;
 margin-bottom: 24px;
 "
 >
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 margin-bottom: 6px;
 width: 224px;
 "
 >&lt;/div>
 &lt;div
 style="
 background-color: #f4f4f4;
 border-radius: 4px;
 flex-grow: 0;
 height: 14px;
 width: 144px;
 "
 >&lt;/div>&lt;/div
 >&lt;/a>
 &lt;/div>
 &lt;/blockquote>&lt;script async src="https://www.instagram.com/embed.js">&lt;/script>
&lt;h2 id="callouts">Callouts&lt;/h2>
&lt;h3 id="original">Original&lt;/h3>

&lt;div class='callout callout-' style=''>
 &lt;div class="callout-inner">
 
 💡 Original callout.
 
 &lt;/div>
&lt;/div>

&lt;h3 id="alert">Alert&lt;/h3>

&lt;div class='callout callout-alert' style=''>
 &lt;div class="callout-inner">
 
 🚨 &lt;u>Alert&lt;/u>
 &lt;br />
 This is an alert callout.
 
 &lt;/div>
&lt;/div>

&lt;h3 id="custom">Custom&lt;/h3>

&lt;div class='callout callout-custom' style='background-color: transparent; border: 3px solid #d340e0;'>
 &lt;div class="callout-inner">
 
 ⚡️ &lt;u>Custom callout&lt;/u>
 &lt;br />
 This is custom text for a custom callout.
 
 &lt;/div>
&lt;/div>

&lt;h3 id="tip">Tip&lt;/h3>

&lt;div class='callout callout-tip' style=''>
 &lt;div class="callout-inner">
 
 🔎 &lt;u>Tip&lt;/u>
 &lt;br />
 This is a tip callout.
 
 &lt;/div>
&lt;/div>

&lt;h3 id="warning">Warning&lt;/h3>

&lt;div class='callout callout-warning' style=''>
 &lt;div class="callout-inner">
 
 ⚠️ &lt;u>Warning&lt;/u>
 &lt;br />
 This is a warning callout.
 
 &lt;/div>
&lt;/div></description></item><item><title>Авторский Telegram-канал DevOps/SRE, который работает с реальным продакшеном</title><link>https://devopsbrain.ru/landing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devopsbrain.ru/landing/</guid><description>&lt;p>DevOps/SRE с практическим опытом работы с highload-продакшеном и живыми пользователями.&lt;/p>
&lt;p>Работает на стыке инженерии и бизнеса, разбирая инфраструктуру, инциденты и архитектурные решения без теории ради теории.&lt;/p>
&lt;p>Пишет и делится опытом в авторском Telegram-канале DevOps Brain.&lt;/p>
&lt;p>&lt;a href="https://t.me/+0hYC3SRJETA3ZWMy">Читать телеграм-канал&lt;/a>&lt;/p>
&lt;h3 id="еще-в-канале-подробно-рассказывается">Еще в канале подробно рассказывается&lt;/h3>
&lt;ul>
&lt;li>Как принимать технические решения, не отрываясь от реальности бизнеса&lt;/li>
&lt;li>Почему инфраструктура ломается даже при «правильной» архитектуре&lt;/li>
&lt;li>Как находить корень проблем, а не лечить симптомы&lt;/li>
&lt;li>Где заканчивается автоматизация и начинается здравый смысл&lt;/li>
&lt;/ul>
&lt;ul>
&lt;li>даю &lt;strong>бесплатно&lt;/strong> консультации на тему как &lt;strong>войти в АЙТИ&lt;/strong>, а иногда наоборот &lt;strong>отговариваю входить&lt;/strong> 🔥&lt;/li>
&lt;/ul>
&lt;p>Переходи и забирай знания, которые автор получил за 20 лет работы в продуктовых IT-проектах 👇&lt;/p></description></item><item><title>Проекты</title><link>https://devopsbrain.ru/projects/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://devopsbrain.ru/projects/</guid><description/></item></channel></rss>