Пятничный деплой
4.47K subscribers
1.41K photos
29 videos
167 files
7.78K links
Подборка ссылок, статей и постов из мира DevOps\SRE\разработки. Если вы хотите прислать фидбек, интересную статью или просто поболтать пишите @count0ru https://xn--r1a.website/s/count0_digest
Download Telegram
Forwarded from /usr/bin
Балансировка нагрузки: проблемы, решения, практические рекомендации

Один сервер — это точка отказа. Рано или поздно он не выдержит. Как только появляется второй, третий, десятый сервер, возникает вопрос: кто будет раздавать им работу? Эту роль и берет на себя балансировщик нагрузки.

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


В этой статье на Хабре разобрана матчасть по возможным вариантам балансировки нагрузки.

@usr_bin_linux
Forwarded from DevOps
⚡️ CACHING STRATEGIES В СИСТЕМНОМ ДИЗАЙНЕ

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

ПОЧЕМУ КЭШИРОВАНИЕ ВАЖНО
Экономит запросы к базе
Уменьшает задержку
Справляется с высоким количеством чтений
Укрепляет стабильность при нагрузках
Снижает стоимость инфраструктуры

1) CLIENT-SIDE CACHING
Хранение данных в браузере пользователя.
Используются cookies, localStorage, service workers.
Меньше повторных загрузок статических ресурсов.

2) CDN CACHING
Статические файлы лежат на глобальных edge-серверах.
CSS, JS, изображения, видео, шрифты.
Меньше задержка у глобальных пользователей и разгрузка основного сервера.

3) APPLICATION-LEVEL CACHING
Кэш внутри приложения.
Например, структуры в памяти вроде LRU cache.
Очень быстро, но работает в рамках одного сервера.

4) DISTRIBUTED CACHING
Общий кэш для множества серверов.
Инструменты: Redis, Memcached.
Подходит для горизонтального масштабирования и устраняет дублирование кэша.

5) DATABASE QUERY CACHING
Базы хранят результаты частых запросов.
MySQL Query Cache, Postgres внутренний кэш, MongoDB WiredTiger.
Ускоряет повторные чтения.

6) WRITE-BEHIND
Запись идет в кэш, а в базу — асинхронно.
Снижает задержку записи.
Подходит для систем с высокой нагрузкой на запись.

7) WRITE-THROUGH
Записи попадают в кэш и базу одновременно.
Гарантирует консистентность.
Немного медленнее из-за двойной записи.

8) CACHE-ASIDE
Приложение сначала проверяет кэш.
Если промах — идет в базу, затем помещает результат в кэш.
Гибкий и самый популярный вариант.

9) READ-THROUGH
Приложение всегда читает из кэша.
При промахе сам кэш получает данные из базы.
Кэш всегда остается обновленным.

10) TTL И ПОЛИТИКИ ИСТЕЧЕНИЯ
Каждая запись имеет срок жизни.
TTL, LRU, LFU, FIFO — разные режимы очистки данных.

11) INVALDATION
Ручное удаление ключей, удаление по шаблону, автоматическое истечение по TTL или лимиту памяти.

12) MULTI-LAYERED CACHING
Несколько уровней сразу: браузер, CDN, распределенный кэш, кэш приложения.
Полезно для глобальных систем с большим трафиком.

Совет
Кэширование помогает добиться высокой скорости, низкой нагрузки на базу и хорошей масштабируемости.
Стратегию нужно подбирать исходя из размеров системы, интенсивности запросов и требований к консистентности.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from DevOps
🐧 Продвинутый Linux/DevOps совет: используйте `systemd-run` для мгновенного запуска задач в изолированных временных сервисах - без написания unit-файлов.

Фишка:
systemd-run позволяет запускать команды как полноценные systemd-сервисы "на лету".
Это идеальный инструмент для временных задач, отладки, ограничения ресурсов и тестирования поведения в боевых условиях.

Примеры:

1) Запуск команды в отдельном cgroup с лимитом CPU:
systemd-run --scope -p CPUQuota=20% bash -c "make build"

2) Запуск периодической задачи без cron:
systemd-run --on-calendar="hourly" /usr/local/bin/cleanup.sh

3) Проверка сервиса в sandbox-режиме:
systemd-run --property=PrivateTmp=yes --property=ProtectSystem=strict bash

4) Изоляция для небезопасной команды:
systemd-run -p NoNewPrivileges=yes -p PrivateDevices=yes ./script.sh

Чем полезно:
- Не нужно создавать и чистить unit-файлы
- Команда получает все преимущества systemd: логи, cgroups, sandbox
- Отлично подходит DevOps-инженерам для тестов и временных задач
- Позволяет гарантировать безопасность и стабильность окружения

Если вы ещё не используете systemd-run как «одноразовый unit-файл», попробуйте - это один из самых недооценённых инструментов systemd.
🔥4👍1
Forwarded from Код и Капуста
Умереть от датарейс

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

Статья с примерами гонок и других ошибок при написании конкурентного кода

#golang

https://kodikapusta.ru/news/etpu-umeret-ot-datareis
Forwarded from k8s (in)security (Дмитрий Евдокимов)
songbird - простенький CLI инструмент, упрощающий жизнь и работу с NetworkPolicy (к сожалению, только нативными). А именно данный инструмент позволяет:
1) Проверять достижимость между Pods или к конкретному адресу через анализ NetworkPolicy. То есть помогает ответить на вопрос "а они вообще могут общаться друг с другом или нет?"
2) Сгенерировать NetworkPolicy для общения между двумя сервисами
3) Отобразить все сетевые политики, которые влияют на выбранный Pod

P.S. Определенно ряд мыслей мы подсмотрим для Luntry, расширив поддержкой Calico и Cilium ;)
1👍1
Forwarded from DevOps FM
От values-файлов к управлению вариантами конфигураций в ConfigHub: как перестать рендерить вслепую

В этот понедельник поговорим о переходе от классического Helm-подхода с values.yaml к модели Configuration as Data, которая реализует себя в ConfigHub. Если вы всё ещё храните values.yaml для разных сред, при аварийных запросах запускаете helm template и парсите YAML – рекомендуем сменить подход. В ConfigHub реализуется модель «конфигурация как данные»: вместо того чтобы каждый раз генерировать YAML из шаблонов по запросу, вы создаёте готовый манифест один раз.

Как внедрить подход?
Развертывание базового окружения (Infra Space)

1. Добавляем репозиторий Helm:

helm repo update


2. Разворачиваем базовое окружение для инфраструктуры:
cub space create infra


3. Устанавливаем Helm-чарт через ConfigHub:


cub helm install --space infra \
--use-placeholder=false \
--namespace monitoring \
prometheus prometheus-community/kube-prometheus-stack \
--version 79.6.1


• ConfigHub использует движок Helm для однократного рендеринга чарта.
• Результат сохраняется как материализованный, версионируемый и индексируемый артефакт (Config Unit).

Создание пространств для окружений (Spaces)
1. Создаем пространства для каждого целевого окружения:
cub space create dev
cub space create prod

2. В качестве альтернативы – создаем пространства через UI ConfigHub, используем кнопку [Add] на странице списка Spaces.
3. Каждое пространство будет содержать копии базовых конфигураций для конкретного окружения.

Клонирование и создание Вариантов (Variants)
Variant – это копия Config Unit, которая создается через операцию Clone.

1. Создаем Dev Variant из базового окружения:
2. Выбираем чарты в infra space.
3. Выбираем dev space как цель.
4. Нажимаем [Clone Units].
5. Создаем Prod Variant из Dev Variant аналогично.

