Библиотека девопса | DevOps, SRE, Sysadmin
10.2K subscribers
1.55K photos
75 videos
4 files
2.78K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
😭 NGINX Unit больше не разрабатывается

F5 Networks приняли решение прекратить активную разработку NGINX Unit. Репозиторий на GitHub переведен в архив — это означает конец поддержки проекта, который многие считали перспективным универсальным app-сервером.

Для тех, кто не знаком с проектом — Unit был амбициозной попыткой создать универсальный сервер приложений

Если вы используете Unit в проде:

• Провести аудит безопасности текущей версии

• Начать планирование миграции (3-6 месяцев)

• Искать community fork (если появится)

• Готовить план миграции на альтернативы

Альтернативы NGINX Unit по языкам

— Python:

• Gunicorn — проверенный WSGI сервер
• Uvicorn — современный ASGI (для FastAPI, Django async)
• uWSGI — мощный и гибкий (но сложный)

— PHP:

• PHP-FPM — стандарт индустрии
• FrankenPHP — новый, с поддержкой worker mode

Node.js:

• PM2 — production process manager
• Node.js напрямую за NGINX (для простых случаев)

Ruby:

• Puma — современный и быстрый
• Unicorn — стабильный классический выбор

Java:

• Tomcat / Jetty — традиционные app servers
• Spring Boot embedded server

➡️ Последний раз посмотреть в репозиторий

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🙏1
🔒 Как хранить секреты в Terraform

Правило №1: Никогда не хардкодьте секреты. Инфраструктурный код — это тоже код, и к нему применяются те же правила безопасности.

Плохой пример:
resource "aws_db_instance" "database" {
password = "notasecurepassword"
}


Правильный подход:

1. Объявляем переменную в variables.tf:
variable "db_password" {
type = string
}


2. Создаем secrets.tfvars:
db_password = "insecurepassword"


3. Используем переменную:
resource "aws_db_instance" "database" {
password = var.db_password
}


Не забудьте добавить secrets.tfvars в .gitignore

Но это только первый шаг. Хранить секреты в файлах — всё ещё не лучшее решение.

🐸 Библиотека devops'a

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Media is too big
VIEW IN TELEGRAM
Идём на Avito Infra DrinkUp 12 ноября, без вариантов ☄️

Коллеги из Авито зовут на встречу по инфраструктуре. Обещают брейншторм об инструментах IaC, разработке в SRE, базах данных, Kubernetes и многом другом. Но есть подвох: никаких записей и трансляций — только офлайн, только хард-кор.

Как будто итог один — пропускать нельзя. Советуем уже сейчас кликать по ссылке и регистрироваться с коллегами и друзьями, пока не закончились места.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧑‍💻 Самая длинная рабочая неделя 2025 года

Эта неделя — 6 рабочих дней подряд. Для большинства это событие, для девопса — обычный вторник.

Для нас разница не особо заметна. On-call работает все семь дней, инциденты не смотрят на календарь, мониторинг не знает про выходные, а деплои случаются когда угодно.

💬 А как вы настроились на эту неделю? У вас будет две пятницы или два понедельника?

🐸 Библиотека devops'a

#dev_null
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4
🔄 Bottles 51.25: исправления и поддержка st terminal

Вышла новая версия Bottles — менеджера для запуска Windows-приложений на Linux через Wine. Релиз 51.25 исправляет ошибки, которые мешали нормальной работе программы.

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

Добавили поддержку терминала st. Теперь bottles корректно загружает конфиг из файла bottle.yml, если он существует. Ещё один фикс касается запуска CMD через xfce4-terminal.

➡️ Релиз на GitHub

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
📊 Структурированное логирование ошибок: практическое руководство

Неинформативные логи типа «Error!» затрудняют отладку. В проде поиск проблемы занимает часы.

Решение: 6-значная система кодирования
01 01 03
│ │ └─ Тип ошибки
│ └──── Сервис
└─────── Модуль


Первые 2 цифры — модуль:

01 — User
02 — Shipping
03 — Order
04 — Payment
05 — Notification

Средние 2 цифры — сервис:

01 — Database
02 — External API
03 — Payment Gateway
04 — Cache
05 — Queue

Последние 2 цифры — тип:

01 — Configuration
02 — Authentication
03 — Timeout
04 — Validation
05 — Not Found

Уровни серьёзности:

Low — информационные сообщения, не требуют действий
Medium — влияют на UX, требуют исправления
High — нарушают работу функционала
Critical — полный отказ системы, требуют немедленной реакции

Как выглядит лог в Json:
{
code: '010103', // Код ошибки
level: 'Medium', // Уровень
message: 'Clear text', // Описание
timestamp: '2025-10-29T...',

// Контекст
userId: 12345,
requestId: 'req-abc-123',
service: 'UserService',

// Технические детали
stack: error.stack,
duration: 3450
}


Минимальный старт

1. Определите 3-5 основных модулей
2. Создайте таблицу кодов
3. Добавьте структурированное логирование в критичные места
4. Настройте алерты на Critical
5. Постепенно расширяйте покрытие

Наши курсы построены по тому же принципу: чёткая структура, конкретные практические примеры, измеримые результаты. 3 дня до конца скидок!

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🎁 Конкурс от Proglib Academy!

Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro

Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.

Чтобы поучаствовать, нужно:

1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.

До 15 ноября, потом всё — поезд (и макбук) уйдёт.

👉 Участвовать в розыгрыше
🎩 Вышла Fedora Linux 43

Fedora выпустила новую версию дистрибутива. Главное изменение для пользователей — установщик Anaconda WebUI теперь работает не только в Workstation.

Для любителей GNOME новость менее радужная: десктоп теперь работает только через Wayland, поддержку X11 полностью убрали.

Под капотом обновили пакетный менеджер до RPM 6.0. Это добавляет возможность подписывать пакеты несколькими ключами одновременно — готовятся к переходу на пост-квантовую криптографию.

Fedora CoreOS изменила схему обновлений: вместо OSTree-репозитория система получает апдейты как OCI-образы. Теперь любой может собрать FCOS через обычный Containerfile с помощью podman, без специальных инструментов.

Для чистой установки доступны все редакции: от классических Workstation и Server до Atomic-десктопов вроде Silverblue. 21 ноября пройдет виртуальная вечеринка в честь релиза.

➡️ Release notes

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Каким образом мы можем управлять вычислительными ресурсами в k8s?

Для эффективного управления ресурсами в кластере k8s используются resources requests / limits. Они могут быть настроены для CPU, памяти и, в последних версиях k8s, для GPU.

Requests используются для определения типичного потребления ресурсов нашим приложением. На основе этих данных Kubernetes scheduler выбирает ноды для запуска PODов (сумма всех request'ов контейнеров во всех PODах не должна превышать доступные ресурсы на ноде).

Limits служат как механизм предотвращения, ограничивая потребление ресурсов контейнером в PODе. При превышении лимита процессорного времени применяется thermal throttling, а при превышении лимита памяти — механизм OOM.

Модель, при которой requests меньше limits, называется burstable QoS, а когда requests равны limits — guaranteed QoS.

Кроме того, можно установить квоты ресурсов на namespace (CPU, память, количество запущенных PODов, размер диска persistent volume) и указать требования к resources requests на PODах в namespace с помощью limit ranges.

Для управления ресурсами приложений также можно использовать автоскейлеры. В k8s доступны HPA (horizontal pod autoscaler), который регулирует количество PODов в зависимости от потребления CPU и/или памяти, и VPA (vertical pod autoscaler), который управляет resources requests / limits.

Существуют также реализации автоскейлеров, которые могут использовать внешние метрики (например, длину очереди), такие как carpenter или KEDA. В облачном окружении можно использовать cluster autoscaler для добавления или удаления нод в зависимости от общей загрузки кластера.


Библиотека собеса по DevOps