Пятничный деплой
4.36K subscribers
1.27K photos
24 videos
163 files
7.52K links
Подборка ссылок, статей и постов из мира DevOps\SRE\разработки. Если вы хотите прислать фидбек, интересную статью или просто поболтать пишите @count0ru https://t.me/s/count0_digest
Download Telegram
Forwarded from Performance matters!
В нашей инфраструктуре мы давно используем PSI (Pressure Stall Information) для выявления перенасыщения (saturation) ресурсов: CPU, диск, память.

Есть мнение, что saturation — ключевой показатель, по которому легко понять состояние системы. Вокруг него построена методология USE Method.

PSI призван заменить Load Average, который не позволяет быстро и точно определять состояние системы.

Изначально PSI собирал данные per host — полезно, но шумно в контейнерных средах с множеством cgroup.

В Cgroup v2 появилась поддержка PSI для отдельных cgroup, а скоро cadvisor добавит сбор PSI по каждому контейнеру — вот тогда заживем!

P.S. Если будет запрос, могу в будущих заметках углубиться в детали. Дайте знать! 😊

tags: #cpu #k8s #metrics
Разбираем cron-like решения

Иногда в приложениях нужно выполнять задачи по расписанию: чистить кеши, отправлять отчёты или делать бэкапы. В Go есть несколько способов — от стандартных инструментов до сторонних библиотек.

Простой вариант — time.AfterFunc() или time.Ticker()

time.AfterFunc позволяет выполнить функцию однократно после заданной задержки:
time.AfterFunc(3*time.Second, func() {
fmt.Println("Executed after 3 seconds")
})


ticker
используется для периодического выполнения задач через определенные интервалы времени:
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()

for i := 0; i < 3; i++ {
<-ticker.C
fmt.Println("Task executed at:", time.Now())
}



Сторонние библиотеки robfig/cron и gocron

robfig/cron поддерживает синтаксис crontab для планирования задач:
c := cron.New()

// Планируем задачу каждые 5 секунд
c.AddFunc("*/5 * * * * *", func() {
fmt.Println("Cron job executed at:", time.Now())
})

c.Start()


gocron предлагает простой API для повторяющихся задач:
s := gocron.NewScheduler(time.UTC)

s.Every(10).Seconds().Do(func() {
fmt.Println("Scheduled task executed at:", time.Now())
})

s.StartAsync()


Системный cron

Вместо того чтобы держать Go-процесс постоянно запущенным, можно использовать системный демон cron для выполнения Go-скриптов.
* * * * * /path/to/your-go-program


Если нужна простая задержка – хватит time.Ticker(). Если расписание сложнее – берём cron или gocron.

➡️ Разбор всех вариантов — в статье

🐸Библиотека Go разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Ever Secure (Aleksey Fedulaev)
Запись созвона сообщества, уже на всех площадках!
- 📹Youtube
- 💳Boosty
- 📺VK Video
- 📺Rutube

было много разных вопросов и вижу интерес комьюнити к теме найма, предлагаю сделать еще один созвон. Вопросы можно покидать сюда:
https://forms.gle/ZUxQGKMcLvBVHbTF7

👀@ever_secure
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Разработка CLI-приложения с миграциями и генерацией кода

Показываем ещё один пример приложения на Go. В нём можно попрактиковать:

• Настройку окружения: подключение PostgreSQL к Go.

• Работу с миграциями: управление схемами базы данных.

• Генерацию кода: ускоряем разработку и минимизируем ошибки.

• CLI-инструменты: автоматизация работы с БД.

Как это можно использовать


1️⃣ Менеджер задач. Создаешь CLI-приложение, где можно добавлять, удалять и редактировать задачи в БД.

2️⃣ Блог-платформа. Автоматически генерируешь код для работы с постами, комментариями и пользователями.

3️⃣ CRM-система. База клиентов, заказы, отчеты – все управляется через CLI.

🖇 В статье всё подробно разобрано с кодом и пояснениями.

🐸Библиотека Go разработчика
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from HABR FEED + OPENNET
Опубликована распределённая СУБД Citus 13.0 #opennet
https://www.opennet.ru/opennews/art.shtml?num=62701