⬆️Так, мы получаем цепочку конфигураций:
[infra's Helm charts] → [dev's Helm charts] → [prod's Helm charts]

Аналогичную концепцию можем использовать в Kustomize. Мы начинаем с базовых ресурсов, а затем добавляем к ним «Dev Overlays».

Мгновенный доступ к конфигурациям
1. После клонирования не требуется повторный рендеринг.
2. Получаем точные манифесты для окружений:

Dev

cub unit get --space dev prometheus --data-only


Prod

cub unit get --space prod prometheus --data-only


Получаем готовый YAML, а не шаблон или переменную.

Решение сценариев «Fire Drill»
1. Так как конфигурации сохранены как данные, можно выполнять поиск и анализ без повторного рендеринга:

Поиск уязвимых образов

cub unit list --space "*" \
--resource-type monitoring.coreos.com/v1/Prometheus \
--where-data "spec.image ~ '.*registry.compromised.com.*'"


Поиск образов

cub unit list --space "*" \
--resource-type monitoring.coreos.com/v1/Prometheus \
--where-data "spec.image ~ '.*quay.io.*'"


👀Подводные камни и что делать:
• Нативные зависимости и postinstall хуки. При рендере учитывайте, что некоторые чарты рассчитывают поведение во время выполнения. Обязательный этап – прогон тестов в staging.
• Избежание версионных конфликтов Helm чартов, за счет фиксирования версий чарта; используйте lock-файлы чарта или helmfile для управления групповыми релизами.

Делимся полезными ресурсами:
⚙️Интеграция ConfigHub-workflow с CI/CD (build → render → store → apply), примеры для GitHub Actions/GitLab CI и рекомендации по кэшированию здесь.
How-to по Variants и GitOps (ArgoCD/Flux) – синхронизация «данных-конфигураций» с Git и кластерами (Kustomize в ArgoCD), подробнее тут.

#confighub #kubernetes #helm #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥2
Forwarded from /usr/bin
Разбираем подводные камни, ошибки и лучшие практики при разработке Kubernetes-операторов

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


Читать дальше на Хабре.
Forwarded from DevOps
🚀 Удобное управление CI/CD с Pipedash

Pipedash — это настольное приложение, которое объединяет CI/CD пайплайны из различных провайдеров в одном интерфейсе. Вместо того чтобы переключаться между разными панелями управления, вы можете отслеживать статус всех своих пайплайнов в одном месте. Приложение поддерживает GitHub Actions, GitLab CI, Jenkins и другие.

🚀 Основные моменты:
- Объединяет данные из нескольких CI/CD провайдеров
- Автоматическое обновление статусов пайплайнов
- Поддержка плагинов для добавления новых провайдеров
- Локальное хранение данных без аналитики и телеметрии
- Доступно для macOS, Windows и Linux

📌 GitHub: https://github.com/hcavarsan/pipedash

#rust
🔥5
Forwarded from Загадки DevOpsa
Лучшие практики и технологии DevOps в 2025 году

17 декабря в 17:00 в прямом эфире на Twitch у нас большой созвон по девопсу!

В гости заглянут сразу двое:
Вячеслав Федосеев и Александр Крылов
Будем честно меряться тем, чем реально пользуемся в работе, сравнивать, спорить и много шутить. Разберём по полочкам:

1) Инструменты, которые крутим каждый день:
👉🏻 kubectl vs k9s vs Lens vs kube-dashboard — кто у кого выигрывает в 2025?
👉🏻 bash vs fish vs другие расширения CLI — где продуктивность, а где фан?

2) Сервисы, без которых не живём в проде:
👉🏻 grafana + loki + prometheus vs zabbix + ELK (и вся «семья»: vector/click, victoria metrics, psql, mimir) — что брать под разные сценарии.
👉🏻 GitHub Actions vs Jenkins vs GitLab CI — где скорость, где боль, а где надёжность.

Обсудим самое жаркое по-девопсерски

И да, ещё раз для тех, кто любит напоминалки: 17 декабря, 17:00

Сс
ылку на трансляцию, как всегда, скину накануне)
👎4👍1🔥1
Forwarded from /usr/bin
Мы перестали использовать Docker в 2025 году — вот что пришло ему на смену

