gram news
этогик // DevOps, Infrastructure, Productivity channel avatar

этогик // DevOps, Infrastructure, Productivity

@etogeek

🚀Блог DevOps-инженера. Вместе растем в хард- и софт скиллах, разбираемся как жить и работать продуктивно, ищем баланс во всем 🌿 📽 yt: https://www.youtube.com/@etogeek 🌍 site: https://etogeek.dev 🌿 chat: @etogeekchat Подробнее в закрепе 🦾

ProjectsRUProgramming

4,360subscribers

Open the Channel

Latest posts

  • этогик // DevOps, Infrastructure, Productivity

    4 Sept, 08:01

    Баланс в EdTechПодписан на канал Mischa van den Burg и там недавно вышло видео, где автор горит с того как сейчас выглядит образовательный контент. Вот, хочу немного мыслями поделиться.Сейчас видео для обучения часто подкрепляются огромным количеством анимаций, картиночек, двигающихся графиков, мемов. Ну или subway surfer сбоку... Даже знаю одного блогера, который на youtube-картинках подавал "с понятными анимациями" как киллер-фичу. Такого контента сейчас полно. Зачастую сложный и дорогой монтаж используется для удержания внимания аудитории. Это по сути одна из причин, почему я выгорел со съемкой образовательного контента.Понятно почему - в такое время живем, attention span у людей маленький, фокусироваться сложно, нужно как-то завлекать людей. Факт в том, что через анимации проще объяснять сложные концепты. Как работает Kafka, как бегает трафик по сети, как Кубер масштабируется
    1,31015611Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    31 Aug, 16:52

    Чтобы немного подвести итог серии постов про бекапы (раз и два), расскажу как я ими управляю в своей инфрастркутуре.Основная цель такого поста не показать единственный способ "как правильно" (такого нет), а поделиться моим опытом, из которого вы можете подцепить какую-нибудь идею и реализовать у себя.В общем, конечно же, я делаю это через ansible. У меня есть довольно сильно параметризируемая роль backups. В директории files я складываю bash-скрипты в сыром виде. Можно их там разбить на под-директории, чтобы было больше порядка.В инвентори у нужных хостов я описываю бекап по следующей структуре: backups: # список - можем описать несколько бекапов - name: billing_db_backup user: root # под каким юзером запускаем scripts: - script: billing_db_backup.sh # название скрипта из files script_dest: /etc/billing/scripts # куда положить скрипт schedule: { hour: 2, minute: 30 } #
    1,87017411Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    25 Aug, 15:20

    Мониторинг бекаповВ прошлый раз я говорил про PITR-бекапы для PostgreSQL, теперь хочу немного рассказать про мониторинг бекапов. Проблематика следующая - мы сделали бекап-скрипт, закинули его в crontab и забыли. Как будем проверять, что скрипт работает и бекапы создаются регулярно?Переключатель мертвеца - это некая система требующая постоянной активации, чтобы основная система продолжала работать. Например, педалька у высотного погрузчика, которую человек должен всегда нажимать, чтобы двигать погрузчик.Аналогичной штукой воспользуемся и с бекапами - на каждое успешное выполнение скрипта будем отправлять "пинг" в систему. Если пинг не придет в ожидаемое временное окно - получим алерт. Что может быть надежнее?Таких сервисов полно, я использую healthchecks.io. Раньше пользовался бесплатной версией, потом развернул self-hosted, чтобы обойти лимиты на хелсчеки.Интеграция простейшая:
    Image from a post by этогик // DevOps, Infrastructure, ProductivityImage from a post by этогик // DevOps, Infrastructure, Productivity
    2,45021311Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    21 Aug, 09:00

    Про бекапы. Хочу немного поделиться своим опытом в нескольких постах. Это больше информация для новичков, на которой я хочу и в дальнейшем фокусироваться, если честно. Синьоры-помидоры, вы итак это всё знаете (надеюсь).Что первое приходит в голову, когда мы говорим про бекапы баз данных?Ну, делать дамп раз в сутки через cron-таску и загружать его в отдельное хранилище. Есть говорить про PostgreSQL, то стандартный pg_dump достаточен для этого. А восстанавливаемся через pg_restore. Отлично подходит для небольших инстансов, всяких селф-хостед сервисов. Например, у вас развернуты self-hosted Metabase, Infisical, Grafana. База весит немного, дамп еще меньше - рестор быстрый.Проблем тут две: - мы теряем до 24 часов данных, в зависимости от того, как давно был снят последний бекап - при росте базы данных, особенно если это БД продукта, время рестора из дампа растет в прогрессииРестор
    2,73029158Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    13 Aug, 12:26edited

    Когда я преподавал в Практикуме (был такой период, да. еще и видео снимал), студенты часто возмущались, что менторы не дают прямого ответа на их вопросы. Они подсказывают направление для размышления, но не дают готовое решение.Я верю в то, что когда человек в процессе обучение натыкается на проблему и решает её сам - именно так он получает тот самый ✨ОПЫТ✨. Это не потерянное время.Наткнулся на видео от JetBrains Academy (7 минуток), про то, что происходит, когда новички учатся кодить с помощью Codex/Claude. Там разбирают интересное исследование, где группе студентов давали задачу и следили за тем как именно они приходят к решению.В большинстве случаев они давали рабочее решение, но студенты разделились на две группы с разным подходом: 1. понял, что нужно сделать - AI предлагает решение - оцениваю - принимаю/отбрасываю 2. не понимаю, что делать - AI предлагает решение - выглядит
    3,160331162Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    25 Jun, 14:41

    В последнее время я не то что бы очень часто делаю что-то прям техническое-девопсерское руками, и когда выпадает возможность что-то потраблшутить, можно сказать даже радуюсь этому. Вот вечером приходит алерт, что на виртуалке с VictoriaMetrics и Loki осталось
    4,090173Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    11 Jun, 09:05

    Уже довольно давно я сталкиваюсь с плавающими проблемами связи между Яндекс Облаком и Hetzner: у рандомного https- соединения скорость может упасть до 100кб/с. Способы стабилизировать это нашлись, а вот полностью решить так и не получилось.Захотелось замониторить эту скорость скачивания, чтобы найти какие-то закономерности (спойлер, на нашел).За несколько гугл-запросов подходящий экспортер не нашелся - в основом все проверяют скорость до speedtest-а, а мне нужны кастомные URL - например свой Nexus.Время сейчас такое, что если чего то нет, или функционал не устраивает, ты просто пишешь своё. Вот и я сделал download speed exporter:👉 https://github.com/etoosamoe/download_speed_exporterСобираем образ контейнера, запускаем, а в Prometheus или vmagent дергаем /probe-ручку с URL-ом целевого файла. В ответ получаем метрики по скорости скачивания. Дашборд есть в комплекте.На самом
    Image from a post by этогик // DevOps, Infrastructure, ProductivityImage from a post by этогик // DevOps, Infrastructure, Productivity
    4,35024842Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    27 May, 08:10

    Работа в небольшой продуктовой компании часто расширяет границы твоей позиции. Я уже давно не просто “девопс”, который перезагружает серверы и дебажит пайплайны. Вопрос плохо это или хорошо - оставлю каждому на размышление.Например, не так давно занимался сначала объединением двух "сайтов" Jira и Confluence в один. Такую попытку уже делал мой лид за полгода до этого, но всё разбилось об ограничения: проблемы при мерже, скачивание/загрузка бекапа и тд.А спустя время, оказалось, что Atlassian только-только выпустили новый инструмент как раз для переноса данных между “сайтами”. Он отработал просто превосходно, перенес проекты со всеми данными, аттачами и почти ничего не поломал.Затем приступил к миграции из Notion в Confluence. Это получилось более хаотично. Многие страницы в Ноушене были приватными. А к приватным страницам даже у админа нет доступа. Нужно просить сотрудников, у кого
    4,520211284Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    22 May, 09:03

    В последние недели погрузился в абсолютно новую для себя штуку - мобильную разработку. Точнее, DevOps-часть для нее.Всё новое, изначально ничего непонятно, даже то, с какой стороны подступаться к этому. Хорошо, что мы живем в 2026 году, где существуют ChatGPT и Claude. Но ответственность не позволяет навайбкодить все конфиги и решения. Вместо этого я сижу и делаю кросс-проверки, разбираюсь что и зачем нужно, какие инструменты есть, и почему именно они.Больше, конечно, ковырялся именно с iOS частью, потому что проверять сборку проще локально - андроид телефона у меня нет. Разобрался в целом с воркфлоу разработки: Xcode, Apple Developer аккаунт, bundle-id, загрузка в App Store Connect, публикация в TestFlight для внутренних тестировщиков.Понял, что если мы хотим тестировать приложение на dev-окружении, то по сути надо делать два приложения dev и prod. Потому что внутрь приложения
    3,960592562Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    2 Apr, 12:06

    Немного бомбления про Docker Swarm.Есть опция max_replicas_per_node - позволяет ограничить количество реплик сервиса на одну ноду.Кейс простой: две ноды, две реплики сервиса → хочу строго 1+1, чтобы не было перекоса по памяти.Ставлю: max_replicas_per_node: 1Логично? Логично.Дальше деплой новой версии с start-first (это как rolling update в кубе, чтобы без даунтайма):- Поднимается новый контейнер - Ждём healthcheck - Гасим старый - ПовторяемНо тут начинается веселье.
    4,460176522Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    26 Feb, 09:03

    Хочу немного рассказать про стек, о котором я раньше никогда не слышал, а четыре года назад пришлось плотненько познакомиться сначала со стороны администрирования, а спустя время - и чуть-чуть потраблшутить часть разработки.Добро пожаловать в мир Hadoop.Всё это поделие максимально плотно связано с Java и Apache. Есть несколько коммерческих дистрибутивов/платформ, но в целом всё это с горем пополам и чертовой матерью поднимается и вручную (хотя может я просто не умею его готовить).Hadoop - это фреймворк распределенной системы обработки данных, который состоит из нескольких продуктов. Ключевая идея - большие данные распределены и обрабатываются на кластере серверов.Расскажу про те, которые используются у нас.HDFS - Hadoop Distributed File System - это буквально сетевая файловая хранилка, с репликацией данных, большой пропускной способностью. Состоит из NameNode (мастер-ноды) со
    5,59026941Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    20 Feb, 14:08

    Redis - это такая key-value база данных, часто используется для кэша, часто - как очередь для Celery, либо для других целей. Ее особенность в том, что все данные она хранит в оперативной памяти, из-за чего очень быстро работает. Если данные нужны, то в случае перезагрузок/перезапусков или просто по времени Redis может сохранять слепок на диск.В одном внутреннем сервисе Redis стал кушать ну слишком много памяти. Даже виртуалку повесил по OOM-у.Полез разбираться. Оказалось, что в одной базе лежит неприлично больше количество ключей - около 2 млн. Посмотрел, что в ней хранится - токены сессий для API. Хм, а у них в коде MAX_AGE стоит 180 дней всего.Спускаюсь ниже по коду, там где для записи указывается TTL: expire=int(datetime.utcnow().timestamp()) + SESSION_MAX_AGEНу вроде хорошо, берем текущий таймштамп и плюсуем 180 дней. Так и записываем.Пошел в документацию библиотечки: expir
    Image from a post by этогик // DevOps, Infrastructure, ProductivityImage from a post by этогик // DevOps, Infrastructure, Productivity
    4,58049171021Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    11 Feb, 08:50edited

    Про миграции в базе данных, блокировки и lock queue.Значит, ситуация: CD-пайплайн запускает миграцию в БД, которая делает совершенно рядовой ALTER TABLE - например добавляет колонку или меняет поле. Миграция должна пройти за считанную секунду, но она зависает, и приходит алерт, что прод перестал отвечать на запросы.Представили? А мне и представлять не нужно. Рассказываю до чего докопался и что узнал.Каждый SELECT запрос в PostgreSQL создает блокировку - AccessShareLock на таблицы, которые он задействует. Это самый нестрогий лок, он не конфликтует с другими запросами и локами. Кроме одного.AccessExclusiveLock - создается при различных изменениях таблиц: DROP, ALTER, TRUNCATE и тд. Этот единственный лок, который блокирует другие SELECT запросы. (подробнее про локи тут).В базу отправляется жирнющий SELECT-запрос, который выполняется, скажем, 60 секунд. Все это время на таблице
    4,090191481Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    5 Feb, 10:22

    Классный пример поддержки от SaaS. Именно такой уровень вовлеченности ожидаешь от поддержки крупного (очень) сервиса.Я сейчас занимаюсь переездами в небезызвестный Confluence (поделие Atlassian) из всяких Notion-ов, из соседних пространств, меняю структуру разделов и т.д. И наткнулся на неочевидную проблему - не видно страниц внутри некоторых разделов. А поиском - видно.Написал тикет, поставил галочку "можно получить доступ в наш инстанс" и стал ждать.Через полчаса увидел в списке пользователей сотрудника Atlassian, а еще через полчаса в почту пришел ответ. В нем самое интересное.Во-первых, текст был не похож на LLM-ответ. Вероятно был отформатирован, но само написание выглядело человеческим. Такое - редкость сейчас.Во-вторых, он содержал несколько скринов, подробное описание того, в чем проблема. А главное, чел написал, что в одном разделе всё пофиксил и записал ВИДЕО
    4,150176Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    3 Feb, 08:22

    В последнее время я не то что бы очень часто делаю что-то прям техническое-девопсерское руками, и когда выпадает возможность что-то потраблшутить, можно сказать даже радуюсь этому.Вот вечером приходит алерт, что на виртуалке с VictoriaMetrics и Loki осталось <5% места. А я последний раз когда смотрел, там 160+ гигов было (из 300). Что-то явно пошло не так. Вряд ли это метрики, я давно не добавлял новые скрейп-таргеты, значит какие-то логи начали лететь.Начинаю смотреть графики виртуалки:- 22 декабря с 7 утра начал активно забиваться дискКак понимаю, что это именно Loki жрет место. Аномально много места занимают два конкретных чанка данных. Смотрим в ncdu или du -sh на директории с данными VM и Loki: --- /var/lib/loki/chunks/fake --- /.. 71.1 GiB [##########] /71a536873561d772 71.0 GiB [######### ] /4ed05483e3664242 9.9 GiB [# ] /47a1d97545945804 4.0 GiB [ ] /ab30104fb5a49027 3.4
    3,55025135Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    22 Jan, 10:49

    Пару постов назад я делился своим .zshrc файликом с алиасами и настройками ZSH. И в чате мне напомнили, что более сложные можно оборачивать в функции и даже скинули пример для git add/commit/push одной командой (спасибо, Саша!).Я его немного допилил: - добавил возможность писать без кавычек несколько слов, чтобы они улетали как commit message - проверку, что ты коммитишь НЕ в master/main веткуПолучилось очень удобно, теперь я просто в терминале пишу gacp Update Nginx configs, вместо череды из git add, git commit -m, git push (хотя эти команды уже где-то в подкорке сидят).Вот код функций, там я утянул еще из oh-my-zsh шаблонов одну: function git_current_branch() { local ref ref=$(git symbolic-ref --quiet HEAD 2> /dev/null) local ret=$? if [[ $ret != 0 ]]; then [[ $ret == 128 ]] && return # no git repo. ref=$(git rev-parse --short HEAD 2> /dev/null) || return fi echo ${ref#refs/heads
    Image from a post by этогик // DevOps, Infrastructure, ProductivityImage from a post by этогик // DevOps, Infrastructure, Productivity
    3,85024124Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    20 Jan, 11:39edited

    Небольшой отчет о том, чем занимался на работе в последнее время.У нас есть довольно большой проект на Python и вот мы решили мигрировать его со стандартного pip для управления зависимостями на современный и популярный uv.Как было раньше: два файла - requirements.txt с основным набором зависимостей и requirements-dev.txt - в нем добавлены некоторые дополнительные зависимости для локальной разработки и в тестах. Чтобы добавить их в pyproject.toml можно использовать uv add -r requirements.txtdev-файлик перезжает в uv в отдельную "группу" зависимостей. Зависимости такой группы можно поставить вместе с основными через флаг --group name.Сам uv генерит uv.lock файл, в котором зафиксирован слепок этих зависимостей, подзависимостей, транзитивных и так далее. Похоже на package-lock.json в Node.Основной воркфлоу теперь немного меняется: - uv sync создает виртуальное окружение (как
    3,89013711Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    13 Jan, 07:47

    Наткнулся на статью в которой автор говорит, что у него Oh My Zsh тормозит запуск терминала: типа 380мс (на голый OMZ) это очень медленно, а у него еще какой-то воркфлоу, который постоянно открывает новые окна терминала.Я полистал, и вспомнил, что у меня-то терминал тоже долго открывается. Оказалось до 1.47 сек. Неприятненько. Решил разобраться что к чему.Для начала небольшая экскурсия в часто-рекомендуемый стек работы с терминалом:- эмулятор терминала: например iTerm2 или ghostty. Отвечает за отрисовку терминала, GUI по сути. - zsh - командный интерпретатор. По дефолту в Макоси стоит именно zsh. Аналоги: bash, fish, sh - oh-my-zsh - фреймворк для zsh для более удобной установки плагинов, тем и т.д. - prompt - тема для строки приглашения, например: powerlevel10k или starshipУ zsh есть свой профайлер, чтобы его включить добавляем в ~/.zshrc: # в начало файла zmodload zsh/zprof ...
    Image from a post by этогик // DevOps, Infrastructure, ProductivityImage from a post by этогик // DevOps, Infrastructure, Productivity
    3,94023751Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    31 Dec 2025, 11:03

    👋 Привет всем! Юра на связи.Сегодня 31 декабря, и перед тем как идти резать салатики, я хочу просто поблагодарить вас, за то, что читаете меня, ставите классные реакции, пишете крутейшую обратную связь и делаете чат живым ❤️На следующий год я ставлю в цели возвращение к съемке видео на YouTube. Считайте это коммитом перед вами. Только надо немного пересмотреть формат: хочется делать меньше "обязательного" и больше того, что самому интересно. Энивей, следите за новостями - когда настанет время, я все расскажу.Хочу пожелать вам в следующем году:✨ Максимально отдохнуть в ближайшие дни. Очень сложно разрешить себе ничего не делать, но, кажется, сейчас это один из самых полезных навыков, чтобы не выгорать. У меня в планах собирать Лего, (пере)проходить Ведьмака, съездить в горы погулять. ✨ Успешно найти работу тем, кто ее сейчас ищет или будет
    4,05051201343Open in Telegram
  • этогик // DevOps, Infrastructure, Productivity

    11 Dec 2025, 18:16

    Половина кандидатского HR-Tech плачет сегодня. Почему? Потому что hh с 15 декабря закрывает кандидатский API.Есть приличное количество сервисов, которые через этот АПИ помогают тебе настраивать “умные” автоотклики. Вот они теперь перестанут работать.Дело в том, что рынок найма сейчас переживает кризис доверия: рекрутеры давно автоматизированно фильтруют отклики, делают авто-рассылки по кандидатам, LLM-интервью, чат-боты вместо живых людей. Кандидаты в ответ накручивают опыт, делают фейковые резюме и настраивают автоотклики. Все идет по кругу, как итог - низкоэффективный процесс найма с обоих сторон.HH отключением API пытается защитить своих клиентов-рекрутеров от потока спама и нерелевантных кандидатов.Кажется, что в будущем рынок ждет процесс повышения доверия, вероятно не очень приятными для кандидатов способами. Какой-нибудь глобальный “черный список” нет-нет да и появится.
    4,980154111Open in Telegram