Компания Citus Data, принадлежащая Microsoft, опубликовала распределённую СУБД Citus 13.0, реализованную в форме расширения к PostgreSQL 17. Citus обеспечивает горизонтальное масштабирование PostgreSQL в кластере на базе типового оборудования и позволяет разносить данные по узлам при помощи шардинга (sharding) с настройкой разделения на уровне столбцов и схемы хранения. Для приложений кластер Citus выглядит как один большой сервер PostgreSQL, объединяющий ресурсы образующих его узлов. Код написан на языке Си и распространяется под лицензией AGPLv3.
Podlodka #411 – Открытые зарплаты

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

Некоторые компании решаются на радикальный шаг — открывают информацию о зарплатах для всех сотрудников. Зачем они это делают? Какие плюсы и риски несет эта практика?

Включайте выпуск! В гостях — Антон Бевзюк, который рассказал об опыте внедрения открытых зарплат на примере MindBox.

🎧 Слушать выпуск

👀 Смотреть выпуск


👉Предложить себя в подкаст
Forwarded from /usr/bin
Разрабы «Штурвала» говорят: «Ванильный Кубер больше не нужен!» Верим?

На YouTube вышла долгожданная прожарка community-версии контейнерной платформы «Штурвал». В эфире — live-demo, острые вопросы и экспертное заключение, на что годится платформа.

Если еще не видели стрим — самое время наверстать. Ну и чтобы самим убедиться, что к чему, получить Штурвал CE можно по ссылке.

#реклама
О рекламодателе
Forwarded from Евгений Козлов пишет про IT (Eugene Kozlov)
CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 20. Golang.

Сегодня разбираем язык Go и то как в нем развивались примитивы для параллелизма и конкуррентности.

🔵 Сразу несколько фактов:
- В языке Go нет потоков в том смысле в котором вы видели в предыдущих постах (1-1 mapping на потоки ОС)
- В языке Go нет GIL и как следствие нет надобности писать многопроцессный код для достижения параллелизма, процессы скорее будут давать оверхэд чем пользу.

🔵 Что же есть в Go:
- Горутины - легковесные нити исполнения которыми управляем Go Runtime. Горутины реализуют M-N модель многопоточности. Подробнее об этой модели писал в посте. Такая модель позволяет достичь пареллелизма на многопроцессорном компьютере.
- Планировщик, который следит за горутинами и переключает их между собой для эффективной утилизации железа.

🔵 Планировщик. Как происходит переключение между горутинами?
В языке Go до версии 1.14 горутины были кооперативными, то есть если горутина завладевала потоком и не отпускала владение (пример - долгий цикл обсчитывающий какой нибудь интеграл) то мы могли заблокироать всю программу.

С версии 1.14 планировщик стал вытесняющим и переключение горутин стало автоматическим, вне зависимости от того чем занимается горутина, CPU или IO задачами. Слайс времени переключения - 10ms.

В этом смысле Go очень выделяется среди языков программирования, особенно среди тех которые я обозревал ранее. В Python, Ruby, Java реализации легковесных потоков кооперативные, то есть переключения происходят только если в коде есть инструкция или поток заблокировался об IO.

🔵Ограничение параллелизма. GOMAXPROCS
В Go есть возможность указать рантайму сколько потоков ОС могут исполнять наш код параллельно. И как следствие этой переменной мы можем ограничить количество ядер которые может использовать наша программа.

🔵 Что еще интересного предлагает Go?
В Go совсем необязательно писать код в том же стиле в котором его пишут на C или C++ с мьютексами. Golang предоставляет возможность процессам общаться друг с другом посредством сообщений в каналах. С точки зрения выразительности кода это совсем не похоже на то что вы могли видеть в большинстве языков.

-----

На этом всё, спасибо что читали! 😊 Если пост зашел буду рад поддержке в любом виде.
Forwarded from /usr/bin
GRUB и параметры ядра в Linux

GRUB — это первый, кого видит твоя система после BIOS/UEFI. Он решает, какое ядро загружать, какие параметры передавать, и вообще, даст ли он тебе шанс на нормальный рабочий день или отправит в режим паники. Читать дальше.
🛠 Oracle Linux Enhanced Diagnostics.

Ещё в январе Oracle выкатили занятный набор инструментов и скриптов для анализа производительности и работы системы. Изначально, эти утилиты разрабатывались для внутренних нужд компании, но некоторое время назад они стали доступны для сообщества:

- https://blogs.oracle.com/linux/post/oracle-linux-enhanced-diagnostics
- https://github.com/oracle/oled-tools

В наборе имеем следующее:

lkce (Linux Kernel Core Extractor) – формирует отчёты на основе анализа vmcore дампа.
memstate – анализирует использование памяти а системе. Может быть полезным для выявления возможных утечек памяти и таких проблем как фрагментация, ошибки в hugepages, странности в работе NUMA.
kstack – собирает и анализирует стек-трейс для процесса (группы процессов), находящихся в состоянии D (D state). Выглядит полезным для диагностики зависших процессов в системе.
syswatch – выполняет пользовательские команды при достижении определённого уровня загрузки CPU. Полезно для диагностики скачков потребления CPU в системе.
scanfs – проверяет образы дисков KVM на предмет повреждений файловых систем без необходимости останавливать виртуальные машины. Поддерживает XFS и EXT4 на данный момент.
vmcore_sz – оценивает размер vmcore-дампа до его генерации, что помогает заранее планировать процесс его обработки.
scripts – набор скриптов, предназначенных для отладки специфических проблем, например, диагностики сетевых соединений.

Подробности о работе с инструментами доступны в блоге инженеров Oracle:

Introducing Oracle Linux Enhanced Diagnostics.
scripts - A tool to run various useful OLED diagnostic scripts.
Memstate - OLED.
Scanfs - OLED.
Syswatch - OLED.
Kstack - OLED.
Lkce - OLED.
SCSI DTrace - OLED.
RDS DTrace - OLED.

#perf #oled #tools
Forwarded from HABR FEED + OPENNET
Тестируем Kubernetes. Vol 2 / Golang edition #habr
https://habr.com/ru/companies/selectel/articles/882026/
Tags: selectel, kubernetes, go, golang, terratest, tests, testify, gpu, тестирование видеокарт
Author: lokosst (Selectel)
Forwarded from Мониторим ИТ
Замолвите словечко за akvorado

Akvorado - это Netflow-коллектор с функциями визуализации собираемого трафика. К публике он вышел в 2022 году. Очень прост для установки, развертывания и возможно даже обслуживания (если вы чуть-чуть знаете Сlickhouse).

Статья на Хабре

Репыч на Гитхабе
Forwarded from /usr/bin
Устраняем эффект шумного соседа в PostgreSQL с помощью cgroups

Приходилось ли вам запускать на одной виртуальной или физической машине несколько экземпляров PostgreSQL или любого другого ПО? Зачастую это вызывает эффект шумного соседа: приложения «отбирают» друг у друга ресурсы и мешают корректной работе. Если коротко, то решение запуск БД в контейнере. Читать дальше.
Запись стрима с Филом Дельгядо готова

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

И КСТАТИ: Фил согласился прочитать приглашенную лекцию по микросервисам для слушателей нашего хайлоад-потока (сисдизайн, производительность и масштабирование). Это прям очень круто, я жду этого события с нетерпением и завидую, что у меня просто не было возможности так учиться. Группы у нас почти сформированы, так что это сообщение – last call.

На встрече с Филом обсуждали:
- является ли секция по системному дизайну (system design) необходимым этапом или нет
- почему design-секции могут приносить больше вреда, чем пользы
- чем их можно заменить и масштабируется ли этот подход для больших компаний
- как готовиться тем, для кого design-секция неизбежна

