Писал ли на PHP?

«Писал ли на PHP?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, но в контексте DevOps это был в основном legacy-стек, который требовал поддержки и модернизации инфраструктуры. Мой опыт с PHP связан со следующими задачами:

  • Автоматизация деплоя: Писал и поддерживал скрипты на PHP (часто в связке с Bash), которые выполняли последовательность действий для деплоя монолитных PHP-приложений (например, на Symfony или Laravel) — синхронизацию кода, выполнение миграций БД, очистку кеша.
  • Интеграция с CI/CD: Настраивал пайплайны (в Jenkins или GitLab CI) для PHP-проектов, которые включали этапы: запуск статического анализатора phpstan, тестов phpunit, сборки Docker-образов с PHP-FPM и деплоя в k8s или на виртуальные машины.
  • Инструменты мониторинга: Создавал простые скрипты для сбора кастомных метрик (например, количество фоновых задач в очереди) и их отправки в Prometheus через Pushgateway или в виде HTTP-эндпоинта для scraper'а.

Пример скрипта для проверки состояния деплоя (проверяет доступность health-чека после обновления):

<?php
$url = 'http://app-service/health';
$retries = 10;
$delay = 5;

for ($i = 0; $i < $retries; $i++) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode === 200 && json_decode($response)->status === 'UP') {
        echo "Deployment successful.n";
        exit(0);
    }
    sleep($delay);
}

echo "Deployment health check failed.n";
exit(1);