Вопрос не в том, умер ли Docker? Вопрос скорее в том, удовлетворяет ли Docker ваши потребности, или вы удовлетворяете потребности устаревшего Docker?

В этой статье рассказано о причинах переезда с Docker на другие контейнерные и бессерверные технологии, а также приведен пошаговый план такой миграции.

Отметьтесь в комментариях кто тоже рассматривает миграцию с Docker или уже смигрировал. Возможно, у вас есть интересный кейс, который будет любопытен другим читателям канала.
Forwarded from DevOps Brain 🧠
🔖Лучшие практики конфигурирования Kubernetes в 2025 - Часть 3: безопасность, логи, наблюдаемость и graceful shutdown

Ну что, котлеги, надеюсь вы нашли для себя что-то полезное в предыдущих 2 частях. Если это так - то не скупитесь ставить 🔥.

Это дает мне понять, что материал полезен и вам интересно то о чем я пишу.

Пришло время ехать дальше и вот что я вам скажу: есть два подхода к продакшену - “потом прикрутим безопасность/метрики/грейсфул” и “почему оно снова умерло. Открываем логи и метрики и смотрим!”. Обычно команды быстро мигрируют от первого ко второму - через боль, но мигрируют. 🤪

Эта часть c кучей примеров про безопасность подов, сетевые политики, наблюдаемость (метрики/логи/трейсы), корректное завершение (SIGTERM, draining) и управление образами. Применение этих практик сделает инциденты для вас диагностируемыми и переживаемыми - даже когда всё идёт не по плану.

https://devopsbrain.ru/posts/2025-12-10-kubernetes-best-practices-2025-chast-3/

#kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Forwarded from John Doe
🔥 VictoriaMetrics Q4 Virtual Meetup уже совсем скоро!🔥

Присоединяйтесь к нам через несколько часов!

👉 https://youtube.com/live/yuZ_JkOx1uo

🕔 Сегодня в 17:00 GMT / 18:00 CET / 9:00am PT.

В сегодняшней программе:
🟣 Последние обновления VictoriaMetrics

📕 Spotify — история клиента: Lauren Roshore, Менеджер по инжинирингу в Spotify Engineering выступит с докладом «Как и почему мы используем VictoriaMetrics»

🤖 Инновации в Anomaly Detection
☁️ Что нового в VictoriaMetrics Cloud
📜 Последние обновления VictoriaLogs
🔥 Обновления в VictoriaTraces
🌍 Новости сообщества + ⁉️AMA

Не упустите свой шанс узнать новое, задать вопросы и пообщаться с сообществом VictoriaMetrics!
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Мониторим ИТ
Минимальный набор практик для микросервиса

Если вы Go-разработчик и к вам пришли и сказали "мне нужны твои метрики, трейсы и логи", прочитайте эту статью. Здесь собраны рекомендации, например, о том, что нужно разделять логи на технический поток и поток аудита. А еще:
Почему я так упираюсь в связку “трейсы + логи”? Потому что это реально магия. Ты открываешь проблемный трейс, видишь trace_id, и дальше хочешь в один клик найти все логи по этому запросу. Чтобы это работало, логгер должен вытаскивать trace_id и span_id из контекста.

И еще:
Идея простая: у каждого запроса есть trace_id, и по нему ты видишь весь путь запроса через сервисы, очереди, базы и внешние интеграции. Внутри trace есть span — атомарные операции. Хорошая новость в том, что большая часть спанов создаётся автоматически, если ты используешь нормальные инструменты (HTTP middleware, SQL драйверы с OTel-инструментацией, клиенты Kafka/Redis и т.д.). Плохая новость в том, что бизнес-логика “между ними” сама себя не оттрассирует, и иногда надо уметь добавить span руками.

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

Плюс есть технические метрики, которые не про сервис в целом, а про конкретную бизнес-механику: сколько сообщений улетело в DLQ, сколько промахов у кэша, как часто включается fallback. Такие числа позволяют развивать сервис на цифрах, а не на ощущениях.

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

