Обновить
217.61

DevOps *

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

Сначала показывать
Порог рейтинга

IMPulse - Open Source менеджмент инцидентов. Freeze, Jira, ChatOps

Прошло достаточно времени с прошлой публикации: мы добавили много нового и хотим поделиться этим и нашими планами.

Из нового

  • У нас появился механизм Freeze, который выполняет пару задач. С одной стороны он отключает уведомления по инциденту на некоторое время, например на выходные. С другой - исключает создание таких же инцидентов на время "заморозки". Этот функционал похож на Silence Alertmanager'а.

  • Появилась интеграция с системой трекинга задач, Jira.

  • Теперь есть возможность просматривать закрытые (архивные) инциденты.

  • Добавлены метрики.

  • IMPulse теперь можно запускать в нескольких экземплярах. В случае недоступности основного (primary) инстанса, работу подхватит запасной (standby).

  • Webhook'и стали ещё мощнее. Теперь с их помощью можно очень гибко формировать JSON для отправки в любую сторонюю систему.

  • Появилась интеграция с алертами из Grafana.

  • IMPulse научился перечитывать (reload) конфигурацию без полной перезагрузки. Также вы можете добавить проверку конфигурации в CI/CD перед её применением.

  • В UI теперь есть индикатор online / offline, чтобы понимать, актуальная ли сейчас информацию на экране. К слову, несмотря на внешнюю простоту, UI очень гибок: умеет фильтровать инциденты по лейблам (в качестве фильтров можно использовать regex'ы), можно сортировать инциденты по нескольким столбцам, а также выделять цветом интересующие данные.

  • В случае заполнения диска, IMPulse теперь продолжит работать. Обновления по инцидентам будут храниться в оперативной памяти пока не появится место на диске. Настройте алерты на ERROR логи, чтобы вовремя среагировать.

Планы

В первой статье я уже упоминал, что мы считаем крайне важным для всех, кто работает с инцидентами, иметь общий контекст. Многие решения при проектировании принимались, исходя из этого. Сейчас можно констатировать, что ChatOps стал основой IMPulse и дальнешее движение будет под этим знаменем. Мы будем глубже интегрироваться с мессенджерами, чтобы команде дежурных / devops'ов не нужно было переходить в UI. Да, обязательно останутся задачи, которые не решить в рамках мессенджера, но мы постараемся минимизировать их количество.

Здесь часть из наших планов на ближайшие пару месяцев:

  • добавить работу с группами в Slack и Mattermost;

  • добавить в UI механизм аутентификации;

  • перенести кнопки для работы с инцидентами в UI;

  • реализовать механизм подавления инцидентов на основе правил по аналогии с Inhibition в Prometheus. Если согласно правилам инцидент становится дочерним, то уведомления по нему прекращаются пока не будет решена основная проблема. Это позволит уменьшить количество активности по инцидентам.

По поводу других новшест мы пока сохраним интригу!

Критика и советы

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

Оставайтесь с нами в Telegram - мы используем его для общения с русским сообществом, следите за обновлениями в GitHub. Мы продолжаем!

Предыдущие публикации

Теги:
-1
Комментарии0

Новогодняя задача: помогите Тирексу поздравить коллег

Условие

Программист Тирекс написал праздничное веб-приложение с обратным отсчетом до Нового года и хочет поздравить им всех коллег. Приложение уже собрано: в директории web находятся готовые статические артефакты (HTML, JavaScript и изображения). У Тирекса есть TLS-сертификат и приватный ключ, и он хочет, чтобы приложение работало по HTTPS.

Задача

Нужно упаковать приложение в Docker-контейнер, чтобы его можно было легко запускать на любом сервере, и сделать доступным из интернета. Времени у Тирекса осталось совсем немного!

Создайте конфигурацию nginx, которая:

  • слушает порт 80 и выполняет 301-редирект на HTTPS (https://$host$request_uri);

  • слушает порт 443 с включенным SSL;

  • использует сертификат /etc/nginx/ssl/cert.pem и ключ /etc/nginx/ssl/key.pem;

  • отдает статические файлы из /usr/share/nginx/html по пути /.

Напишите Dockerfile, который:

  • копирует в  контейнер конфигурацию nginx и артефакты приложения

  • создает пустую директорию /etc/nginx/ssl (для монтирования сертификатов при запуске);

  • использует легкий образ (например, nginx:alpine).

При запуске контейнера должны быть опубликованы порты 80 и 443.

Бонусная задача

Добавьте docker-compose.yml файл, чтобы запускать приложение одной короткой командой из папки с сертификатами.

Предлагайте варианты решения в комментариях. А посмотреть правильный ответ можно в Академии Selectel.

Теги:
+5
Комментарии2

Философия IT-собеседований: взгляд разработчика и DevOps-инженера

Привет, Хабр! Мой пост носит дискуссионный характер. В веб-разработке, администрировании и DevOps я уже 17 лет. Долгое время работал «на себя», оказывая помощь клиентам, с которыми выстроены надёжные взаимоотношения, но текущие реалии рынка подтолкнули к поиску работы по ТК, об этом я и хочу поговорить.

Обо мне: 40 лет, из которых 17 лет в коммерческой разработке. Прошел долгий путь как в fullstack-разработке (web), так и в создании embedded-решений (каршеринг), администрировании и DevOps.

Раньше мой процесс найма редко выходил за рамки одного интервью. Сейчас же я регулярно сталкиваюсь с многоступенчатыми отказами, иногда даже на этапе HR-скрининга. Этот контраст заставил меня задуматься: что делает найм эффективным, а что превращает его в фарс? Решил систематизировать свои наблюдения и поделиться тем, что в современных собеседованиях кажется здравым, а что — откровенно лишним.

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

  1. Диалог на равных.
    Мое лучшее интервью: техлид не мучил теорией, а предложил обсудить реальную дилемму, которую он решает в данный момент (внедрение NoSQL-хранилища ради одного специфичного сервиса, т.е. доп. точка отказа vs производительность). Без таймера и стресса мы искали решение. Итог — оффер и годы отличной работы.

  2. Проверка логики, а не памяти.
    Люблю кейсы в духе: «Вот дано А, почему происходит Б?». Из банального: может ли Вася из другого города достучаться до вашего локального IP? Это показывает понимание базы лучше любого теста.

  3. Ценность универсальных знаний.
    Универсальные знания долгое время позволяли быстро находить решение практически любой проблемы от хардверной, до нарушения самых элементарных паттернов проектирования в коде и эффективно их устранять. Мне нравятся задачи, где проблема может быть скрыта на любом уровне и нравятся клиенты, понимающие, как я могу снять их головную боль обеспечив работоспособность ПО в любой среде и условиях.

А теперь я хочу описать то, от чего меня бомбит. Это факторы которые будут отпугивать меня вплоть до момента, когда будет нечего кушать и я буду вынужден прогнуться под выгодное предложение.

  1. Лайвкодинг.
    В 40 лет написание кода для меня — процесс интимный... хотя я практикую парное программирование в реальной команде и это мне нравится, но в предвкушении собеседований иногда хочется "психануть" и на предложение выбрать время для лайвокдинга сказать — "предлагаю парное программирование с одним из ваших специалистов, ведь для меня тоже важно, с кем я буду вести разработку". (Не пробовал так отвечать, но попробую, как только выдастся случай).

  2. Вакансии-обманки.
    Зачем заманивать стеком DevOps (Linux, Nginx, Ansible, Terraform, Puppet, Docker, Kubernetes, MySQL, PostgreSQL, Elasticsearch, Logstash, Kibana, Zabbix), если по факту сообщаете, что ничего этого не будет, а ищите классического сисадмина 9-18? — Давайте адкеватный запрос, а не тратьте время.

  3. Терминологическая каша. Сложно отвечать экспертно, когда интервьюер путает CI и OCI или Redis и Rabbit. Если нет погружения в контекст, конструктивного диалога не выйдет. Готовиться к собеседованию должен не только соискатель, но и тот, кто нанимает.

  4. Отсутствие пунктуальности.
    Для меня было шоком, что фаундер может просто не явиться на собседование, или рекретер забывает о диалоге и назначенной встрече. У вас там всё нормально?) Хотя рекрутер мало чем отличается от агента недвижимости, но фаундер забывающий про собеседование для меня персонаж странный.

  5. Узкая специализация.
    Раньше, как мне кажется, ценилась универсальность, способность разработчика понимать инфраструктуру, а инженера/админа — код. Сегодня индустрия уходит в жесткую сегментацию, видимо, для более точного просчёта рисков. А я считаю, что именно универсальность — это страховка проекта от того, что решение будет принято в вакууме одного стека, без учета общей картины.

Теги:
+7
Комментарии2

Запуск GitLab Runner в Yandex Cloud Serverless Containers

Я Павел Елисеев, старший разработчик в команде Serverless в Yandex Cloud. Мы реализовали сценарий использования сервиса — Serverless GitLab Runner. В посте покажу архитектуру и поделюсь кодом решения.

GitLab Runner — агент, выполняющий задачи (jobs) из CI/CD‑пайплайнов GitLab. Он получает инструкции от GitLab, запускает сборку, тесты или деплой в нужной среде и передаёт результат обратно.

Раннер работает в разных окружениях:

  • на общих серверах GitLab (shared runners);

  • на выделенных VM;

  • в K8s‑кластере.

В первом варианте репозитории должны размещаться на gitlab.com. В случае Managed GitLab или self‑hosted GitLab развёртывание выполняется самостоятельно.

Для shared‑раннеров free‑tier ограничен 400 мин./мес. Учёт идёт по формуле (duration × price-factor), так что число доступных минут зависит от используемого типа раннера. А за пределами лимита нужна привязка не российской банковской карты.

Serverless‑сценарии пытались реализовать на Cloud Functions, что требовало отдельной VM и сложной конфигурации. А мы хотели объединить плюсы serverless‑модели с CI‑задачами:

  • оплата за время

  • масштабирование за секунды

  • изоляция выполнения

  • отсутствие инфраструктурной рутины

Архитектура

GitLab Runner работает по модели pull: запускает процесс, устанавливающий long‑polling‑соединение с GitLab API, и ожидает появления задач.

Пришла задача — раннер выбирает executor:

  • shell — job выполняется в текущем окружении

  • docker — под job создаётся отдельный контейнер со всеми зависимостями

Эта модель плохо подходит для serverless‑окружения, где нельзя держать постоянно активный процесс.

Для перехода на push‑модель используем GitLab Webhooks — HTTP‑уведомления о событиях. С появлением задач GitLab отправляет вебхук в Serverless Container, который:

  • запускает раннер;

  • получает информацию о задаче;

  • выполняет её и возвращает результат в GitLab.

Так, выполнение задачи инициируется событием, а не постоянным опросом API.

Для упрощённого развёртывания есть лёгкий образ раннера с поддержкой docker-executor, размещённый в Container Registry. Раннер автоматически загружает и запускает контейнер, указанный в конфигурации job. Секреты для аутентификации в GitLab API хранятся в Lockbox.
Для упрощённого развёртывания есть лёгкий образ раннера с поддержкой docker-executor, размещённый в Container Registry. Раннер автоматически загружает и запускает контейнер, указанный в конфигурации job. Секреты для аутентификации в GitLab API хранятся в Lockbox.

GitLab требует от обработчика вебхуков быстрого ответа без ошибки. А выполнение задачи может занимать часы. Поэтому вебхуки обрабатываются асинхронно:

  1. GitLab отправляет вебхук.

  2. Платформа проверяет авторизацию и сразу отвечает 202 Accepted.

  3. Обработка выполняется асинхронно в фоне.

Платформа решает, запускать ли новый экземпляр контейнера. Когда job завершается, контейнер остаётся активным какое‑то время, чтобы обработать вызовы без cold‑start.

GitLab не отправляет событие «создание job», поэтому раннер сперва проверяет, есть ли задачи со статусом pending.

Для docker‑executor требуется dockerd. Инициализация демона и подготовка окружения выполняются 1 раз при старте контейнера. Если job найдётся, запускается эфемерный раннер, исполняющий ровно 1 задачу.

Раннер загружает docker‑образ, выполняет команды, передаёт результат обратно через GitLab API.

Используемые возможности Serverless Containers

  1. Эфемерные диски до 10 ГБ на контейнер

  2. Асинхронный запуск контейнеров

  3. Таймаут выполнения до 1 часа

  4. Docker внутри Serverless Containers. Это не Docker‑in‑Docker: внутри serverless‑контейнера jobs исполняются без отдельного демона Docker, но с аналогичной логикой. Примеры есть в исходном коде.

Важные особенности serverless‑подхода

  • Эфемерность: кеш между вызовами отсутствует. Для хранения артефактов используйте Object Storage или свои базовые образы.

  • Загрузка образов: выполняется при каждом запуске. Рекомендуем использовать оптимизированные образы и близкий реестр (Cloud Registry), а при критичных требованиях к скорости старта — перейти на shell‑executor, собрав образ с установленным раннером и нужными зависимостями.

  • Ограничение времени: не более 1 часа. Для длинных задач разделите пайплайн на этапы с промежуточным сохранением результатов.

  • Ограничение по диску: до 10 ГБ.

Сценарий Serverless GitLab Runner позволяет выполнять CI/CD‑задачи GitLab, оплачивая лишь время выполнения job. Serverless Containers дают возможности для CI‑нагрузок: асинхронные вызовы, часовой таймаут, эфемерный диск и поддержку docker‑executor внутри контейнера.

Теги:
+17
Комментарии0

Друзья, классная новость! Мы с коллегами из GitVerse закончили разработку интеграции! 

Теперь в Gramax можно подключить GitVerse в качестве хранилища. Работает в лучшем виде: клонирование, синхронизация, коммит, пуш — все как и должно быть ✨

Это была масштабная и интересная работа: мы вместе анализировали API, чтобы получилось максимально удобно. Потому будем очень рады увидеть ваши плюсики!

Gramax — Open Source-платформа для работы с документацией в подходе Docs as Code. GitVerse — AI-first платформа для работы с кодом.

Теги:
0
Комментарии0

Небольшое дополнение к статье про Raspberry Pi

Недавно я написал статью про небольшой домашний стенд на Raspberry Pi и Orange Pi: Tailscale, Ansible, Nginx и базовую автоматизацию.
В процессе чтения комментариев решил сделать несколько улучшений. Особенно благодарен комментариям от @Tony-Sol

Первое, что сделал — убрал root из inventory.

ansible_user=root Не надо так, лучше создать отдельного пользователя


На обеих машинах завёл отдельного пользователя ansible и команды на хосте:

sudo adduser ansible

sudo usermod -aG sudo ansible

echo 'ansible ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/ansible

sudo chmod 440 /etc/sudoers.d/ansible

2. Создание роли

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


Теперь создал роль и подключил ее в основной плейбук:

  • tasks / handlers / templates разнесены по каталогам;

  • apt заменён на package;

  • state: latestpresent;

  • become используется только там, где реально нужен;

  • проверка конфига вынесена в handler через nginx -t.

Отдельно напишу вещь, на которой споткнулся:
host_vars/<имя>.yml работает только если имя совпадает с inventory_hostname.
У меня хост назывался orange, а файл был pi2.yml — из-за этого Jinja-шаблоны молча брали дефолты.

3. ansible.cfg — мелкие, но полезные настройки

Добавил минимальный ansible.cfg в проект:

  • roles_path=./roles;

  • gathering=explicit (факты включаю только там, где нужны);

  • небольшие SSH-настройки для стабильности.

vault_password_file имеет смысл добавлять только когда реально используется vault, иначе Ansible начинает ругаться.

4. Добавил на Raspberry Pi Мониторинг: VictoriaMetrics + Grafana

Мониторинг вынес на более мощную Raspberry Pi, а Orange Pi оставил агентом:

  • VictoriaMetrics + Grafana в Docker Compose;

  • node_exporter на обоих устройствах;

  • сбор метрик через static targets.

В итоге стенд стал аккуратнее.

Если интересно — базовая архитектура и исходная версия описаны в предыдущей статье.

Теги:
-1
Комментарии0

Привет, Хабр! Тем, кому регулярно приходится заглядывать в etcd — будь то QA, поддержка или разработчики — хорошо знакома ситуация, когда нужно разобраться с неожиданным состоянием сервиса, проверить конфиги или найти застрявший лок. И каждый раз всё сводится к одному: копировать ключ, запускать etcdctl get, читать многострочный JSON в терминале, ошибаться в пути… и в какой-то момент понимаешь, что это однообразие выматывает больше, чем сама проблема.

Поэтому наш коллега из Хайстекс сделал небольшой TUI-инструмент, который заметно упрощает работу с etcd и делает её куда дружелюбнее для тех, кто каждый день копается в окружениях. Он снимает рутину etcdctl, даёт привычную “каталожную” навигацию, подсвечивает скрытые _-ключи, позволяет комфортно открывать большие конфиги и помогает разбираться с локами, которые любят появляться в самых неожиданных местах.

Если вы в QA, поддержке или просто часто работаете с etcd, этот инструмент легко сэкономит вам время и нервы.

Статью можно прочитать здесь.

Теги:
Рейтинг0
Комментарии0

Уровень загрузки ресурсов (Percentage Resource Utilization)

Уровень загрузки ресурсов помогает быстро понять, насколько действительно используются выделенные мощности. Это один из самых простых и при этом самых рабочих способов найти неоптимальности в инфраструктуре. Компании начинают применять его ещё до формального внедрения FinOps, просто потому что здравый смысл подсказывает: если сервис использует 5% ресурсов, есть повод что-то менять.

Мы смотрим на три базовых показателя. Это CPU, память и диск. Этого достаточно, чтобы увидеть общую картину. Да, в инфраструктуре есть и другие ресурсы, например трафик, но для первичной диагностики хватает именно этих трёх.

Как считается

➖  CPU: использованные ядро-часы / количество выделенных ядер

➖  Память: фактическое потребление в гигабайтах / выделенный объём

➖  Хранилище: используемые GB / выделенное пространство

Что даёт этот анализ

Когда компания оценивает уровень загрузки, она перестаёт работать на предположениях и начинает принимать решения на фактах. На практике это чаще всего приводит к трём сценариям.

  1. Команда отказывается от ресурсных объектов, если загрузка держится на уровне нескольких %.

  2. Команда объединяет инфраструктуру. Например, три виртуальные машины загружены по 20% каждая, их сводят в одну, а две отключают.

  3. Команда корректирует конфигурацию. Это классический rightsizing, когда сервису просто уменьшают объём ресурсов, потому что реальная нагрузка намного ниже.

Это базовый навык, с которого начинается оптимизация в любой компании. Он одинаково полезен и в публичных облаках и в частных инфраструктурах. И независимо от уровня зрелости, компании, которые работают с фактической загрузкой, быстрее находят резервы, снижают расходы и точнее планируют будущие потребности. (Источник: FinOps Foundation).

Есть что рассказать? Станьте голосом комьюнити и делитесь с участниками своими кейсами в сообществе.

Теги:
Рейтинг0
Комментарии0

Уже в следующий вторник — развернем Kubernetes-кластер за 15 минут

2 декабря в 11:00 по мск подключайтесь к next-next-next инсталляции кластера из GUI.

После нее пройдемся и по другим обновлениям релиза «Штурвал 2.12»:

  • Изменение UI создания кластера: статусная модель и контроллер управления кластерами.

  • Развертывание на OpenStack с использованием нативных балансеров и сертификатов Let's Encrypt.

  • Поддержка Cinder CSI и Ubuntu 24.04.

Вебинар будет интересен DevOps-инженерам и архитекторам, разработчикам, специалистам служб эксплуатации.

Регистрация

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Яндекс.Облако легло вместе с половиной интернета

Не бойтесь, все под контролем
Не бойтесь, все под контролем

Если во вторник утром сервисы Яндекса работали у вас через раз, знайте, что вы такой не один. Мы в Практиках FinOps тоже смотрели на ошибку 504 и думали, что это у нас что-то сломалось. А оказалось, это ru-central-1b упал. Поэтому полетело все, что там крутилось: Аптека.ру, КИОН, ФНС и много кто еще.

К обеду все починили. Только вот Яндекс такой не один. Последние недели облачные провайдеры падают один за другим как доминошки. То AWS накроется, то Azure, то Cloudlfare. То есть, по сути, даже неважно, где вы хоститесь: cloud-native компании накрывает независимо от географии.

На бумаге аптайм в 99,95%, обещанный провайдерами, выглядит очень привлекательно, но на практике оказывается так, что даже одна упавшая зона может положить десятки сервисов. Причем происходит это, как правило, именно в самый неудобный момент как у Яндекса: утро понедельника, пиковая нагрузка, куча клиентов. И тут бац — лежим. Тут волей-неволей задумаешься о том, чтобы уйти в гибрид.

Да и почему бы, собственно, нет? Гибридная инфраструктура сейчас – это отнюдь не перестраховка параноиков, а более чем здравый подход, который позволяет разместить все самые критичные сервисы на собственных серверах. Упала зона — половина продолжает работать. А если FinOps применим к гибриду не хуже, чем к облаку, оснований отказываться от него фактически и не остается.

Есть что рассказать? Станьте голосом комьюнити и делитесь с участниками своими кейсами в сообществе. Там много интересного.

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии1

Как настроить очереди задач в Redis

Автоматизация очередей задач — типовая задача для IT-разработчиков и DevOps-инженеров, которые работают с распределенными системами.

Подготовили пошаговую инструкцию, как реализовать очереди в Redis тремя способами: Pub/Sub для событий «здесь и сейчас», List для классического FIFO и Streams — с историей сообщений и группами потребителей. Внутри инструкции — как подготовить окружение, написать издателя и подписчика на Python, работать с last_id и блокирующим чтением.

Подробности — в базе знаний Рег.облака.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

⚡️ITFB Group запускает KODA — платформу для объективной оценки эффективности разработки

Мы представили KODA — собственную платформу, которая показывает, как на самом деле работает команда разработки. Не по ощущениям и не по субъективным отчётам, а на основе данных из всех инструментов инженеров: репозиториев, таск-трекеров, CI/CD, баз знаний и систем тестирования.

🔥 За первые 3 квартала внутреннего использования мы увеличили производительность команд на 30%, сократили количество переделок на 35% и ускорили code review на 40%.

💻 KODA объединяет инженерные метрики, ИИ-модули и аналитику, чтобы дать руководителям полную картину разработки — прозрачную, измеримую и безопасную. Все данные остаются внутри компании.

Наталья Романова, директор по развитию ITFB Group:
«Мы создавали KODA как инженеры для инженеров. Но в итоге получили инструмент, который одинаково важен и для бизнеса: он переводит работу разработки в язык цифр, прозрачности и управляемости».

📎 По оценкам Gartner, к 2027 году подобные системы станут стандартом для половины компаний мира. Российский рынок только начинает этот путь — и KODA становится одним из первых решений такого уровня.

Подробнее о KODA — на сайте ITFB Group.

Теги:
Рейтинг0
Комментарии0

Вебинар про мониторинг в Deckhouse Kubernetes Platform: от архитектуры до расследования инцидентов

В эту пятницу, 28 ноября в 12:00, разберём мониторинг в DKP на реальных кейсах. 

Внутри вебинара:

  • концепции мониторинга DKP и чем они отличаются от стандартных подходов;

  • как мультитенантность и веб-интерфейс делают работу проще;

  • практические примеры расследования и локализации инцидентов с готовыми инструментами.

Спикер — Владимир Гурьянов, технический директор продуктового направления Observability. 

Регистрируйтесь и подключайтесь к эфиру. Будет интересно тем, кто уже использует DKP или только присматривается к ней. Покажем, что платформа умеет больше, чем вы думаете. Особенно в части мониторинга.

Теги:
Всего голосов 4: ↑2 и ↓2+3
Комментарии0

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

4 раунда за 2 недели собеседований → оффер в пятницу → отказ в понедельник.
Причина?
Мой чертов LinkedIn, который я не обновлял пару лет.

Все любят истории успеха 🙃
Но вот вам история НЕ-успеха - и при этом моя собственная.

За последние 2 недели прошёл:
🟢 HR-интервью
🟢 Техническое интервью (жёсткое, но честное)
🟢 Интервью с командой
🟢 Интервью с CPO
🟢 Получил оффер. Подтвердили, что всё ок.

В пятницу вечером в почте лежал «Welcome aboard».
Я, честно - обрадовался. Уже mentally onboarded. И самое !главное! крутая команда, крутые задачи впереди, возможность строить инфраструктуру с нуля и возможность топить в ИБ (реальную а не бумажную) - ну восторг жеж. Да я уже запланировал фаст-вины на первые 30 дней!

А в понедельник приходит письмо:
«СТО принял решение не двигаться дальше. Ваш опыт в резюме не соответствует тому, что в LinkedIn».

Что?! Какого?!
LinkedIn, который я не вёл несколько лет?
Площадка, которую большинство инженеров обновляет раз в эпоху?

Я объяснил, что могу подтвердить опыт трудовой, рекомендациями, стеками проектов, GitLab’ами, CI/CD пайплайнами - чем угодно.
Ответ:
«Решение финальное».

И вот честно - я не злюсь. (да что уж там, бесился первые пол часа)
Но вся эта ситуация подсветила кое-что важное:
Нужно делать то, что приведет напрямую к приему на работу, я повторил всю теорию, прошелся по практике - а надо было резюме пилить.

*Мой личный инсайт* В эпоху, когда DevOps пишет IAC, придумал собственный термин, что карьера тоже - Career As a Code, и её надо поддерживать.

Так что да: обновляю LinkedIn.
Да: выкладываю эту историю.
Да: остаюсь мотивирован строить системы, усиливать DevOps и DevSecOps, выстраивать безопасность, SRE, процессы, документирование, хаос-устойчивость - всё то, в чём я реально силён.

Может я единственный, кто еще живет по старому, а все остальные давно проснулись в матрице?

Как часто вы обновляете ЛН?

Теги:
Всего голосов 9: ↑6 и ↓3+4
Комментарии9

Как научить команды экономить IT-бюджет: 3 рабочих совета

Упс…
Упс…

Хотите довести финдира до нервного срыва? Просто не отключайте на выходные тестовые инстансы, а еще лучше – разверните staging на том же железе, что продакшен. А когда счет за облако придет на 800 тысяч вместо 300, спросите: "А при чем тут я?".

Нет, это не вредные советы Г. Остера, это жизнеописание большинства компаний, которые не в курсе культуры разумного потребления ресурсов.

Вот как все исправить (подробности – тут):

Метрики затрат в Grafana. Если стоимость работы кластера отображается рядом с загрузкой CPU и потреблением памяти, разработчик реально видит, что во что обходится. Случился скачок расходов на графике — значит, надо разбираться. Только на этом можно сэкономить 20-30%.

Калькулятор стоимости в PR. Штуки типа Infracost смотрят на изменения в инфраструктурном коде и прямо в Pull Request пишут, во что это выльется. Так можно отсекать слишком дорогие вещи еще на этапе ревью.

Собственный бюджет команды. Если бюджет превратился из общего в индивидуальный, пространства для маневра станет меньше, но и от халатного отношения к деньгам придется отказаться. Ведь если финансы закончатся — разработка встанет. Когда понимаешь, что лично отвечаешь за перерасход, начинаешь мыслить иначе. Для начала хватит простых showback-отчетов: сколько потратили, сколько планировали, где можно ужаться.

Есть что рассказать? Станьте голосом комьюнити и делитесь с участниками своими кейсами в сообществе. Там много интересного.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

В июле я писал о том, что Gaunt Sloth Assistant дошёл до версии 0.9.2. Сегодня мы наконец можем сказать, что вышла версия 1.0.0. В этом релизе мы перевели основную зависимость на LangChain/LangGraph v1, обновили минимальные требования до Node 24/npm 11 и официально объявили CLI готовым к повседневной автоматизации.

Что изменилось с прошлого поста?

  • Ревью теперь завершаются вызовом встроенного рейтингового инструмента. По умолчанию шкала 10/10, порог прохождения 6/10, и оценки ниже 6 заставляют команду review возвращать ненулевой код (non-zero exit code). Если нужен только режим предупреждений, установите commands.review.rating.enabled (и/или commands.pr.rating.enabled) в false в .gsloth.config.*.

  • Профили идентичности стали частью базового сценария: один флаг -i profile-name, и вы переключаете промпты, модели и провайдеры на уровень нужной папки.

  • Middleware теперь сущность первого класса. Можно комбинировать встроенные варианты вроде anthropic-prompt-caching или summarization, подключать собственные объекты на JS, а CLI показывает, что именно выполняется при каждой команде.

  • Глубокое слияние конфигов команд устранило проблему, когда переопределение источника контента стирало настройки рейтинга. Теперь значения по умолчанию сохраняются даже при частичных правках.

  • Мы освежили кеш OAuth, документацию и README, чтобы новичкам было проще стартовать, и параллельно усилили безопасность зависимостей.

Профили идентичности — главный QoL‑апгрейд 1.0.0. Они позволяют мгновенно переключаться между системными промптами, пресетами моделей и наборами инструментов под конкретную задачу. gth pr 555 PP-4242 по‑прежнему читает .gsloth/.gsloth-settings, а gth -i devops pr 555 PP-4242 автоматически берёт конфиг из .gsloth/.gsloth-settings/devops/ со своими промптами и провайдерами.

Нужно поговорить с Jira через MCP? Создайте профиль вроде jira-mcp со своим конфигом и запустите gth -i jira-mcp chat. Укороченный пример:

{
  "llm": {
    "type": "vertexai",
    "model": "gemini-2.5-pro"
  },
  "mcpServers": {
    "jira": {
      "url": "https://mcp.atlassian.com/v1/sse",
      "authProvider": "OAuth",
      "transport": "sse"
    }
  },
  "requirementsProviderConfig": {
    "jira": {
      "cloudId": "YOUR-JIRA-CLOUD-ID-UUID",
      "displayUrl": "https://YOUR-BUSINESS.atlassian.net/browse/"
    }
  },
  "commands": {
    "pr": {
      "contentProvider": "github",
      "requirementsProvider": "jira"
    }
  }
}

Переключение между такими папками теперь — один флаг, поэтому удобно держать отдельные персоны для DevOps, документации или любого удалённого MCP.

Rater — второй крупный прорыв. Ревью всегда содержали текстовый фидбек, но в 1.0.0 оценка стала действенной: мы сохраняем её в хранилище артефактов, передаём в модуль ревью и вызываем setExitCode, чтобы CI автоматически падал при невыполнении цели по качеству. Настройка защит для продакшн‑сервисов занимает теперь секунды и не требует самописных скриптов.

Наконец, реестр middleware и хранилище артефактов дают аккуратные точки расширения на будущее. Можно оборачивать вызовы моделей и инструментов, логировать каждую операцию и при этом оставлять Gaunt Sloth вести те же chat/code/pr/init команды. CLI как и раньше — небольшой TypeScript‑бинарь, который устанавливается через npm или запускается npx gth, но теперь у него архитектура, позволяющая развиваться без костылей.

Хотите попробовать релиз — быстрый путь всё ещё
npm install -g gaunt-sloth-assistant

репозиторий https://github.com/Galvanized-Pukeko/gaunt-sloth-assistant пригодится как справочник и место для issues. Заводите issue, оставляйте фидбек в Discussions или подключайте rater к своему CI и расскажите, как он себя ведёт — буду рад помощи в движении к 1.1.

Спасибо всем, кто помог тестами и несколькими PR.

Теги:
Рейтинг0
Комментарии0

Минималистичные healthcheck-утилиты для Docker-контейнеров

Однажды я был маленький, и задавался вопросом - вот собираешь ты свое приложение, нежно помещаешь его в Docker-образ, заботишься о том чтоб и зависимостей было поменьше, и скомпилируешь его так чтоб итоговая каша из байт было погуще, но покомпактее; используешь scratch, статическую линковку, но чтоб "из коробки" был еще и healthcheck - приходится или писать свой мальний чекер каждый раз, или тянуть статичкски слинкованный curl/wget, если приложение работает как http сервер.

Потому что без healthcheck жизнь ну совсем не торт, даже при локальной разработке, когда запускаешь уже готовые образы, ставишь их в зависимость для других (в том же docker compose) - без него это все работать не будет так, как тебе хочется - демоны будут стучаться друг к другу без уважения и учета, готово оно в этому или нет.

Так родился microcheck - набор крошечных статически скомпилированных бинарников, созданных специально для healthcheck-ов. Они не имеют зависимостей от динамических библиотек, написаны на C, и работают даже в scratch и distroless образах, да умеют корректно возвращать exit-коды, понятные Docker’у (0 - здоров, 1 - приходи завтра).

В комплекте:

  • httpcheck — проверка HTTP-эндпоинтов (~75 KB)

  • httpscheck — то же самое, но с TLS и автоопределением протокола (~500 KB)

  • portcheck — проверка TCP/UDP-портов (~70 KB)

У вас в продакшене наверняка Kubernetes, и все проверки делает kubelet - скорее всего, вам не нужно ничего менять. Но если вы запускаете контейнеры в «голом» Docker’е или других рантаймах без встроенных healthcheck-ов - такие инструменты могут здорово упростить жизнь.

Как выглядит в деле:

# Было (+~10MB)
RUN apt update && apt install -y curl && rm -r /var/lib/apt/lists/*
HEALTHCHECK --interval=10s CMD curl -f http://localhost:8080/ || exit 1

# Стало (+~75KB)
COPY --from=ghcr.io/tarampampam/microcheck /bin/httpcheck /bin/httpcheck
HEALTHCHECK --interval=10s CMD ["httpcheck", "http://localhost:8080/"]

Разница по размеру в десяток мегабайт против семи десятков килобайт, а в качестве бонуса - не нужен shell-процесс, всё работает напрямую и быстро (а еще и в переменные окружения умет).

Поддерживаются все популярные архитектуры (x86_64, ARM, ppc64le, s390x и др.), есть готовые образы в GitHub Container Registry и Docker Hub.

Посмотреть исходники, примеры Dockerfile и prebuilt-бинарники можно тут: github.com/tarampampam/microcheck

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Фишки FinOps Radar: бесплатная платформа, которая помогает экономить в Yandex Cloud

Как говорили в старину, с FinOps Radar и облако милее

Облако – вещь удобная, но непредсказуемая. Особенно, если вести учет расходов по-старинке, в Excel. Таблички, конечно, работают неплохо, но только в железной инфраструктуре. А в облаке без специальных инструментов никак.

FinOps Radar — это первый бесплатный сервис для оптимизации расходов в Yandex Cloud.

Что он умеет:

Обнаружение аномалий. Сервис сравнивает текущие расходы с расходами за последнюю неделю. Если траты выросли больше чем на 5% от среднего, система помечает это цветом. Желтый — рост 5-10%, все что выше – красный. Можно сразу открыть детализацию и понять, какой сервис съел бюджет.

Поиск зомби-ресурсов. Это все то, за что вы платите впустую: забытые инстансы, неприсоединенные диски и т.д. Платформа показывает сумму потенциальной экономии по каждой позиции. 

Автоалерты. Письма об аномалиях приходят в 05:00, о новых рекомендациях — в 09:00. Можно даже выгрузить отчет в Excel и в конце месяца показать начальству, сколько денег сэкономили.

Главное — сервис ничего не трогает в вашей инфраструктуре. Только смотрит и советует. У него даже прав таких нет. Вы даете доступ только для чтения, он собирает данные и показывает проблемы. А как на них реагировать — решаете сами. 

Есть что рассказать? Станьте голосом комьюнити и делитесь с участниками своими кейсами в сообществе.

Теги:
Рейтинг0
Комментарии0

Присоединяйтесь к вебинару про виртуализацию, контейнеризацию и системы резервного копирования

Завтра, 12 ноября, в 11:00 менеджер продукта и архитектор инфраструктурных решений Deckhouse проводят совместный вебинар с командой «Мобиус Технологии». Со своей стороны представим Deckhouse Virtualization Platform. Расскажем, как платформа помогает решать задачи миграции с монолитов на микросервисы и запускать кластеры Kubernetes как сервис. А ещё проведём демо возможностей DVP в реальной инфраструктуре и разыграем подарки.

Также в программе:

  • обзор последних новостей рынка виртуализации и систем резервного копирования;

  • знакомство с наиболее зрелыми российскими альтернативами западным платформам;

  • кейсы по внедрению серверной виртуализации и виртуализации рабочих мест пользователей.

В конце вебинара будет Q&A-сессия, чтобы ничьи вопросы по теме не остались без ответов. Регистрируйтесь и подключайтесь!

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Лучший стэк для запуска MVP SaaS-стартапа в РФ на 2025 год.

Вот наш боевой стэк, который мы сейчас используем для разработки SaaS-стартапа.

Проверено на собственной шкуре!

Frontend:

- NextJS 15 (+React 19, Turbopack, Server Actions) - актуальный стек для веб-приложений.

- Shadcn UI (сделана на Tailwind) - библиотека UI-компонентов, чтобы сделать крутой интерфейс без дизайнеров.

- Netlify - бесплатный хостинг для тестовой версии продукта.

Backend:

Supabase:

- База данных

- Database SQL Functions (функции сразу в базе PostgreSQL)

- Edge Functions (серверные функции на TypeScript)

Nextauth:

- Авторизация

Инфраструктура:

Kubernetes:

- Репликация БД и сервисов на 3-х Worker-нодах

- Rollout-обновления без простоя

- Политики безопасности и изоляция

- CI/CD из GitHub.

+ Пароли/ключи в KeePass XC.

Инструменты:

- IDEA Ultimate - среда разработки

- Cursor - для вайбкодинга (чистый, без всяких инфоцыганских MCP)

- DBeaver - для работы с БД

- GitHub - репозиторий

Платежка

- Robokassa (РФ + иностранные платежи)

Лендинг + блог

- Tilda (проще сделать сайт на конструкторе, чем все это вайбкодить)

Как мы все настроили

- Развернули проект в облачном хостинге в РФ, чтобы хранить данные в соответствии со 152 ФЗ. Выбрали хостинг с k0s, потому что он дешевле классического k8s.

- Supabase поставили на свой сервер (Cloud не подходит, так как данные хранятся не в РФ).

- Настроили регулярные бэкапы (хотя мы еще не релизились, но 1 раз у нас уже отлетали жесткие диски).

Почему именно такой стэк?

- Проще работать с технологиями, которые ты уже хорошо знаешь.

- Нам важна надежность, быстрое переключение новых версий на проде без простоя и возможность разделить продукт на версию под РФ и "мир".

- Для работы в РФ нужно хранить персональные данные в РФ и избегать трансграничной передачи данных.

- Конструктор сайтов как простой и недорогой вариант для лендингов и блога. Чтобы не вайбкодить целую CMS.

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

А какие технологии используете вы для разработки MVP?

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии7

Как управлять затратами в облаке: 5 уровней

А вы знали, что почти треть компаний не знает, куда уходят их облачные бюджеты? Нет, они, конечно, получают счета и даже по ним платят. Но почему в прошлом месяце было так, а в этом эдак, и кто в этом виноват – не имеют никакого представления.

Естественно, при таком подходе говорить о какой-либо эффективности не приходится. Потому что если одни экономят, а другие забивают на отключение тестовых сред и гоняют MongoDB там, где хватило бы PostgreSQL, толку не будет. Ведь платить-то все равно из общего котла. 

Проблема решается детализацией:

  • Уровень 1 - тот самый общий котел, когда выделяется какая-то сумма, и вся она тратится без отслеживания эффективности. На этом уровне прозрачность находится на нуле.

  • Уровень 2 - расходы распределяются по провайдерам. На этом уровне уже видно, что VK Cloud выставил столько-то, Яндекс Облако столько-то. Но почему – пока непонятно.

  • Уровень 3 – раскладка по услугам. Compute съедает 60-70%, Storage – 20-30%, трафик – 10-15%. Уже появляется понимание, где самые дорогие компоненты.

  • Уровень 4 – тегирование ресурсов. Так будет видно, какая команда тратит больше.

  • Уровень 5 – cost-центры с реальными бюджетами. Showback показывает командам траты без списания денег. Chargeback списывает реальные суммы с реальных бюджетов. 

Компании, дошедшие до пятого уровня, экономят 20-30% без потери производительности.

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

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Почему Kyverno и Gatekeeper: рассказываем об инструментах, сравниваем их и решаем, какой удобнее 🔐

Задумываетесь, что лучше выбрать для управления политиками в Kubernetes — Kyverno или Gatekeeper? У нас есть ответ. Приходите на вебинар, где мы поговорим о каждом контроллере, осветим их плюсы и минусы, а еще сценарии, для которых лучше подойдет каждый. Оба инструмента будем разбирать на практике.

О чем расскажем:

  • что предлагает рынок для управления политиками в Kubernetes;

  • почему выбираем между Kyverno и Gatekeeper, какие у них сильные и слабые стороны;

  • под какие задачи лучше подойдет каждый из инструментов, что удобнее в использовании.

Ждем всех, кому интересна безопасность в Kubernetes, в частности DevOps-инженеров, техлидов, директоров по разработке и специалистов по кибербезопасности.

📅 Когда? 13 ноября в 11:00 мск.

📍Где? Онлайн. Зарегистрируйтесь, чтобы обсудить сетевые политики в кубере и задать вопросы экспертам.

Теги:
Рейтинг0
Комментарии0

FinOps против Excel: кто управляет деньгами в облаке

Классический финконтроль — это история, которая в облаке почти не работает.
Классический финконтроль — это история, которая в облаке почти не работает.

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

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

А потом пришло облако. Сегодня нагрузка почти нулевая, а завтра конкурента блокируют, и трафик у тебя растет в разы. Автоскейлинг добавляет новые инстансы, счёт за неделю превращается в месячный.

CFO смотрит на это и разводит руками. Финансисты видят цифры, но не понимают, почему всё так скачет.

Проблема не в суммах, а в подходе. Старый финконтроль держится на стабильности, а облако живёт по принципу «всё меняется каждую минуту». Любая мелочь в архитектуре мгновенно отражается в P&L, а привычные отчеты не успевают за скоростью изменений.

FinOps меняет этот подход:

  • Вместо квартальных отчетов — короткие кост-ревью

  • Вместо агрегированных сумм — расходы по командам и проектам

  • Вместо запоздалых реакций — наблюдение в реальном времени.

Это уже даже не про “оптимизацию”, а про банальную прозрачность. Или транспарентность. Называйте как хотите.

Главное – что благодаря этому CFO может видеть деньги не в Excel, а прямо в инфраструктуре, и перестает реагировать на факты, а начинает ими реально управлять.

Тут-то баланс и восстанавливается: разработчики понимают цену своего кода, финансисты — динамику расходов, а бухгалтерия наконец перестает удивляться собственным счетам.

Есть что рассказать? Станьте голосом комьюнити и делитесь с участниками своими кейсами в сообществе.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Что будет с фотками, если закроется облако

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

Закрытие сервиса

Обычно провайдеры предупреждают о закрытии за месяц-два или три. Это время дается, чтобы вы могли выгрузить всё, что хранилось в облаке. Но общего правила нет.

Parse объявил о закрытии за год, а Everpix – за месяц. Но и в том, и в другом случае пользователям дали возможность выгрузить свои данные. Только после этого архивы удалили физически. 

Истечение подписки

У каждого провайдера свои правила хранения после окончания оплаченного периода. iCloud держит данные всего месяц, Dropbox – 2, а Google Drive позволяет загрузить их в течение двух лет.

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

Есть что рассказать? Станьте голосом комьюнити и делитесь с участниками своими кейсами в сообществе.

Случаи потери данных

Бывает, что данные пропадают случайно. Вероятность такого исхода мала, но не равна нулю. Так, в 2015 году в дата-центр Google в Бельгии молния ударила 4 раза подряд. Пострадало около 0.000001% данных, то есть где-то 10 байт на гигабайт. Тем, кто попал в эту погрешность, конечно, легче не стало. Но цифры показывают, насколько это редкая ситуация.

В целом же, облака остаются более надёжным решением, в отличие от локальных дисков. Главное – оплачивать подписку вовремя.

Теги:
Рейтинг0
Комментарии0

Вышел релиз программного обеспечения topalias 3.0.0

topalias 3.0.0
topalias 3.0.0

Установка:
pip3 install -U --upgrade topalias
pipx install --force topalias
python3 -m pip install -U --upgrade topalias
python3.10 -m pip install -U --upgrade topalias

Запуск утилиты topalias:
topalias
python3 -m topalias
python3.10 -m topalias
python3 topalias/cli.py

Изменения:
Поддерживается Ubuntu 25.10/Python 3.13, Kubuntu 22.04/Python 3.10, KDE neon Rolling

Просьба проверить на актуальной версии Python 3.15 в KDE neon

Ссылка на дистрибутив KDE neon Rolling: https://distrowatch.com/table.php?distribution=kdeneon

topalias - утилита для генерации коротких алиасов по истории bash/zsh

На GitHub опубликована открытая утилита для генерации коротких алиасов на основании истории работы в bash или zsh. Утилита анализирует файлы ~/.bash_aliases, ~/.bash_history и ~/.zsh_history с историей выполнения команд в терминале Linux, после чего предлагает короткие аббревиатуры (акронимы) для длинных, долго набираемых и сложно запоминаемых, но часто используемых команд. Также поддерживается вывод статистики по истории работы в командной строке.

Если вы работаете в терминале десятки раз в день, алиасы — это мощный инструмент повышения эффективности. Но с ростом количества проектов и конфигураций .bashrc/.zshrc алиасов становится много: часть дублируется, часть устарела, некоторые перекрывают системные команды. topalias решает три задачи:

  • дать метрику использования алиасов (какие используются чаще всего);

  • упростить создание/удаление/пакетное управление алиасами;

  • находить конфликтные или опасные алиасы и предлагать безопасные альтернативы.

В статье — обзор возможностей, примеры использования, внутренняя архитектура и практические рекомендации для интеграции с bash/zsh/fish.

Ключевые возможности

  • Сбор статистики использования алиасов на основе shell-history.

  • Команда top — список наиболее часто используемых алиасов.

  • Интерактивный режим (TUI) для обзора, включения/выключения и редактирования.

  • Поддержка bash, zsh и fish.

  • Экспорт/импорт в виде конфигурационных файлов и git-репозиториев.

  • Поиск конфликтов (алиас затеняет системную команду) и предупреждения.

  • Генератор «умных» алиасов: на основе частых цепочек команд предлагает сокращения.

  • Пакетная миграция между машинами (pack/unpack).

  • Небольшой daemon/cron для частого обновления статистики (опционально).

# клонируем репозиторий

git clone https://github.com/CSRedRat/topalias.git

cd topalias

# установка в виртуальное окружение (рекомендуется)

python -m venv .venv

source .venv/bin/activate

pip install -e .

# инициализация в shell (одна строчка, добавьте в .bashrc/.zshrc)

topalias init --shell auto >> ~/.topalias-shell-rc && source ~/.topalias-shell-rc

Примечание: init генерирует небольшую обёртку для history-hook, чтобы собирать данные об использовании алиасов без заметной нагрузки.

Подписывайтесь на канал в Telegram: https://t.me/ruopsdev

Второй канал на Телеграм: https://t.me/journal_rbc_pro

  • Просмотр самых часто используемых алиасов:

topalias top
topalias top --limit 20 # или с лимитом
  • Найти алиас по фрагменту:

topalias find git
  • Создать алиас:

topalias add ga='git add --all'
  • Удалить алиас:

topalias rm ga
  • Интерактивный режим (TUI):

topalias ui
  • Экспорт текущих алиасов в файл:

topalias export --format bash > ~/.topalias-export.sh

Импорт из файла:

topalias import ~/.topalias-export.sh

Если вы часто выполняете цепочку:

git add . && git commit -m "WIP" && git push

topalias предложит вариант:

topalias suggest
# suggestion: gpush = git add . && git commit -m "WIP" && git push
topalias add gpush='git add . && git commit -m "WIP" && git push'

Проверим, не перекрывает ли алиас системную команду:

topalias check-conflicts
# output:
# - ls -> aliased to "ls --color=auto" (OK)
# - df -> aliased to "du -h" (DANGER: shadows system df)

Сохраняем пакет алиасов и переносим на другой компьютер:

topalias pack --name work-aliases > work-aliases.tar.gz
# на другом хосте
topalias unpack work-aliases.tar.gz
topalias import unpacked/work-aliases.sh
Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии7

Как я починил ошибку tokenizers в ComfyUI

Workflow Wan 2.2 GGUF Speed ComfyUI - генерация девушки-кота на Хэллоуин 
Workflow Wan 2.2 GGUF Speed ComfyUI - генерация девушки-кота на Хэллоуин 

Недавно столкнулся с ошибкой при запуске ComfyUI - конфликт версий библиотеки tokenizers. Ошибка выглядела так: ImportError: tokenizers>=0.22.0,<=0.23.0 is required for a normal functioning of this module, but found tokenizers==0.21.4....Рассказываю, как я её исправил без поломки окружения и рабочих workflow.

Описание контекста:
У меня Portable-версия ComfyUI, встроенный Python (папка "python_embeded", папка "update", рабочие workflow и боязнь обновлять всё подряд)

Конфликт:
ComfyUI или один из плагинов требует tokenizers >= 0.22.0, а установлена старая 0.21.4. Ранее я уже точечно менял wheels и версию torch для работы с Nunchaku.

Решение:
Прямые команды, выполненные через PowerShell в папке ComfyUI:
(Чтобы ввести команды - нужно находясь внутри папки ComfyUI нажать Shift + ПКМ на свободном месте в этой папке и выбрать "Открыть окно PowerShell здесь" и ввести нужные команды)

python_embeded\python.exe -m pip uninstall -y tokenizers
python_embeded\python.exe -m pip install tokenizers==0.22.0

После перезапуска всё заработало:

PS D:\AI\ComfyUI2> python_embeded\python.exe -m pip uninstall -y tokenizers Found existing installation: tokenizers 0.21.4
Uninstalling tokenizers-0.21.4:
Successfully uninstalled tokenizers-0.21.4
и
PS D:\AI\ComfyUI2> python_embeded\python.exe -m pip install tokenizers==0.22.0
Collecting tokenizers==0.22.0
Using cached tokenizers-0.22.0-cp39-abi3-win_amd64.whl.metadata (6.9 kB) Requirement already satisfied: huggingface-hub<1.0,>=0.16.4 in d:\ai\comfyui2\python_embeded\lib\site-packages (from tokenizers==0.22.0) (0.34.4) .....
Successfully installed tokenizers-0.22.0

Как итог - видео с разрешением 364 на 640px, продолжительностью 5 секунд, сгенерировалось за 8,5 минуты на 8гб VRAM + 32гб RAM.

Почему важно не трогать "update_comfyui_and_python_dependencies.bat" ? Чтобы не нарушить совместимость всего окружения.
В таких случаях не стоит паниковать - достаточно понимать, как работают зависимости Python и виртуальные окружения.

Если вы работаете с ComfyUI или подобными пакетами, умение диагностировать и чинить зависимости - ваш надёжный инструмент в арсенале.

#ai #comfyui #python #design #code #workflow #ии

Теги:
Всего голосов 2: ↑0 и ↓2-2
Комментарии2

Привет, по случаю прикрутил к kui'ю немного helm'а. Можно посмотреть статус, историю, манифест и откатить релиз.

Happy Helming!
Happy Helming!

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Экономим с FinOps: доклады экспертов отрасли

Учиться на чужих ошибках дешевле, чем на своих. Практики FinOps рассказали, как разбирались с облачными расходами.

FinOps без иллюзий

Игорь Гальцев: FinOps – это не должность и не софт, а процесс. Инженеры, финансисты и менеджмент должны работать вместе, а из инструментов – только теги, распределенное бюджетирование и алерты. 

Когда счёт прилетает внезапно

Антон Черноусов из Yandex Cloud запустил проект без лимитов. Как итог – счёт на $2700 за день. Решить проблему помогла настройка бюджетов, алертов и автоматизации.

Практика и культура

Антон Егорушков из Купер (СберМаркет) рассказал, что динамические стенды и скоринг команд напрямую влияют на то, как расходуются бюджеты. Поэтому культуру FinOps строить сразу, иначе потом выйдет дороже.

Простые шаги

Станислав Погоржельский из VK Cloud считает, что экономия приходит как побочный эффект порядка. Добиться этого можно тестированием нагрузки, настройкой лимиты автоскейла и хранением файлов там, где надо. 

FinOps в Kubernetes

Алексей Минаев: 70% переплат сидят в Kubernetes, потому что ресурсов выделяют больше, чем используют. В итоге CPU загружен на 13%, память на 20%. Правильные реквесты и автоскейл поднимают утилизацию до нормальных 70%, и переплата исчезает.

SaaS и лицензии

Дитер Мейсон из Roku: FinOps не ограничивается только облаком. FinOps – это в том числе про управление подписками, аномалии в продлениях лицензий и, конечно, расчёт ROI.

Есть чем поделиться? Вступайте в наше сообщество Практики FinOps.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Как реально экономить на облаке с FinOps: рабочие кейсы

Мы много пишем о FinOps, о том, как он устроен и чем полезен. Но реальный опыт всегда интереснее любой теории. 

Мультиоблака и прозрачность

Поначалу Купер вообще не применял FinOps в своей работе, но потом привязал теги, CMDB и автоматизацию через Terraform. Результат: 75% расходов распределяются по владельцам, прозрачность и прогнозируемость бюджета. 

Производство и инженерный FinOps

ST Microelectronics работают с маленькой FinOps-командой, но экономят миллионы. Инженеры сами прогнозируют свои расходы и получают бонусы за точность прогнозов. В итоге их экономия – 30% без ущерба для SLA. 

Госсектор и Data Lake

Transport for NSW безуспешно боролись с зомби-ресурсами и ручными выгрузками. А потом запустили FinOps-дашборды и детектор аномалий. Как результат – расходы на Data Lake упали на 22%.

Автоматизация вместо таблиц

inQdo Cloud считали все расходы в Excel. Но когда внедрили FinOps-платформу, автоматизировали биллинг и нашли утечки бюджета, ситуация изменилась. Аналитику они сделали платной услугой для клиентов — и FinOps начал зарабатывать сам на себя.

Еще мы разобрали кейсы Qventus, Sportradar, Лемана Тех и NinjaCat. Проблемы у всех похожие, а решения разные: кто-то внедрил chargeback, кто-то показал разрабам цену запроса, а кто-то просто настроил автовыключение неиспользуемых ресурсов. Но все остались в плюсе.

Есть что рассказать? Залетайте в наше сообщество в Telegram и поделитесь своей историей с единомышленниками.

Теги:
Рейтинг0
Комментарии0

Привет, Хабр! Мы только что получили из типографии топовую DevOps-новинку этого года — книгу Камиль Фурнье и Иэна Ноуленда «Инжиниринг платформ: техническое и управленческое руководство». Промокод для читателей Хабра (скидка 32%) - fournier.

Переведённая нами статья Камиль Фурнье с описанием круга проблем и задач, которые решает книга - Инжиниринг платформ: не CFEngine единым / Хабр

Аннотация книги

Базовая книга по инжинирингу платформ – новому подходу к управлению программными системами, при работе с которыми требуется обслуживать множество разных аппаратных архитектур и операционных систем. Показано развитие концепции DevOps и объяснено, как  учитывать запросы и возможности пользователей независимо от способа работы с приложением, минимизировать задержки при обработке данных и упрощать масштабирование и поддержку многоплатформенных продуктов. Описан комплексный  подход к управлению продуктом с учетом потребностей клиентов, разработчиков, системных администраторов и предприятия в целом, актуальный на любых программных платформах.

Для специалистов DevOps, системных администраторов, руководителей команд

Теги:
Всего голосов 10: ↑10 и ↓0+15
Комментарии0

Поделимся итогами исследования State of DevOps Russia 2025 на вебинаре

Команда «Экспресс 42» опросила тысячи инженеров и разработчиков для исследования состояния DevOps в России 2025. И вот анализ ответов завершён, а результаты готовы! Мы поделимся ими на вебинаре, который пройдёт 31 октября в 12:00 по московскому времени.

Зарегистрируйтесь, чтобы узнать, как изменился российский DevOps за год и какие тренды прослеживаются в индустрии — с фокусом на Developer Experience, ИИ и ИБ. Мы расскажем, какие инструменты и практики используют компании и покажем, как применить выводы исследования в ваших командах.

Что обсудим:

  • характеристики Developer Experience, которые отличают высокоэффективные команды;

  • задачи, для которых компании используют ИИ-инструменты;

  • практики внедрения ИБ в процесс разработки;

  • изменения в зарплатах и вакансиях DevOps-специалистов за год.

Будем вас ждать!

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Привет, подкрутил немного свой kui. Добавил применение фильтра к подам в режиме подсматривания (watch it).

watch it
watch it

Теперь можно подсматривать только за интересными стрючками.

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Эгегей, kui еще немного окреп! Добавил команду 'rollout to revision'. Теперь можно откатывать деплои на определенную версию а не только на предыдущую.

rollout to revision
rollout to revision

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

🔥 Как это было! Итоги Ansible Security CTF

14 октября мы собрались в уютном Failover Bar (г. Санкт-Петербург) 🏠, чтобы по-настоящему прокачать свои навыки в DevOps и кибербезопасности 🚀

Огромное спасибо всем участникам нашего интенсива "Ansible Security CTF – Защищай и Атакуй!" – вы сделали этот вечер незабываемым! 🙏

Что мы делали:
🛡 Писали Ansible playbooks, чтобы мгновенно закрывать уязвимости
🔎 Активно сканировали, подбирали пароли, искали флаги с помощью nmap, hydra и curl
💬 Общались, обменивались опытом и заводили новые знакомства!

🎉 Поздравляем победителей и напоминаем, что еще месяц в Failover Bar можно потренироваться на кейсах из интенсива! 💡В этом вам поможет бот 🤖 для CTF - https://t.me/DebugProCTF_bot

📆 Не хотите пропустить следующие мероприятия? Подписывайтесь на бота 🤖 DebugSkills - https://t.me/DebugProBot

👀 Ссылка на запись мастер-класса тут - https://vkvideo.ru/playlist/-232485571_2/video-232485571_456239019?linked=1

👀 Все фото в нашем канале - https://t.me/DebugSkills

Теги:
Рейтинг0
Комментарии0

Привет, небольшой апдейт. Добавил еще один тип k8s объектов который теперь можно тыкать kui'ем - volumeattachment

volumeattachment
volumeattachment

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Привет, как узнать % использования PVC? Kui поможет! Добавил команду PVC Usage

PVC usage
PVC usage

PVC это абстракция поэтому прямого пути (команды) узнать использование PVC нет. Как сделано? Ищем стручек (pod) который использует искомый PVC:

pvc_used_in=$(
    kubectl -n $namespace get po -o \
    jsonpath='{range .items[*]}{.metadata.name}{" "}{range .spec.volumes[*]}{.name}{" "}{.persistentVolumeClaim.claimName}{" \n"}{end}{end}' | \
    grep " $pvc_name "
)
raw=($pvc_used_in)
pod_name=${raw[0]}
mnt_name=${raw[1]}

Находим точку g монтирования:

pod_mount_name=$(
    kubectl -n $namespace get po/$pod_name -o \
    jsonpath='{range .spec.containers[*]}{range .volumeMounts[*]}{.name}{" "}{.mountPath}{"\n"}{end}{end}' | \
    awk "/$mnt_name /"'{print $2}'
)

Проверяем использование диска (PVC):

pvc_usage=$(
    kubectl -n $namespace exec po/$pod_name -- df -h $pod_mount_name
)

Выводим результат:

echo "PVC capacity: $pvc_capacity"
echo "PVC used in:"; echo "$pvc_used_in"
echo "PVC usage:"  ; echo "$pvc_usage"
PVC capacity: 750Gi
PVC used in:
kafka-dev-broker-1 data data-kafka-dev-broker-1 
PVC usage:
Filesystem      Size  Used Avail Use% Mounted on
/dev/rbd4       738G   44G  695G   6% /bitnami/kafka

Бонусом добавил возможность прибивать PVCишки kui'ем, добавил команды Delete и Terminate.

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

Роли в FinOps

Как бы странно это ни звучало, но главное, на чем держится FinOps, — это общий язык, на котором говорят и финансисты, и технари. При этом у каждого из них есть своя роль:

➖  инженеры и DevOps, которые запускают ресурсы и должны видеть их стоимость

➖  продакты и бизнес-менеджеры, которые отвечают за ценность и окупаемость

➖  финансисты и закупки, которые смотрят на бюджеты и договоры

➖  руководители и C-level, которые принимают стратегические решения

В каждой компании распределение может отличаться. Но идея одна: никто не работает в вакууме. Инженеры понимают, во сколько обходятся их сервисы, финансисты знают, за что платят, а топы видят, какую отдачу приносит облако.

Такой подход убирает вечный спор, кто сколько тратит, и превращает расходы в совместную ответственность.

Близка тема, где финансы и инженеры наконец говорят на одном языке? Заглядываем в «Практики FinOps», там выходят кейсы, доклады, лайфхаки и немного самоиронии про жизнь в облаке.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Просто напоминаю про багбаунти от Selectel с призами до 30 000 рублей

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

Количество участников ограничено: 30 человек, из которых будут выбраны 3 победителя. Регистрация уже открыта, стартуем в октябре — присоединяйтесь и покажите, на что вы способны! 

Призы:

1 место: 30 000 бонусных рублей

2 место: 20 000 бонусных рублей

3 место: 10 000 бонусных рублей

Как устроено под капотом

Мы сделали образ Keycloak в облаке Selectel. Он содержит docker-compose c Keycloak, Postgres, Nginx и скриптами бэкапов. Настраивается через cloud-init: все подставляется из user-data. Поддержка cron-задач, логика запуска, безопасность по умолчанию. Образ рассчитан на стабильную работу из коробки.

Внутри образа Nginx работает как обратный прокси, Certbot выпускает сертификаты. Есть cron-задачи для обновлений и создания дампов. Закрытые URL’ы, доступ по white-list — ради безопасности админского контура. Настройка происходит автоматически при запуске образа.

Теги:
Всего голосов 5: ↑5 и ↓0+10
Комментарии1

Эгегей! Радость, kui снова подрос! Добавлена команда 'SSL update' для обновления сертификатов и ключей в секретах типа 'kubernetes.io/tls'. Как это работает?

  • Кладете в какую-нибудь папку новый сертификай, файл должен называться tls.crt и ключ с именем tls.key

  • Запускаете kui в этой папке, находите секрет с сертификатом который необходимо обновить

  • Обновляете через 'SSL update'

SSL update
SSL update

Под капотом, обновление выполняется вот такой командой:

printf -v ssl_patch_data '{"data": {"tls.crt": "%s", "tls.key": "%s"}}' "$(base64 -w0 tls.crt)" "$(base64 -w0 tls.key)"
kubectl patch secret/<secret_name> -n <namespace> --patch="$ssl_patch_data"

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 5: ↑4 и ↓1+5
Комментарии1
1
23 ...

Вклад авторов