Вопросы DevOps для разработчика на собесе
↑ Этап 9 · Собес Middle DevOps: вопросы, практика, деплой систем
Зачем это на собесе
Backend/fullstack-разработчикам задают DevOps-вопросы: как код живёт в проде. Нужны короткие и точные ответы.
Контейнеры и Docker
Чем контейнер отличается от виртуальной машины?
Контейнер — изолированный процесс на общем ядре хоста (namespaces + cgroups), лёгкий и быстрый. ВМ эмулирует железо и запускает собственное ядро под гипервизором: тяжелее, сильнее изоляция.
Что такое слои образа и как работает кэш сборки?
Каждая инструкция создаёт неизменяемый слой; неизменённые слои берутся из кэша. Поэтому файлы зависимостей копируют и устанавливают раньше исходного кода.
Зачем multi-stage build?
Собирать в образе с SDK, а в итоговый копировать только артефакты в лёгкий рантайм: меньше размер и поверхность атаки.
ENTRYPOINT и CMD — в чём разница?
ENTRYPOINT — исполняемая команда, CMD — аргументы по умолчанию, заменяемые при запуске. Используют exec-форму, чтобы процесс получал сигналы.
Как контейнеры общаются в docker compose?
В общей сети по именам сервисов (встроенный DNS); публикация портов нужна только для доступа снаружи.
Где хранить данные контейнера?
Во volumes/bind mounts; слой записи контейнера эфемерен.
Почему контейнер не должен работать от root?
Снижает ущерб при компрометации и предотвращает повышение привилегий на хосте.
Конфигурация и секреты
Как передавать конфигурацию приложению?
Переменными окружения/файлами, отдельно от образа (12-factor); один образ на все окружения. В .NET переменные
Section__Keyпереопределяютappsettings.json.
Где хранить секреты?
В защищённом хранилище (Vault, облачный менеджер, CI secrets, Kubernetes Secret + шифрование), но не в Git, образах и логах.
CI/CD
Чем Continuous Delivery отличается от Deployment?
В Delivery релиз в прод запускается вручную, в Deployment — автоматически после успешных проверок.
Из чего состоит хороший пайплайн?
Сборка, линтеры, unit и интеграционные тесты, статический анализ и сканирование зависимостей, сборка образа, публикация артефакта, деплой в стенд, smoke-тесты, прод с подтверждением, откат.
Как организовать откат?
Неизменяемые версионированные артефакты: возврат на предыдущий тег; схема БД обратно совместима (expand/contract).
Как деплоить без простоя?
Rolling update с readiness probe, blue-green или canary, graceful shutdown, совместимые миграции.
Что такое «build once, deploy many»?
Один и тот же артефакт проходит все окружения; различается только конфигурация.
Базы данных в эксплуатации
Как применять миграции БД при деплое?
Отдельным шагом до выкатки кода, обратно совместимые (добавление нового, удаление старого позже), отдельной учётной записью, с проверкой на копии.
Как пережить падение БД?
Репликация и автоматический failover, бэкапы с PITR, пул соединений и повторные попытки в приложении, мониторинг.
Kubernetes для разработчика
Что такое Pod, Deployment, Service, Ingress?
Pod — группа контейнеров; Deployment — декларативное управление репликами и обновлениями; Service — стабильный адрес и балансировка между подами; Ingress — внешний HTTP-вход.
liveness и readiness probe?
Liveness — перезапуск зависшего контейнера; readiness — включение в балансировку только готовых. Liveness не должна зависеть от внешних систем.
requests и limits?
Requests — гарантированные ресурсы для планирования; limits — потолок. Превышение памяти — OOM kill, CPU — троттлинг.
Как обновляется приложение в Kubernetes?
Rolling update: создаются новые поды, после readiness старые удаляются;
kubectl rollout undoдля отката.
Как приложение получает конфигурацию и секреты?
Через ConfigMap и Secret как переменные окружения или файлы, плюс перезапуск или перечитывание при изменении.
Наблюдаемость
Три столпа наблюдаемости?
Метрики, логи и трассировки; плюс корреляция по
trace_id.
Что должно быть в логах?
Структурированный JSON, уровень, время UTC,
trace_id, без секретов и персональных данных.
Что такое health-эндпоинты и зачем?
/health/liveи/health/readyдля оркестратора и балансировщика: перезапуск зависших и исключение неготовых экземпляров.
Как измерять качество сервиса?
SLI (успешность, латентность) и SLO; алерты на симптомы и burn rate бюджета ошибок.
Безопасность и сети
Как работает TLS и зачем HSTS?
Рукопожатие, проверка сертификата, обмен ключами, шифрование; HSTS заставляет браузер использовать только HTTPS.
Зачем reverse proxy (nginx)?
Единая точка входа, TLS termination, маршрутизация, балансировка, сжатие, кэширование, защита и лимиты.
Что такое CORS и как связан с прокси?
Ограничение браузера на кросс-доменные запросы; единый домен через reverse proxy убирает необходимость в CORS.
Как защитить сервис от перебора и перегрузки?
Rate limiting, ограничение соединений, WAF, блокировки по IP, капча на уровне приложения.
Инфраструктура как код
Что такое IaC и идемпотентность?
Описание инфраструктуры в коде; повторный запуск не меняет систему, если она уже в нужном состоянии.
Terraform и Ansible: разница?
Terraform создаёт облачные ресурсы (декларативно, со state), Ansible настраивает ОС и ПО (по SSH, без state).
Linux и отладка
Как понять, что процесс убил OOM killer?
dmesg -T | grep -i oom, код выхода 137,docker inspect→ OOMKilled.
Как диагностировать «порт недоступен»?
ss -tulpn(слушает ли),nc -vz, firewall (ufw/iptables), security group, DNS,curl -v.
Что такое load average?
Средняя длина очереди выполняемых и ожидающих I/O процессов; сравнивается с числом ядер.
Вопросы-«ловушки»
«У нас всё работает локально». Как гарантировать, что будет так же в проде?
Контейнеризация с теми же образами, конфигурация через окружение, одинаковые версии зависимостей (lock-файлы), паритет окружений, тесты на стенде и Infrastructure as Code.
Сервис в Kubernetes перезапускается каждые несколько минут. Причины?
Провал liveness probe, OOMKilled, падение приложения при старте/зависимости, неверные ресурсы, ошибка конфигурации; смотреть
describe pod, логи--previous.