Таймкоды:
1:00 Определяемся с терминами, в целом что не так с дизайн-интервью
3:00 Углубляемся в сценарий интервью: что плохого в том, чтобы за час попытаться спроектировать "саджестер" или "укорачиватель урлов"
11:00 Обсуждаем собственно навыки и виды проектирования
16:00 Что нам нужно проверять на интервью, и что проверяет Фил?
18:22 Как нанять человека, который сразу же должен будет заниматься проектированием?
19:58 Какие дизайн-документы пишут программисты в компании Фила
23:45 Фил не соглашается со взглядом на дизайн-секцию как на погружение вглубь, под капот разрабатываемых систем и компонент
26:18 Обсуждаем дизайн-секцию с позиции "продуктовой" компании: как проверить, что человек умеет быстро "схватить" продуктовую идею и выдать решение в первом приближении, поработав самостоятельно с продуктовой позиции
31:35 Компания растет: как поставить пайплайн интервью "на поток" и стандартизировать найм? Нужно ли это?
38:00 Фил противопоставляет "эффективность" "прозрачности", и рассказывает, почему не верит в чек-листы и вообще формализм в найме, а Алексей сомневается, что идеальный процесс Фила вообще можно организовать
50:00 Как решать проблему ухудшающего отбора, держать высокую планку и защититься от "протухания", если отказаться от формальных процессов и стандартов найма по всей компании
54:25 Нужна ли компании "единая культура"?
1:00:00 Можно ли нанять человека за 1-2 интервью? Обсуждаем короткие серии интервью, кто его должен проводить, что проверять. Почему бигтехи делают 4-5-6 интервью?
1:07:40 Проектирование как скилл, который всё равно придется демонстрировать: как готовиться к интервью? Как разузнать детали, что спрашивают и что ожидают в процессе интервью в конкретной компании?
1:14:00 Что читать? Есть ли альтернативы книжке Сюя?
1:15:00 Мок-интервью (в том числе публичные) имеют ли они смысл в подготовке?
1:16:00 Какие области знания были для Фила важными в процессе профессионального роста?
1:21:00 Фил вспоминает свои ошибки в начале карьеры
1:23:00 Ответы на вопросы, которые задавали в чате: самая сложная задача, самый сложный архитектурный выбор и тд

https://www.youtube.com/watch?v=Fd5uwfmZjRM

——

Last call! 24 февраля старт хайлоад-потока
- Системный дизайн высоко-нагруженных проектов (3 месяца, онлайн): учимся проектировать и масштабировать большие проекты, разбираем и проектируем системы, рассчитанные на 100M DAU.
- Производительность и масштабирование (3 месяца, онлайн), хардкор с инфрой: управляем своим Linux-сервером, “выжимаем" 100K RPS, работаем с кластерами Redis, CockroachDB, SPQR+PostgreSQL
Forwarded from GitHub'ненько
Pangolin is a self-hosted tunneled reverse proxy server with identity and access control, designed to securely expose private resources on distributed networks. Acting as a central hub, it connects isolated networks — even those behind restrictive firewalls — through encrypted tunnels, enabling easy access to remote services without opening ports.
#security #selfhoster #reverseproxy #identity #wireguard #tunnel #tailscale
https://github.com/fosrl/pangolin
Forwarded from DevOpsConf Channel
Как правило, когда говорят о комбинации vector.dev и ClickHouse, то речь идет о логировании. Для остальных из трех китов наблюдаемости — метрик (мониторинге) и трейсов — используют другие решения.

Посмотрите запись доклада Максима Залысина «Distributed Observability» — его уникальность в том, что для всей системы observability используется единый стек.

💙 Смотреть в VK Видео

#записьдокладаDevOpsConf
@DevOpsConfChannel
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Мониторим ИТ
MySQLTuner-perl

MySQLTuner — это скрипт, написанный на Perl, который позволяет быстро просматривать настройки инсталляции MySQL и вносить в них изменения для повышения производительности и стабильности. Текущие переменные конфигурации и данные о состоянии извлекаются и представляются в кратком формате вместе с некоторыми базовыми рекомендациями по производительности.

Репыч на Гитхабе
Forwarded from Кубертатный период (Pavel Klyuev)
This media is not supported in your browser
VIEW IN TELEGRAM
AI-тулы, которые бустят производительность в работе с Kubernetes
Решил рассказать про пару штук, которые упрощают жизнь SRE-шнику.

🚀 k8sgpt
Сканирует кластер, вылавливает косяки и сразу выдаёт, как их пофиксить. Недавно выручил: ночью словил алерт, а он за минуту показал, что поды дохнут из-за кривого health check’а. Пока я курил, он уже всё разложил по полочкам.

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

🛠 karpor
UI, где поиск по ресурсам — хоть текстом, хоть SQL, хоть "эй, где мой под упал?". AI-агент ещё и саммари выдаёт: что нарушает лучшие практики. Штука мощная, если лень копаться руками.

👩‍💻 kube-copilot
От Azure. Аудит подов на безопасность, диагностика багов, проверка практик. Плюс рулите кластером через промпты — типа "перезапусти этот под". Для ленивых — топ.

📖 Ещё тулов ищите тут.
А вы юзаете такое?
Please open Telegram to view this post
VIEW IN TELEGRAM