@monitorim_it
👍2
Forwarded from /usr/bin
Как мы сократили расходы на Kubernetes примерно на 78% без единой секунды простоя

В этой статье разобрано каким образом снизить стоимость инфраструктуры для кластера k8s простой проверкой утилизацией ресурсов. А также приведен пошаговый план миграции на более дешевое железо.
Forwarded from Мониторим ИТ
Introducing Observable Load Testing = Locust + OpenTelemetry!

Проблема: Традиционное нагрузочное тестирование включает в себя обширную ручную корреляцию данных с бэкэндом и часто заходит в тупик из-за «слепых зон» в коде приложения и распределенных системах.

Решение: Благодаря автоматической инструментации скриптов Locust с помощью OpenTelemetry, нагрузочные тесты теперь будут генерировать сигналы OpenTelemetry. Эта телеметрия нагрузочных тестов передается в платформу мониторинга на основе OTel в режиме реального времени, позволяя визуализировать каждый запрос нагрузочного тестирования и отслеживать всю его транзакцию. Теперь у вас есть полная сквозная видимость — ваши запросы нагрузочного тестирования коррелированы с вашим приложением, инструментированным OTel.


Статья с описанием подхода (на портале medium.com)

Locust — это инструмент с открытым исходным кодом для тестирования производительности и нагрузки HTTP и других протоколов. Его удобный для разработчиков подход позволяет определять тесты в обычном коде Python.

Тесты Locust можно запускать из командной строки или с помощью веб-интерфейса. Пропускную способность, время отклика и ошибки можно просматривать в режиме реального времени и/или экспортировать для последующего анализа.

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

Репыч на Гитхаб
👍1
Forwarded from Mops DevOps
Docs-as-Code (DaC) — это подход к созданию и сопровождению технической документации с использованием тех же инструментов и рабочих процессов, что и при разработке программного кода. Этот метод легко интегрирует документацию в жизненный цикл разработки программного обеспечения, способствуя сотрудничеству, контролю версий и автоматизации.

🔹 Docs as Code: введение в предмет

🔹 Docs as Code: настраиваем инструменты под себя

🔹 Как мы пытались в Docs as Code и проиграли

🔹 Победить хаос в документации: почему мы создали свой продукт для Docs-as-a-Code

#docs
2👍2
Forwarded from Мониторим ИТ
r9y.dev

По ссылке выше вы найдете ответ как прокачать практику SRE в вашей организации и пройти путь от 90.0% к 99.999%. Каждый топик на этой карте сопровожден ссылкой с описанием практики, преимуществами её внедрения и ссылками на релевантные материалы.

Нельзя назвать эту карту таблицей зрелости, это скорее ориентир-путеводитель. Я бы смотрел на эту карту с точки зрения ваших текущих задач и потребностей. Если вы понимаете, что работает не так или часто тушите пожары, то смотрите в нужное место на карте и смотрите как такие задачи закрываются. Весьма удобная штука.

@monitorim_it
👍2
Разверните свою облачную среду за несколько минут: виртуальные машины, S3-совместимое хранилище, Managed Kubernetes, базы данных.

▪️Быстрый старт, прозрачный биллинг, российские дата-центры.
▪️Удобные интерфейсы управления: веб-консоль, CLI, API, Terraform.
▪️Собственная разработка: развиваем облако так, как нужно пользователям, а не ждём решений от вендоров.

Развивайте свои IT-продукты. Об инфраструктуре позаботится облако.

Попробуйте MWS Cloud Platform бесплатно с грантом для новых пользователей.
👎2
Forwarded from Мониторим ИТ
12 дашбордов для дежурных, которые успокаивают всех

В этой статье приведены примеры 12 дашбордов для Grafana, которые хорошо помогают быстро диагностировать проблему. Опыт и еще раз опыт.

@monitorim_it