📦 Вот что реально могут спросить на собесе
Тема: PgBouncer и Connection Pooling
Пиши
---
## ⚡ Почему Postgres не любит тысячи соединений
Многие думают, что проблема решается увеличением:
Но это почти никогда не правильное решение.
Каждое новое подключение к PostgreSQL — это отдельный процесс операционной системы, а не поток.
На каждое соединение тратятся:
• создание процесса (`fork()`);
• аутентификация;
• собственная память (обычно 5–10 МБ);
• переключение контекста процессора.
Получается примерно так:
Сервер начинает тратить ресурсы не на выполнение SQL-запросов, а на обслуживание тысяч процессов.
---
## 🚕 Что делает PgBouncer
Представь службу такси.
Есть:
- 1000 пассажиров (подключений приложения);
- всего 20 машин (реальных соединений с Postgres).
Каждый пассажир думает, что машина принадлежит только ему.
Но после поездки машина сразу возвращается обратно и используется следующим клиентом.
Получается:
Именно поэтому база перестаёт захлёбываться под нагрузкой.
---
## 🔀 Три режима работы PgBouncer
### 1️⃣ Session mode
Соединение закрепляется за клиентом на всю сессию.
✅ максимально совместим
❌ экономия соединений небольшая
---
### 2️⃣ Transaction mode ⭐
Соединение выдаётся только на время транзакции.
После
✅ лучший режим для большинства production-систем
✅ максимальная экономия соединений
---
### 3️⃣ Statement mode
После каждого запроса соединение сразу возвращается в пул.
Максимальная производительность.
Но есть серьёзное ограничение:
❌ транзакции работать не будут.
Используется крайне редко.
---
## 🪤 Любимая ловушка на собеседовании
Почему в Transaction Mode ломаются некоторые вещи?
Потому что после завершения транзакции клиент уже может получить совсем другое соединение.
Из-за этого возникают проблемы.
### Advisory Locks
Плохой вариант:
Блокировка живёт на соединении.
Соединение ушло обратно в пул → логика ломается.
Используйте:
Он живёт внутри транзакции.
---
### LISTEN / NOTIFY
Подписка тоже существует только на конкретном соединении.
В Transaction Mode соединение постоянно меняется.
И уведомления перестают приходить.
---
### Prepared Statements
Раньше это тоже была большая проблема.
Начиная с PgBouncer 1.21+ появилась поддержка через:
Поэтому этот вопрос сегодня уже встречается значительно реже.
---
## ❓ Что чаще всего спрашивают
✅ Зачем нужен PgBouncer, если есть
✅ Чем отличаются Session, Transaction и Statement Mode?
✅ Почему Transaction Mode ломает Advisory Locks?
✅ Почему LISTEN / NOTIFY плохо работает через PgBouncer?
✅ Как подобрать размер пула?
✅ Что выбрать:
- PgBouncer
- или встроенный connection pool приложения?
---
💡 Главное, что стоит запомнить
PostgreSQL плохо масштабируется количеством соединений.
Он отлично масштабируется количеством запросов.
Поэтому задача PgBouncer - не ускорить базу, а не дать ей умереть от тысяч подключений.
Сохрани пост - этот вопрос встречается практически на каждом собеседовании уровня Middle/Senior.
#postgres #pgbouncer #database #devops #sre #backend
Тема: PgBouncer и Connection Pooling
Пиши
pgbouncer / postgres / pooling в комментариях, если работаешь с этим стеком 👇---
## ⚡ Почему Postgres не любит тысячи соединений
Многие думают, что проблема решается увеличением:
max_connections = 1000
Но это почти никогда не правильное решение.
Каждое новое подключение к PostgreSQL — это отдельный процесс операционной системы, а не поток.
На каждое соединение тратятся:
• создание процесса (`fork()`);
• аутентификация;
• собственная память (обычно 5–10 МБ);
• переключение контекста процессора.
Получается примерно так:
1000 клиентов
│
▼
1000 процессов PostgreSQL
│
▼
CPU ↑
RAM ↑
Context Switch ↑
Сервер начинает тратить ресурсы не на выполнение SQL-запросов, а на обслуживание тысяч процессов.
---
## 🚕 Что делает PgBouncer
Представь службу такси.
Есть:
- 1000 пассажиров (подключений приложения);
- всего 20 машин (реальных соединений с Postgres).
Каждый пассажир думает, что машина принадлежит только ему.
Но после поездки машина сразу возвращается обратно и используется следующим клиентом.
Получается:
1000 клиентов
│
▼
PgBouncer
│
▼
20 соединений
│
▼
PostgreSQL
Именно поэтому база перестаёт захлёбываться под нагрузкой.
---
## 🔀 Три режима работы PgBouncer
### 1️⃣ Session mode
Client
│
Connection
│
Postgres
Соединение закрепляется за клиентом на всю сессию.
✅ максимально совместим
❌ экономия соединений небольшая
---
### 2️⃣ Transaction mode ⭐
Client
│
Transaction
│
Pool
│
Postgres
Соединение выдаётся только на время транзакции.
После
COMMIT или ROLLBACK сразу возвращается обратно в пул.✅ лучший режим для большинства production-систем
✅ максимальная экономия соединений
---
### 3️⃣ Statement mode
Каждый SQL-запрос
│
получает новое соединение
После каждого запроса соединение сразу возвращается в пул.
Максимальная производительность.
Но есть серьёзное ограничение:
❌ транзакции работать не будут.
Используется крайне редко.
---
## 🪤 Любимая ловушка на собеседовании
Почему в Transaction Mode ломаются некоторые вещи?
Потому что после завершения транзакции клиент уже может получить совсем другое соединение.
Из-за этого возникают проблемы.
### Advisory Locks
Плохой вариант:
pg_advisory_lock(...)
Блокировка живёт на соединении.
Соединение ушло обратно в пул → логика ломается.
Используйте:
pg_advisory_xact_lock(...)
Он живёт внутри транзакции.
---
### LISTEN / NOTIFY
Подписка тоже существует только на конкретном соединении.
В Transaction Mode соединение постоянно меняется.
И уведомления перестают приходить.
---
### Prepared Statements
Раньше это тоже была большая проблема.
Начиная с PgBouncer 1.21+ появилась поддержка через:
max_prepared_statements
Поэтому этот вопрос сегодня уже встречается значительно реже.
---
## ❓ Что чаще всего спрашивают
✅ Зачем нужен PgBouncer, если есть
max_connections?✅ Чем отличаются Session, Transaction и Statement Mode?
✅ Почему Transaction Mode ломает Advisory Locks?
✅ Почему LISTEN / NOTIFY плохо работает через PgBouncer?
✅ Как подобрать размер пула?
✅ Что выбрать:
- PgBouncer
- или встроенный connection pool приложения?
---
💡 Главное, что стоит запомнить
PostgreSQL плохо масштабируется количеством соединений.
Он отлично масштабируется количеством запросов.
Поэтому задача PgBouncer - не ускорить базу, а не дать ей умереть от тысяч подключений.
Сохрани пост - этот вопрос встречается практически на каждом собеседовании уровня Middle/Senior.
#postgres #pgbouncer #database #devops #sre #backend
👍6🔥2
📦 Вот что реально могут спросить на собесе
Тема: процесс завис в D-state
Пиши
---
## 🔴 Задача с собеседования
У тебя завис процесс.
В
CPU почти не используется, но
Что делать?
---
## ⚠️ Главное, что нужно знать
Большинство кандидатов первым делом делают:
И удивляются, что ничего не произошло.
Почему?
Потому что процесс в D-state находится внутри операции ввода-вывода (I/O).
Пока ядро не получит ответ от диска или сетевого хранилища, процесс невозможно завершить даже через
Именно поэтому
---
## 🔍 Шаг 1. Найти процессы в D-state
Если процессов несколько, начинаем с тех, которые находятся в D-state дольше всего.
---
## 🔍 Шаг 2. Посмотреть, чего именно ждёт процесс
Самый полезный файл:
Примеры:
➡️ ожидание дисковой операции
➡️ ожидание NFS
➡️ ожидание блокировки
Если нужно увидеть полный стек ядра:
Там можно встретить:
Это уже позволяет понять, где именно зависла операция.
---
## 🔍 Шаг 3. Узнать, с чем работает процесс
Какие файлы открыты:
Только обычные файлы и блочные устройства:
Если процесс ещё выполняет системные вызовы:
Флаг:
показывает время выполнения каждого вызова.
---
## 🔍 Шаг 4. Проверить диск
Общая нагрузка:
I/O конкретного процесса:
Статистика процесса:
Смотри:
- количество чтений;
- количество записей;
- объём данных;
- скорость роста счётчиков.
---
## 🔍 Шаг 5. Если проблема в NFS
Проверяем подключённые файловые системы:
Статистика клиента:
И снова смотрим:
Если видишь:
Практически наверняка процесс ждёт ответа от NFS-сервера.
---
## 🪤 Любимая ловушка на собеседовании
Можно ли убить процесс в D-state?
Ответ:
❌ Нет.
Пока операция ввода-вывода не завершится, ядро не обработает сигнал.
Обычно остаются только три варианта:
- дождаться завершения I/O;
- принудительно размонтировать проблемную файловую систему (если это возможно):
- либо перезагрузить сервер.
---
## ❓ Что чаще всего спрашивают
✅ Чем D-state отличается от Sleeping и Running?
✅ Почему
✅ Что показывает
✅ Как определить, диск это или NFS?
✅ Какие команды используешь для диагностики?
---
## 💡 Главное правило
Если процесс находится в D-state, почти всегда проблема не в самом процессе.
Проблема ниже:
- диск;
- RAID;
- SAN;
- NFS;
- iSCSI;
- файловая система;
- драйвер;
- блочное устройство.
Именно их нужно искать в первую очередь.
Сохрани пост — вопрос про D-state регулярно встречается на собеседованиях Middle и Senior DevOps/SRE.
#linux #devops #sre #troubleshooting #kernel #interview
Тема: процесс завис в D-state
Пиши
dstate / wchan / iostat в комментариях, если сталкивался с таким на проде 👇---
## 🔴 Задача с собеседования
У тебя завис процесс.
В
top или htop он находится в состоянии D (Uninterruptible Sleep).CPU почти не используется, но
iostat показывает высокую нагрузку на диск.Что делать?
---
## ⚠️ Главное, что нужно знать
Большинство кандидатов первым делом делают:
kill -9 <PID>
И удивляются, что ничего не произошло.
Почему?
Потому что процесс в D-state находится внутри операции ввода-вывода (I/O).
Пока ядро не получит ответ от диска или сетевого хранилища, процесс невозможно завершить даже через
SIGKILL.Именно поэтому
kill -9 здесь не работает.---
## 🔍 Шаг 1. Найти процессы в D-state
ps aux | awk '$8=="D"{print $2,$11}'
# или
top -b -n1 | grep " D "
Если процессов несколько, начинаем с тех, которые находятся в D-state дольше всего.
---
## 🔍 Шаг 2. Посмотреть, чего именно ждёт процесс
Самый полезный файл:
cat /proc/<PID>/wchan
Примеры:
io_schedule
➡️ ожидание дисковой операции
nfs_wait
➡️ ожидание NFS
futex_wait_queue
➡️ ожидание блокировки
Если нужно увидеть полный стек ядра:
cat /proc/<PID>/stack
Там можно встретить:
submit_bio
ext4_file_write_iter
blk_mq_get_tag
Это уже позволяет понять, где именно зависла операция.
---
## 🔍 Шаг 3. Узнать, с чем работает процесс
Какие файлы открыты:
lsof -p <PID>
Только обычные файлы и блочные устройства:
lsof -p <PID> | grep -E "REG|BLK"
Если процесс ещё выполняет системные вызовы:
strace -p <PID> \
-e trace=read,write,pread64,pwrite64 -T
Флаг:
-T
показывает время выполнения каждого вызова.
---
## 🔍 Шаг 4. Проверить диск
Общая нагрузка:
iostat -x 1
I/O конкретного процесса:
iotop -p <PID>
Статистика процесса:
cat /proc/<PID>/io
Смотри:
- количество чтений;
- количество записей;
- объём данных;
- скорость роста счётчиков.
---
## 🔍 Шаг 5. Если проблема в NFS
Проверяем подключённые файловые системы:
mount | grep nfs
Статистика клиента:
nfsstat -c
И снова смотрим:
cat /proc/<PID>/wchan
Если видишь:
nfs4_wait_bit_killable
Практически наверняка процесс ждёт ответа от NFS-сервера.
---
## 🪤 Любимая ловушка на собеседовании
Можно ли убить процесс в D-state?
Ответ:
❌ Нет.
Пока операция ввода-вывода не завершится, ядро не обработает сигнал.
Обычно остаются только три варианта:
- дождаться завершения I/O;
- принудительно размонтировать проблемную файловую систему (если это возможно):
umount -f -l /mnt/storage
- либо перезагрузить сервер.
---
## ❓ Что чаще всего спрашивают
✅ Чем D-state отличается от Sleeping и Running?
✅ Почему
kill -9 не работает?✅ Что показывает
/proc/<PID>/wchan?✅ Как определить, диск это или NFS?
✅ Какие команды используешь для диагностики?
---
## 💡 Главное правило
Если процесс находится в D-state, почти всегда проблема не в самом процессе.
Проблема ниже:
- диск;
- RAID;
- SAN;
- NFS;
- iSCSI;
- файловая система;
- драйвер;
- блочное устройство.
Именно их нужно искать в первую очередь.
Сохрани пост — вопрос про D-state регулярно встречается на собеседованиях Middle и Senior DevOps/SRE.
#linux #devops #sre #troubleshooting #kernel #interview
❤2👏2🐳2
📦 401, 403, 404, 500, 502, 503, 504...
Если ты DevOps, Backend или SRE, то эти коды ошибок видишь почти каждый день.
Но большинство знает только их названия. А вот что именно они означают и где искать проблему — уже вопрос.
Разбираемся.
---
## 🟢 2xx — Всё хорошо
200 OK — запрос успешно выполнен.
201 Created — ресурс создан.
204 No Content — операция успешна, но сервер ничего не возвращает.
---
## 🟠 4xx — Ошибка клиента
### 400 Bad Request
Неверный запрос.
Например:
- битый JSON;
- отсутствует обязательное поле;
- неверный формат данных.
---
### 401 Unauthorized
Сервер не знает, кто ты.
Причины:
- нет JWT;
- токен просрочен;
- отсутствует авторизация.
Запомнить просто:
> Сначала представься.
---
### 403 Forbidden
Сервер знает пользователя, но не разрешает доступ.
Например:
↓
💡 Мнемоника:
401 — не знает.
403 — знает, но не пускает.
---
### 404 Not Found
Ресурс не найден.
---
### 405 Method Not Allowed
URL существует, но этот HTTP-метод запрещён.
---
### 409 Conflict
Конфликт данных.
Например, пользователь с таким email уже существует.
---
### 429 Too Many Requests
Сработал Rate Limit.
Часто встречается в:
- Nginx
- Cloudflare
- API Gateway
- Kubernetes Ingress
---
## 🔴 5xx — Ошибка сервера
### 500 Internal Server Error
Ошибка внутри приложения.
Ищем логи Backend.
---
### 502 Bad Gateway
Очень любят спрашивать на собеседованиях.
Схема:
Nginx смог подключиться к Backend.
Но получил некорректный ответ.
Поэтому вернул:
---
### 503 Service Unavailable
Сервис временно недоступен.
Причины:
- приложение выключено;
- deployment обновляется;
- maintenance;
- backend исключён из балансировки.
---
### 504 Gateway Timeout
Самая частая путаница с 502.
При 504 Backend вообще не успел ответить.
Причины:
- долгий SQL;
- блокировки;
- зависший API;
- перегруженный сервер.
---
## 💡 Как отличить 502 и 504
Очень простой способ.
Открой логи Backend.
👉 Есть запись о запросе?
Скорее всего 502.
👉 Запроса нет вообще?
Почти наверняка 504.
Тогда ищем:
- timeout;
- сеть;
- firewall;
- балансировщик;
- перегруженный upstream.
---
## 🧠 Шпаргалка
💬 Какой HTTP-код чаще всего встречается у тебя в работе?
#devops #backend #sre #nginx #http
Если ты DevOps, Backend или SRE, то эти коды ошибок видишь почти каждый день.
Но большинство знает только их названия. А вот что именно они означают и где искать проблему — уже вопрос.
Разбираемся.
---
## 🟢 2xx — Всё хорошо
200 OK — запрос успешно выполнен.
201 Created — ресурс создан.
204 No Content — операция успешна, но сервер ничего не возвращает.
---
## 🟠 4xx — Ошибка клиента
### 400 Bad Request
Неверный запрос.
Например:
- битый JSON;
- отсутствует обязательное поле;
- неверный формат данных.
---
### 401 Unauthorized
Сервер не знает, кто ты.
Причины:
- нет JWT;
- токен просрочен;
- отсутствует авторизация.
Запомнить просто:
> Сначала представься.
---
### 403 Forbidden
Сервер знает пользователя, но не разрешает доступ.
Например:
user → /admin
↓
403 Forbidden
💡 Мнемоника:
401 — не знает.
403 — знает, но не пускает.
---
### 404 Not Found
Ресурс не найден.
---
### 405 Method Not Allowed
URL существует, но этот HTTP-метод запрещён.
---
### 409 Conflict
Конфликт данных.
Например, пользователь с таким email уже существует.
---
### 429 Too Many Requests
Сработал Rate Limit.
Часто встречается в:
- Nginx
- Cloudflare
- API Gateway
- Kubernetes Ingress
---
## 🔴 5xx — Ошибка сервера
### 500 Internal Server Error
Ошибка внутри приложения.
Ищем логи Backend.
---
### 502 Bad Gateway
Очень любят спрашивать на собеседованиях.
Схема:
Client
│
Nginx
│
Backend
Nginx смог подключиться к Backend.
Но получил некорректный ответ.
Поэтому вернул:
502 Bad Gateway
---
### 503 Service Unavailable
Сервис временно недоступен.
Причины:
- приложение выключено;
- deployment обновляется;
- maintenance;
- backend исключён из балансировки.
---
### 504 Gateway Timeout
Самая частая путаница с 502.
При 504 Backend вообще не успел ответить.
Причины:
- долгий SQL;
- блокировки;
- зависший API;
- перегруженный сервер.
---
## 💡 Как отличить 502 и 504
Очень простой способ.
Открой логи Backend.
👉 Есть запись о запросе?
Скорее всего 502.
👉 Запроса нет вообще?
Почти наверняка 504.
Тогда ищем:
- timeout;
- сеть;
- firewall;
- балансировщик;
- перегруженный upstream.
---
## 🧠 Шпаргалка
200 ✔ Всё хорошо
400 ❌ Неверный запрос
401 🔑 Не знает кто ты
403 🚫 Знает, но не пускает
404 🔍 Не найдено
405 ✋ Метод запрещён
409 ⚠ Конфликт
429 🚦 Слишком много запросов
500 💥 Ошибка приложения
502 🔄 Backend ответил неправильно
503 🛠 Сервис недоступен
504 ⏳ Backend не успел ответить
💬 Какой HTTP-код чаще всего встречается у тебя в работе?
#devops #backend #sre #nginx #http
🔥6✍2👍1
🚨 GitLab CI может обманывать. И большинство узнаёт об этом только после падения продакшена.
Есть опасное заблуждение:
> Pipeline зелёный = релиз успешный.
К сожалению, это не так.
GitLab CI не знает, работает ли ваше приложение. Он знает только одно: все команды в Job завершились без ошибок.
И это две большие разницы.
---
## Самая распространённая ошибка
Вот обычный Job:
Pipeline станет зелёным, если команда выполнится успешно.
Но что будет дальше?
Возможны десятки сценариев:
❌ Pod ушёл в
❌ Образ не скачался (`ImagePullBackOff`)
❌ Приложение не прошло
❌ Контейнер стартует 5 минут
❌ Deployment завис во время rollout
GitLab этого не проверяет.
Он уже считает, что деплой успешен.
---
## Как делают новички
Получают:
И спокойно идут пить кофе.
Через пять минут приходит сообщение:
> Прод не работает.
---
## Как делают в production
После деплоя всегда ждут завершения rollout.
Теперь GitLab дождётся, пока Kubernetes действительно обновит приложение.
Если хотя бы один Pod не сможет подняться, Job завершится ошибкой.
Именно этого обычно и ждут на production.
---
## Ещё несколько причин, почему Pipeline зелёный, а приложение не работает
### 1.
Тесты могут полностью упасть.
Pipeline всё равно останется зелёным.
Используйте только там, где падение действительно допустимо.
---
### 2. Ошибка скрыта
Или
Такие конструкции скрывают реальные ошибки.
GitLab считает, что всё прошло успешно.
---
### 3. Нет проверки готовности
Deployment создан.
Но приложение ещё не готово принимать трафик.
Если сразу завершить Job, пользователи могут получить ошибки, хотя Pipeline уже зелёный.
---
### 4. Используется старый образ
Очень частая проблема:
или
с тем же тегом.
Kubernetes может вообще не скачать новую версию.
Pipeline успешный.
Код старый.
---
### 5. Нет smoke-тестов
Deployment закончился.
Но никто не проверил:
Иногда один простой запрос после деплоя спасает больше, чем десятки тестов до него.
---
## Что чаще всего спрашивают на собеседовании
✅ Что означает зелёный Pipeline?
✅ Почему
✅ Для чего нужен
✅ Чем отличается успешный Job от успешного Deployment?
✅ Какие проверки должны выполняться после деплоя?
---
## 💡 Главное правило
GitLab CI проверяет команды.
Production проверяет результат.
Поэтому хороший pipeline заканчивается не на:
А на проверке того, что приложение действительно работает:
или
или хотя бы
Именно эти несколько строк отличают учебный pipeline от production-ready CI/CD.
💬 А какие проверки после деплоя используете вы? Только
#gitlab #gitlabci #devops #kubernetes #cicd #sre #linux
Есть опасное заблуждение:
> Pipeline зелёный = релиз успешный.
К сожалению, это не так.
GitLab CI не знает, работает ли ваше приложение. Он знает только одно: все команды в Job завершились без ошибок.
И это две большие разницы.
---
## Самая распространённая ошибка
Вот обычный Job:
deploy:
stage: deploy
script:
- kubectl apply -f deployment.yaml
Pipeline станет зелёным, если команда выполнится успешно.
Но что будет дальше?
Возможны десятки сценариев:
❌ Pod ушёл в
CrashLoopBackOff❌ Образ не скачался (`ImagePullBackOff`)
❌ Приложение не прошло
Readiness Probe❌ Контейнер стартует 5 минут
❌ Deployment завис во время rollout
GitLab этого не проверяет.
Он уже считает, что деплой успешен.
---
## Как делают новички
deploy:
script:
- kubectl apply -f app.yaml
Получают:
✔ Pipeline Passed
И спокойно идут пить кофе.
Через пять минут приходит сообщение:
> Прод не работает.
---
## Как делают в production
После деплоя всегда ждут завершения rollout.
deploy:
stage: deploy
script:
- kubectl apply -f deployment.yaml
- kubectl rollout status deployment/my-app --timeout=300s
Теперь GitLab дождётся, пока Kubernetes действительно обновит приложение.
Если хотя бы один Pod не сможет подняться, Job завершится ошибкой.
Именно этого обычно и ждут на production.
---
## Ещё несколько причин, почему Pipeline зелёный, а приложение не работает
### 1.
allow_failure
tests:
allow_failure: true
Тесты могут полностью упасть.
Pipeline всё равно останется зелёным.
Используйте только там, где падение действительно допустимо.
---
### 2. Ошибка скрыта
./deploy.sh || true
Или
set +e
Такие конструкции скрывают реальные ошибки.
GitLab считает, что всё прошло успешно.
---
### 3. Нет проверки готовности
Deployment создан.
Но приложение ещё не готово принимать трафик.
Если сразу завершить Job, пользователи могут получить ошибки, хотя Pipeline уже зелёный.
---
### 4. Используется старый образ
Очень частая проблема:
image: latest
или
kubectl set image ...
с тем же тегом.
Kubernetes может вообще не скачать новую версию.
Pipeline успешный.
Код старый.
---
### 5. Нет smoke-тестов
Deployment закончился.
Но никто не проверил:
curl https://service/health
Иногда один простой запрос после деплоя спасает больше, чем десятки тестов до него.
---
## Что чаще всего спрашивают на собеседовании
✅ Что означает зелёный Pipeline?
✅ Почему
kubectl apply не гарантирует успешный релиз?✅ Для чего нужен
kubectl rollout status?✅ Чем отличается успешный Job от успешного Deployment?
✅ Какие проверки должны выполняться после деплоя?
---
## 💡 Главное правило
GitLab CI проверяет команды.
Production проверяет результат.
Поэтому хороший pipeline заканчивается не на:
kubectl apply
А на проверке того, что приложение действительно работает:
kubectl rollout status deployment/my-app
или
kubectl wait \
--for=condition=Ready \
pod \
-l app=my-app
или хотя бы
curl https://service/health
Именно эти несколько строк отличают учебный pipeline от production-ready CI/CD.
💬 А какие проверки после деплоя используете вы? Только
rollout status или ещё добавляете smoke-тесты и проверки health endpoint?#gitlab #gitlabci #devops #kubernetes #cicd #sre #linux
👍4❤2
Сколько ты получаешь на руки? (Net)
Anonymous Poll
12%
До 80 000 ₽
10%
80-120 тыс.
21%
120-180 тыс.
10%
180-250 тыс.
12%
250-350 тыс.
6%
350-500 тыс.
0%
500-700 тыс.
2%
700 тыс.+
5%
Работаю не в РФ
23%
Не работаю сейчас
🐳 Docker - 15 вопросов, которые реально спрашивают на собеседованиях
Если готовишься на DevOps, SRE или Backend - эти вопросы стоит знать без запинки.
В видео разобрал:
✅ Что такое образ и контейнер
✅ Dockerfile и слои образов
✅ CMD vs ENTRYPOINT
✅ COPY vs ADD
✅ bind mount, volume и tmpfs
✅ bridge, host и overlay сети
✅ Почему контейнер завершается сразу после запуска
✅ Разница между docker stop и docker kill
✅ Как уменьшить размер образа
✅ Multi-stage build
✅ Практические вопросы, которые действительно встречаются на собеседованиях
Без воды - только теория, практика и реальные вопросы.
🎬 Смотреть:
https://www.youtube.com/watch?v=pOGJ0Tlt3P4
💬 А какой вопрос по Docker на собеседовании был самым неожиданным для вас?
#docker #devops #kubernetes #linux #backend #sre #собеседование #it #programming #dockerfile
Если готовишься на DevOps, SRE или Backend - эти вопросы стоит знать без запинки.
В видео разобрал:
✅ Что такое образ и контейнер
✅ Dockerfile и слои образов
✅ CMD vs ENTRYPOINT
✅ COPY vs ADD
✅ bind mount, volume и tmpfs
✅ bridge, host и overlay сети
✅ Почему контейнер завершается сразу после запуска
✅ Разница между docker stop и docker kill
✅ Как уменьшить размер образа
✅ Multi-stage build
✅ Практические вопросы, которые действительно встречаются на собеседованиях
Без воды - только теория, практика и реальные вопросы.
🎬 Смотреть:
https://www.youtube.com/watch?v=pOGJ0Tlt3P4
💬 А какой вопрос по Docker на собеседовании был самым неожиданным для вас?
#docker #devops #kubernetes #linux #backend #sre #собеседование #it #programming #dockerfile
YouTube
15 вопросов по Docker, которые реально спрашивают на собеседовании
Полный разбор Docker для подготовки к техническому собеседованию: 15 вопросов, которые реально встречаются на интервью, с объяснением, командами и типичными ловушками.
Разбираем image vs container, слои и кеш сборки, multi-stage build, CMD vs ENTRYPOINT…
Разбираем image vs container, слои и кеш сборки, multi-stage build, CMD vs ENTRYPOINT…
🔥6
🔥 Сохраняй, пригодится каждому, кто работает с Linux
Собрал компактную шпаргалку с командами, которые действительно используются каждый день.
Внутри:
• навигация по файловой системе;
• поиск файлов;
• права доступа;
• процессы;
• сеть;
• архивы;
• логи;
• диски;
• системная информация;
• полезные сочетания и лайфхаки.
Такую шпаргалку удобно держать под рукой во время подготовки к собеседованию или работы в терминале.
💾 Сохрани, чтобы не искать команды каждый раз.
#linux #devops #sysadmin #backend #docker #kubernetes #terminal #cheatsheet #собеседование
Собрал компактную шпаргалку с командами, которые действительно используются каждый день.
Внутри:
• навигация по файловой системе;
• поиск файлов;
• права доступа;
• процессы;
• сеть;
• архивы;
• логи;
• диски;
• системная информация;
• полезные сочетания и лайфхаки.
Такую шпаргалку удобно держать под рукой во время подготовки к собеседованию или работы в терминале.
💾 Сохрани, чтобы не искать команды каждый раз.
#linux #devops #sysadmin #backend #docker #kubernetes #terminal #cheatsheet #собеседование
🔥7❤1🫡1
TCP ПРОТИВ UDP: ЧТО РЕАЛЬНО СПРАШИВАЮТ🐸 🐸
Видео грузится рывками, но никогда не виснет намертво. Файл либо скачался целиком, либо не скачался вообще. Это не совпадение, это два разных протокола под капотом
Пиши tcp/udp/handshake в комментариях, если работаешь с сетями 👇
1️⃣ Тройное рукопожатие TCP
Перед передачей данных TCP устанавливает соединение. Клиент отправляет SYN, сервер отвечает SYN ACK, клиент подтверждает ACK. Только после этого стартует передача
2️⃣ Надёжность и порядок
Каждый пакет TCP пронумерован. Пакет потерялся, получатель узнает и запросит его заново. Порядок всегда восстанавливается на приёмнике, даже если пакеты пришли вразнобой
3️⃣ Как работает UDP
Никакого рукопожатия. Отправитель просто шлёт пакеты. Потерялся пакет, никто его не пересылает
4️⃣ Кто что использует
Видеозвонок использует UDP, задержка важнее полноты. Скачивание файла использует TCP, там каждый байт обязан дойти
⚠️ Ловушка с собеса
У TCP есть контроль перегрузки сети, при перегрузке канала отправитель сам снижает скорость. У UDP такого контроля нет вообще
🍌 Заголовки: TCP примерно 20 байт, UDP всего 8 байт. Меньше служебных данных, меньше задержка
Практика: смотрим рукопожатие TCP вживую🥰
🔥 Команда для перехвата трафика на порту 443, только флаги TCP, без данных:
Что увидишь в выводе:
🔥 Расшифровка флагов
Ровно три строки, ровно три пакета рукопожатия, prямо как в видео
Для сравнения, если перехватить UDP трафик:
Там сразу пойдут пакеты с данными, без единого флага рукопожатия, потому что UDP его просто не делает
Видео грузится рывками, но никогда не виснет намертво. Файл либо скачался целиком, либо не скачался вообще. Это не совпадение, это два разных протокола под капотом
Пиши tcp/udp/handshake в комментариях, если работаешь с сетями 👇
Перед передачей данных TCP устанавливает соединение. Клиент отправляет SYN, сервер отвечает SYN ACK, клиент подтверждает ACK. Только после этого стартует передача
Каждый пакет TCP пронумерован. Пакет потерялся, получатель узнает и запросит его заново. Порядок всегда восстанавливается на приёмнике, даже если пакеты пришли вразнобой
Никакого рукопожатия. Отправитель просто шлёт пакеты. Потерялся пакет, никто его не пересылает
Видеозвонок использует UDP, задержка важнее полноты. Скачивание файла использует TCP, там каждый байт обязан дойти
У TCP есть контроль перегрузки сети, при перегрузке канала отправитель сам снижает скорость. У UDP такого контроля нет вообще
Практика: смотрим рукопожатие TCP вживую
tcpdump -i any -n 'tcp port 443' -c 20
Что увидишь в выводе:
IP client.54321 > server.443: Flags [S], seq 100
IP server.443 > client.54321: Flags [S.], seq 200, ack 101
IP client.54321 > server.443: Flags [.], ack 201
[S] это SYN, [S.] это SYN ACK (точка после S как раз и означает ACK), [.] это чистый ACK без данныхРовно три строки, ровно три пакета рукопожатия, prямо как в видео
Для сравнения, если перехватить UDP трафик:
tcpdump -i any -n 'udp port 53' -c 5
Там сразу пойдут пакеты с данными, без единого флага рукопожатия, потому что UDP его просто не делает
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Ну что ж, июль получился очень продуктивным. 🚀
За этот месяц мои ребята получили 5 офферов с зарплатами от 250 000 ₽ до 465 000 ₽ net.
Самое приятное - практически все уже нашли работу и вышли на новые позиции. Очень рад за каждого.💪
В августе хочу взять в работу ещё 5 человек и помочь им подготовиться к собеседованиям, собрать сильную легенду, подтянуть техническую базу и получить свой оффер.
Если давно хотел сменить работу или выйти на новый уровень по зарплате - напиши «➕ »в чате. Посмотрим, смогу ли помочь именно тебе.👇
За этот месяц мои ребята получили 5 офферов с зарплатами от 250 000 ₽ до 465 000 ₽ net.
Самое приятное - практически все уже нашли работу и вышли на новые позиции. Очень рад за каждого.
В августе хочу взять в работу ещё 5 человек и помочь им подготовиться к собеседованиям, собрать сильную легенду, подтянуть техническую базу и получить свой оффер.
Если давно хотел сменить работу или выйти на новый уровень по зарплате - напиши «
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
БЕСПЛАТНО ВОЗЬМУ 10 ЧЕЛОВЕК И ДОВЕДУ ДО ОФФЕРА 🎁
Повелся? 😆
Каждый раз, когда открываю сообщения, вижу одно и то же:
“А есть что-нибудь бесплатное?”
“А можно сначала попробовать?”
“А подешевле есть?”
И знаешь, что самое интересное?
Очень часто именно эти люди через год снова пишут:
“Я всё ещё не могу найти работу.”
Совпадение?
Не думаю.
Проблема не в деньгах.
Проблема в том, что многие готовы потратить сотни часов на поиск бесплатной информации, но не готовы вложиться в систему, которая реально приводит к результату.
Давай посмотрим на это с другой стороны.
Что ты покупаешь на самом деле?
Не видеозаписи.
Не созвоны.
Не чат.
Ты покупаешь возможность выйти на новую зарплату.
Ты получаешь:
• понятный маршрут без бесконечных “что учить дальше”;
• практику на задачах, максимально похожих на реальные проекты;
• подготовку к техническим собеседованиям;
• ревью резюме;
• поддержку человека, который уже прошёл этот путь и знает, где обычно ошибаются.
Если после этого ты начинаешь получать даже на 100-200 тысяч рублей больше, то стоимость обучения становится просто инвестицией.
Есть ещё один момент.
Я не заинтересован просто продать обучение.
Большую часть оплаты я получаю только тогда, когда ты доходишь до результата и получаешь оффер.
Получается, у нас одна цель.
Мне выгодно, чтобы ты устроился как можно быстрее.
Поэтому главный вопрос вообще не в цене.
Вопрос в другом.
Ты действительно хочешь изменить свою карьеру?
Или продолжаешь искать место, где обещают результат бесплатно?
Если ты готов работать, а не искать волшебную таблетку, пора решаться и не искать бесплатную помощь
Набор открыт до 5-ого августа.
Каждый раз, когда открываю сообщения, вижу одно и то же:
“А есть что-нибудь бесплатное?”
“А можно сначала попробовать?”
“А подешевле есть?”
И знаешь, что самое интересное?
Очень часто именно эти люди через год снова пишут:
“Я всё ещё не могу найти работу.”
Совпадение?
Не думаю.
Проблема не в деньгах.
Проблема в том, что многие готовы потратить сотни часов на поиск бесплатной информации, но не готовы вложиться в систему, которая реально приводит к результату.
Давай посмотрим на это с другой стороны.
Что ты покупаешь на самом деле?
Не видеозаписи.
Не созвоны.
Не чат.
Ты покупаешь возможность выйти на новую зарплату.
Ты получаешь:
• понятный маршрут без бесконечных “что учить дальше”;
• практику на задачах, максимально похожих на реальные проекты;
• подготовку к техническим собеседованиям;
• ревью резюме;
• поддержку человека, который уже прошёл этот путь и знает, где обычно ошибаются.
Если после этого ты начинаешь получать даже на 100-200 тысяч рублей больше, то стоимость обучения становится просто инвестицией.
Есть ещё один момент.
Я не заинтересован просто продать обучение.
Большую часть оплаты я получаю только тогда, когда ты доходишь до результата и получаешь оффер.
Получается, у нас одна цель.
Мне выгодно, чтобы ты устроился как можно быстрее.
Поэтому главный вопрос вообще не в цене.
Вопрос в другом.
Ты действительно хочешь изменить свою карьеру?
Или продолжаешь искать место, где обещают результат бесплатно?
Если ты готов работать, а не искать волшебную таблетку, пора решаться и не искать бесплатную помощь
Набор открыт до 5-ого августа.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤1
SSH: ТЫ ЖМЁШЬ "YES" НА ПРЕДУПРЕЖДЕНИЕ, НЕ ПОНИМАЯ ЧТО ПРОИСХОДИТ 🍑
Заходишь на новый сервер. Терминал спрашивает про подлинность хоста. Ты жмёшь yes на автомате, как делают 99% инженеров
А зря.⚡️ Именно в этот момент SSH делает то, что защищает тебя от подмены сервера целиком
1️⃣ Как рождается общий секрет из воздуха
Клиент и сервер договариваются об общем секретном ключе по абсолютно незащищённому каналу. Каждая сторона независимо вычисляет одинаковый секрет. Подсмотревший обмен снаружи вычислить его физически не может
2️⃣ То самое предупреждение - не формальность
Это единственный момент, где ты доверяешь серверу наощупь. Отпечаток сохраняется здесь:
⚠️ Ловушка с собеса
Если при повторном подключении отпечаток вдруг изменился, увидишь вот это:
Это не баг. Это SSH кричит, что кто-то мог подменить сервер между тобой и настоящей машиной
3️⃣ Почему пароль это вчерашний день
Приватный ключ никогда не покидает твою машину. Сервер присылает случайное число, ты подписываешь его приватным ключом, сервер сверяет подпись публичным. Ключ физически не передаётся по сети, а сервер точно знает, что он у тебя есть
4️⃣ Чтобы не вводить пароль от ключа каждый раз
Агент держит расшифрованный ключ в памяти и подписывает запросы сам, пока жива сессия
❓ Что чаще всего спрашивают на собесе
1. Как SSH устанавливает общий секрет по незащищённому каналу
2. Зачем нужен отпечаток ключа хоста
3. Чем аутентификация по ключу отличается от пароля
4. Что защищает от атаки посредника
5. Как работает ssh-agent
Заходишь на новый сервер. Терминал спрашивает про подлинность хоста. Ты жмёшь yes на автомате, как делают 99% инженеров
А зря.
Клиент и сервер договариваются об общем секретном ключе по абсолютно незащищённому каналу. Каждая сторона независимо вычисляет одинаковый секрет. Подсмотревший обмен снаружи вычислить его физически не может
The authenticity of host '192.168.1.10' can't be established.
ED25519 key fingerprint is SHA256:xk3Jf9K7dQpL9mNc4Xr2vY8zQwEr...
Are you sure you want to continue connecting (yes/no)?
Это единственный момент, где ты доверяешь серверу наощупь. Отпечаток сохраняется здесь:
cat ~/.ssh/known_hosts
Если при повторном подключении отпечаток вдруг изменился, увидишь вот это:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Это не баг. Это SSH кричит, что кто-то мог подменить сервер между тобой и настоящей машиной
ssh-keygen -t ed25519 -C "твой_email@example.com"
ssh-copy-id user@server_ip
Приватный ключ никогда не покидает твою машину. Сервер присылает случайное число, ты подписываешь его приватным ключом, сервер сверяет подпись публичным. Ключ физически не передаётся по сети, а сервер точно знает, что он у тебя есть
eval $(ssh-agent)
ssh-add ~/.ssh/id_ed25519
Агент держит расшифрованный ключ в памяти и подписывает запросы сам, пока жива сессия
1. Как SSH устанавливает общий секрет по незащищённому каналу
2. Зачем нужен отпечаток ключа хоста
3. Чем аутентификация по ключу отличается от пароля
4. Что защищает от атаки посредника
5. Как работает ssh-agent
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2🫡1
Звучит странно? Если ты сидишь с мобильного интернета, вероятность очень высокая.
Большинство думает, что у каждого устройства есть свой уникальный IP-адрес. На самом деле это давно не так.
Представь обычную квартиру. Дома у тебя есть ноутбук, телефон и телевизор. Например:
📱 Телефон - 192.168.0.15
Каждое устройство получает свой IP только внутри домашней сети.
Но как только они выходят в интернет, роутер делает NAT (Network Address Translation) - заменяет все внутренние адреса на один общий публичный IP.
Получается, что три разных устройства для всего интернета выглядят как одно.
Но возникает вопрос: как роутер понимает, кому вернуть ответ?
Очень просто. Он создаёт таблицу соответствий.
Например:
192.168.0.10:52341 → 95.25.143.18:41001
192.168.0.15:60124 → 95.25.143.18:41002
192.168.0.20:49812 → 95.25.143.18:41003
Когда сервер отвечает на адрес 95.25.143.18:41002, роутер понимает, что эти данные нужно отправить телефону, а не ноутбуку или телевизору.
Домашний роутер это только начало.
Мобильные операторы используют технологию Carrier-Grade NAT (CGNAT).
Это означает, что тысячи людей могут одновременно выходить в интернет через один и тот же публичный IP-адрес.
Да, прямо сейчас человек, который стоит рядом с тобой в метро или сидит за соседним столиком в кафе, вполне может использовать тот же внешний IP, что и ты.
Поэтому один публичный IP совсем не означает одного пользователя.
Проверить это очень просто.
ip addr
или
ipconfig
curl ifconfig.me
или
curl ipinfo.io/ip
Если локальный адрес начинается с 192.168.x.x, 10.x.x.x или 172.16–172.31.x.x, а публичный IP совсем другой между тобой и интернетом работает NAT.
Именно из-за NAT иногда невозможно открыть порт, возникают проблемы с домашними серверами и VPN, а один IP может принадлежать сразу тысячам пользователей.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
CPU свободен. Диск свободен. А база не отвечает
Знакомая ситуация: запросы вроде те же, что вчера, а сегодня всё стоит. База не работает, она ждёт — и если не знать, куда смотреть, диагностика превращается в гадание
Пиши postgres/locks/deadlock в комментариях, если сталкивался 👇
Главное, что нужно запомнить
Блокировка живёт не до конца запроса, а до конца транзакции. Взяла блокировку на строку, потом полминуты делала что-то ещё, ходила во внешний сервис — всё это время держит. Блокировки сами по себе быстрые, держат их долго именно длинные транзакции
Первое, что нужно узнать: кто на кого ждёт
SELECT pid,
pg_blocking_pids(pid) AS blocked_by,
wait_event_type,
query
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;
Слева процессы, которые ждут, справа те, кто им мешает. Один и тот же PID справа у многих строк — вот он, корень
Дальше смотрим, чем занят этот процесс:
SELECT pid,
now() - xact_start AS xact_age,
now() - query_start AS query_age,
state, wait_event_type, wait_event, query
FROM pg_stat_activity
WHERE pid = <тот_самый_pid>;
Состояние объясняет, с какой из проблем ты столкнулся
Транзакция открыта, блокировки взяты, а процесс ничего не делает. Обычно приложение сделало BEGIN, выполнило пару запросов, и ушло куда-то не в базу: вызов внешнего API, обработка в коде, а то и вовсе застряло на ошибке без COMMIT
База при этом полностью здорова, просто ждёт, пока приложение вспомнит закрыть транзакцию. Признак железный: xact_age растёт, query_age нет
Лечится сужением транзакции. И есть страховка на сервере:
idle_in_transaction_session_timeout = '30s'
Здесь state = 'active', запрос честно выполняется, просто долго. Тяжёлый отчёт, миграция, аналитика на пол-таблицы
Классика, которая валит базы: кто-то запускает ALTER TABLE на большой таблице. DDL не может взять блокировку сразу, потому что таблицу читает долгая транзакция. Он встаёт в очередь. А за ним встают уже все остальные запросы к таблице, потому что новые не могут проскочить вперёд ожидающего DDL
Одна читающая транзакция плюс один ALTER парализуют весь доступ к таблице, хотя по отдельности ни то, ни другое базу бы не остановило
Лечится коротким таймаутом на захват блокировки для DDL:
SET lock_timeout = '2s';
ALTER TABLE orders ADD COLUMN note text;
Не взял блокировку за 2 секунды — упал с ошибкой, а не встал в очередь на полчаса
Ни забытых, ни особо длинных транзакций, просто много коротких дерутся за одну строку. Классика — счётчик, который инкрементят из сотни соединений разом:
UPDATE counters SET value = value + 1 WHERE id = 1;
Каждая транзакция быстрая, но выстраиваются в очередь, и под нагрузкой это становится узким местом. Диагностика другая — смотрим агрегированно:
SELECT wait_event_type, wait_event, count(*)
FROM pg_stat_activity
WHERE wait_event_type IS NOT NULL
GROUP BY 1, 2
ORDER BY 3 DESC;
Много Lock наверху — разносим горячие данные на несколько строк, суммируем при чтении
SELECT * FROM orders WHERE id = 42 FOR UPDATE;
FOR UPDATE берёт блокировку, как будто строку уже обновляют. Ставят часто на всякий случай, а держится она до конца транзакции. Хуже, если попадает в запрос без LIMIT — залочит все возвращённые строки разом
Если строгая блокировка не нужна, есть более мягкий FOR SHARE. А часто оказывается, что блокировка вообще не нужна
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
KubeDiagrams - прикольная open source штука, которая сама рисует схемы k8s
На вход можно дать YAML, Helm, Helmfile, Kustomize или даже живой кластер. На выходе получаешь диаграмму
CRD понимает, экспортит в PNG/SVG/PDF/draw.io
Для доки, онбординга и быстрого разбора "что у вас тут происходит" выглядит полезно🧃
https://github.com/philippemerle/KubeDiagrams
На вход можно дать YAML, Helm, Helmfile, Kustomize или даже живой кластер. На выходе получаешь диаграмму
CRD понимает, экспортит в PNG/SVG/PDF/draw.io
Для доки, онбординга и быстрого разбора "что у вас тут происходит" выглядит полезно
https://github.com/philippemerle/KubeDiagrams
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - philippemerle/KubeDiagrams: Generate Kubernetes architecture diagrams from Kubernetes manifest files, kustomization files…
Generate Kubernetes architecture diagrams from Kubernetes manifest files, kustomization files, Helm charts, helmfiles, and actual cluster state - philippemerle/KubeDiagrams
🔥4
Эйчары начали просить время рождения в резюме — чтобы составлять натальные карты кандидатов и оценить человека ещё до собеседования 😭
Please open Telegram to view this post
VIEW IN TELEGRAM
🤡9👍4🖕1
DEVOPS В РОССИИ 2025: ЦИФРЫ, КОТОРЫЕ СТОИТ ЗНАТЬ 💳
Свежий опрос российских DevOps-инженеров. Разберём подробно, с цифрами, потому что за этими процентами реально видно, куда двигается индустрия.
1️⃣ Топовые команды оторвались от середняков
Доля Elite-команд выросла на 4%, High на 2%. Суммарно топ-профили прибавили 6% за год.
А вот что интересно: разрыв виден не только в релизах, но и в том, как разработчики оценивают свою же работу. Спросили инженеров, согласны ли они с утверждением "обратная связь оперативна, я всё ещё в контексте задачи":
Low — 70,0%
Medium — 80,8%
High — 83,3%
Elite — 85,1%
А с формулировкой "обратная связь информативна и помогает исправить ошибки":
Low — 76,4%
Elite — 89,6%
Разница в 13 процентных пунктов на одном и том же вопросе. Это не про мотивацию людей, это про то, как в команде устроены циклы обратной связи.
2️⃣ Инфобез это теперь часть пайплайна, а не отдельный отдел
75% инженеров используют метрики ИБ в работе, 40% говорят, что инструменты безопасности встроены прямо в CI/CD.
Но внедрение ИБ даётся не бесплатно. Топ проблем, с которыми сталкиваются команды:
45,5% — не хватает технической экспертизы у команды внедрения
42,3% — проблемы совместимости с текущими системами
41,0% — высокая стоимость
36,5% — обучение персонала
33,9% — избыточные алерты и ложные срабатывания
19,6% — vendor lock, зависимость от одного поставщика
Меньше всего боятся правовых и регуляторных требований (18%). Больше всего, буквально каждый второй, боится того, что команда просто не потянет внедрение технически.
3️⃣ ИИ используют 71,3%, но толку от него по-разному
Свой уровень в промпт-инжиниринге инженеры оценивают так:
Новичок — 21,8%
Любитель — 45,7%
Опытный — 27,8%
Гуру — 4,7%
Гуру, разумеется, меньшинство. Но именно они отмечают наибольший прирост личной и командной эффективности от ИИ. То есть навык работы с промптами буквально конвертируется в пользу, а не просто "у меня есть Copilot, стало быстрее".
Ловушка с собеса🍑
Какие четыре метрики считаются мировым стандартом для оценки производительности DevOps-команды?
Deployment Frequency — частота деплоев
Lead Time for Changes — срок поставки изменений
Mean Time to Recovery — время восстановления после инцидента
Change Failure Rate — доля неудачных изменений
Это DORA-метрики. По ним, собственно, и делят команды на Low, Medium, High и Elite из первого пункта.
Индустрия взрослеет, а разрыв между теми, кто выстроил процессы, и теми, кто нет, увеличивается с каждым годом.
#devops #sre #dora #devopsинженер #ит #собес #ci_cd #backend #ии
Свежий опрос российских DevOps-инженеров. Разберём подробно, с цифрами, потому что за этими процентами реально видно, куда двигается индустрия.
Доля Elite-команд выросла на 4%, High на 2%. Суммарно топ-профили прибавили 6% за год.
А вот что интересно: разрыв виден не только в релизах, но и в том, как разработчики оценивают свою же работу. Спросили инженеров, согласны ли они с утверждением "обратная связь оперативна, я всё ещё в контексте задачи":
Low — 70,0%
Medium — 80,8%
High — 83,3%
Elite — 85,1%
А с формулировкой "обратная связь информативна и помогает исправить ошибки":
Low — 76,4%
Elite — 89,6%
Разница в 13 процентных пунктов на одном и том же вопросе. Это не про мотивацию людей, это про то, как в команде устроены циклы обратной связи.
75% инженеров используют метрики ИБ в работе, 40% говорят, что инструменты безопасности встроены прямо в CI/CD.
Но внедрение ИБ даётся не бесплатно. Топ проблем, с которыми сталкиваются команды:
45,5% — не хватает технической экспертизы у команды внедрения
42,3% — проблемы совместимости с текущими системами
41,0% — высокая стоимость
36,5% — обучение персонала
33,9% — избыточные алерты и ложные срабатывания
19,6% — vendor lock, зависимость от одного поставщика
Меньше всего боятся правовых и регуляторных требований (18%). Больше всего, буквально каждый второй, боится того, что команда просто не потянет внедрение технически.
Свой уровень в промпт-инжиниринге инженеры оценивают так:
Новичок — 21,8%
Любитель — 45,7%
Опытный — 27,8%
Гуру — 4,7%
Гуру, разумеется, меньшинство. Но именно они отмечают наибольший прирост личной и командной эффективности от ИИ. То есть навык работы с промптами буквально конвертируется в пользу, а не просто "у меня есть Copilot, стало быстрее".
Ловушка с собеса
Какие четыре метрики считаются мировым стандартом для оценки производительности DevOps-команды?
Deployment Frequency — частота деплоев
Lead Time for Changes — срок поставки изменений
Mean Time to Recovery — время восстановления после инцидента
Change Failure Rate — доля неудачных изменений
Это DORA-метрики. По ним, собственно, и делят команды на Low, Medium, High и Elite из первого пункта.
Индустрия взрослеет, а разрыв между теми, кто выстроил процессы, и теми, кто нет, увеличивается с каждым годом.
#devops #sre #dora #devopsинженер #ит #собес #ci_cd #backend #ии
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
ЧТО ДУМАЮТ О DEVOPS HR VS КАК ЭТО НА САМОМ ДЕЛЕ 🤔
Между тем, что пишет HR в вакансии, и тем, что реально происходит внутри компании, обычно пропасть в несколько этажей. Пройдёмся по всей воронке найма - от текста вакансии до оффера.
1️⃣ Текст вакансии
Кажется: ищут супергероя, который знает Kubernetes, Terraform, Ansible, Prometheus, три облака и Python на уровне синьора.
На самом деле: такую вакансию чаще всего пишет HR, который взял требования из трёх разных описаний и склеил их в одно, потому что не отличает DevOps от дата-инженера. Технический руководитель потом просто закрывает глаза на половину пунктов и смотрит на реальный опыт.
2️⃣ Отбор резюме
Кажется: резюме читает живой человек и оценивает опыт целиком.
На самом деле: в крупных компаниях первый фильтр — автоматическая система, которая ищет буквальные совпадения слов из вакансии. Если в вакансии написано «Kubernetes», а у тебя в резюме «k8s», система может тебя просто не увидеть.
Практический вывод: дублируй ключевые термины из вакансии дословно. Это не читерство, это работа с реальностью системы отбора.
3️⃣ Звонок с HR
Кажется: HR должен разбираться в том, что такое readinessProbe или Error Budget.
На самом деле: его задача — не техническая экспертиза, а проверка софт-скилов и базовых рамок: зарплата, формат работы, готовность к переезду. Если ты на этом звонке начинаешь спорить о деталях Kubernetes — просто теряешь время обоих.
4️⃣ Техническое интервью
Кажется: чем больше лет опыта в резюме, тем сильнее кандидат.
На самом деле: технический интервьюер за десять минут разговора понимает реальный уровень, и цифра в резюме почти не влияет на решение. Видел кандидатов с пятью годами стажа, которые путают liveness и readiness probe. И видел человека с полутора годами опыта, который спокойно разбирает живой инцидент.
5️⃣ Оффер и зарплата
Кажется: вилка в вакансии — это то, что ты гарантированно получишь.
На самом деле: вилка часто написана для привлечения откликов, а реальное число формируется по итогам технического интервью и иногда торга. Причём вилка может быть просто устаревшим шаблоном, который скопировали полгода назад и забыли обновить.
😵💫 Отдельно про отказы
Отказ - это не приговор твоему уровню. Чаще всего это про несовпадение с конкретной командой прямо сейчас. Видел сильного кандидата, которого не взяли, потому что искали человека именно под легаси-зоопарк технологий, а не потому что он был плох.
Что реально решает на всех этапах😵💫
Понятная история в резюме с ключевыми терминами из вакансии, чёткие ответы без воды на техническом интервью, и адекватность в общении. Все три вещи бесплатны и не требуют пятнадцати сертификатов.
А тебе попадались вакансии или отказы, которые явно писал не технарь?
#devops #hr #собес #devopsинженер #резюме #карьера #ит #трудоустройство
Между тем, что пишет HR в вакансии, и тем, что реально происходит внутри компании, обычно пропасть в несколько этажей. Пройдёмся по всей воронке найма - от текста вакансии до оффера.
Кажется: ищут супергероя, который знает Kubernetes, Terraform, Ansible, Prometheus, три облака и Python на уровне синьора.
На самом деле: такую вакансию чаще всего пишет HR, который взял требования из трёх разных описаний и склеил их в одно, потому что не отличает DevOps от дата-инженера. Технический руководитель потом просто закрывает глаза на половину пунктов и смотрит на реальный опыт.
Кажется: резюме читает живой человек и оценивает опыт целиком.
На самом деле: в крупных компаниях первый фильтр — автоматическая система, которая ищет буквальные совпадения слов из вакансии. Если в вакансии написано «Kubernetes», а у тебя в резюме «k8s», система может тебя просто не увидеть.
Практический вывод: дублируй ключевые термины из вакансии дословно. Это не читерство, это работа с реальностью системы отбора.
Кажется: HR должен разбираться в том, что такое readinessProbe или Error Budget.
На самом деле: его задача — не техническая экспертиза, а проверка софт-скилов и базовых рамок: зарплата, формат работы, готовность к переезду. Если ты на этом звонке начинаешь спорить о деталях Kubernetes — просто теряешь время обоих.
Кажется: чем больше лет опыта в резюме, тем сильнее кандидат.
На самом деле: технический интервьюер за десять минут разговора понимает реальный уровень, и цифра в резюме почти не влияет на решение. Видел кандидатов с пятью годами стажа, которые путают liveness и readiness probe. И видел человека с полутора годами опыта, который спокойно разбирает живой инцидент.
Кажется: вилка в вакансии — это то, что ты гарантированно получишь.
На самом деле: вилка часто написана для привлечения откликов, а реальное число формируется по итогам технического интервью и иногда торга. Причём вилка может быть просто устаревшим шаблоном, который скопировали полгода назад и забыли обновить.
Отказ - это не приговор твоему уровню. Чаще всего это про несовпадение с конкретной командой прямо сейчас. Видел сильного кандидата, которого не взяли, потому что искали человека именно под легаси-зоопарк технологий, а не потому что он был плох.
Что реально решает на всех этапах
Понятная история в резюме с ключевыми терминами из вакансии, чёткие ответы без воды на техническом интервью, и адекватность в общении. Все три вещи бесплатны и не требуют пятнадцати сертификатов.
А тебе попадались вакансии или отказы, которые явно писал не технарь?
#devops #hr #собес #devopsинженер #резюме #карьера #ит #трудоустройство
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
НАВЫКИ, КОТОРЫЕ РЕАЛЬНО ПРОДАЮТСЯ В DEVOPS В 2026 ГОДУ 🖐
Большинство девопс инженеров сейчас качают не те навыки. Разберём, что реально продаётся на рынке, а что уже почти ничего не стоит.
Что умерло👌
Просто уметь Docker это уже не навык, а гигиенический минимум, как уметь пользоваться почтой.
Jenkins как основной инструмент в резюме сегодня скорее красный флаг, чем плюс - индустрия давно ушла в GitHub Actions и GitLab CI.
Пачка сертификатов без единой реальной истории за спиной впечатляет только того, кто их выдал.
А знание пятнадцати инструментов по верхам работает против тебя — на собесе такого человека раскалывают за три вопроса вглубь.
А что реально продаётся👏
➕ Kubernetes не на уровне туториала, а с пониманием, как он себя ведёт в проде. Сеть, хранилище, поведение под нагрузкой, апгрейд без даунтайма.
2️⃣ Observability. Не просто поставить Prometheus и Grafana, а собрать метрики так, чтобы по ним реально принимали решения, а не просто смотрели красивые дашборды.
3️⃣ GitOps. Компании физически устали от ручных деплоев через ssh и хотят декларативный подход через ArgoCD или Flux.
4️⃣ Terraform на серьёзном уровне - с модулями и нормальным управлением стейтом, а не один файл на триста строк.
5️⃣ Понимание надёжности: SLO, Error Budget, работа с постмортемами после инцидентов.
Показательный пример☝️
Два кандидата с одинаковым стажем в три года.
Один пишет в резюме: знаю Docker, Kubernetes, Terraform, Ansible, Jenkins, Prometheus.
Второй пишет: снизил время деплоя с сорока минут до шести за счёт перехода на GitOps, и сократил количество инцидентов на треть после внедрения нормальных SLO.
Угадай, кого позовут на собес быстрее.
Дело не в списке технологий, а в том, что второй показал влияние на результат, а не просто перечислил стек.
Короче
Рынок устал от людей, которые всё попробовали, но ничего не довели до конца. Сейчас продаётся не ширина, а глубина плюс умение объяснить, что именно ты изменил.
А какой навык, по-твоему, уже потерял вес за последний год? Пиши в комментариях.
#devops #sre #kubernetes #gitops #devopsинженер #ит #собес #резюме #карьера
Большинство девопс инженеров сейчас качают не те навыки. Разберём, что реально продаётся на рынке, а что уже почти ничего не стоит.
Что умерло
Просто уметь Docker это уже не навык, а гигиенический минимум, как уметь пользоваться почтой.
Jenkins как основной инструмент в резюме сегодня скорее красный флаг, чем плюс - индустрия давно ушла в GitHub Actions и GitLab CI.
Пачка сертификатов без единой реальной истории за спиной впечатляет только того, кто их выдал.
А знание пятнадцати инструментов по верхам работает против тебя — на собесе такого человека раскалывают за три вопроса вглубь.
А что реально продаётся
Показательный пример
Два кандидата с одинаковым стажем в три года.
Один пишет в резюме: знаю Docker, Kubernetes, Terraform, Ansible, Jenkins, Prometheus.
Второй пишет: снизил время деплоя с сорока минут до шести за счёт перехода на GitOps, и сократил количество инцидентов на треть после внедрения нормальных SLO.
Угадай, кого позовут на собес быстрее.
Дело не в списке технологий, а в том, что второй показал влияние на результат, а не просто перечислил стек.
Короче
Рынок устал от людей, которые всё попробовали, но ничего не довели до конца. Сейчас продаётся не ширина, а глубина плюс умение объяснить, что именно ты изменил.
А какой навык, по-твоему, уже потерял вес за последний год? Пиши в комментариях.
#devops #sre #kubernetes #gitops #devopsинженер #ит #собес #резюме #карьера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4