DevOps

DevOps для мене - це не окрема професія, а набір практик, які роблять розробку передбачуванішою та комфортнішою. У цій категорії я ділюся спостереженнями про автоматизацію, CI/CD, деплой, інфраструктуру та інструменти, з якими працюю під час створення власних і комерційних проєктів.

how-automatic-ssh-tunnels-can-lock-you-out-of-your-own-server.png
DevOps

Як автоматичні SSH-тунелі можуть заблокувати доступ до власного сервера

SSH може перестати приймати нові підключення, хоча сервер доступний, сайт працює, а sshd активний. Одна з неочевидних причин - автоматичні тунелі, які після розриву з’єднання перепідключаються занадто часто й потрапляють під UFW LIMIT.

13
upgrading-php-for-one-dockerized-project-without-breaking-another.png
DevOps

Як оновити PHP для одного Docker-проєкту і не зламати інший

Коли на одній машині живе кілька Docker-проєктів, оновлення PHP має залишатися локальною зміною конкретного середовища. Ізольований runtime, окремі workspace-контейнери, зрозумілі імена сервісів і перевірка Composer-сумісності допомагають не перетворити оновлення одного проєкту на приховану поломку іншого.

26
a-deployment-is-not-successful-until-the-application-passes-a-health-check.png
DevOps

Розгортання не завершене, доки застосунок не пройшов перевірку працездатності

Успішно виконані команди розгортання ще не доводять, що застосунок працює. Після переключення потрібно перевірити HTTP-відповідь, критичні сервіси та фонові процеси, а при помилці - відкотити версію й перевірити вже результат відкату.

22
run-deployment-preflight-before-maintenance-mode-not-after.png
DevOps

Перевіряйте розгортання до режиму обслуговування, а не після

Якщо збірка, залежності, конфігурація або базові перевірки можуть впасти ще до зміни production стану, немає сенсу спочатку робити сайт недоступним. Режим обслуговування варто вмикати лише після попередніх перевірок, коли залишилися кроки, які справді потребують короткого вікна недоступності.

24
one-off-import-scripts-are-production-code-too.png
DevOps

Одноразовий скрипт імпорту теж є production кодом

Скрипт, який запускається один раз, все одно може створити дублікати, записати дані не в ту категорію, опублікувати внутрішні службові позначення або зламати двомовну структуру. Якщо він змінює production дані, його варто захищати так само серйозно, як звичайний код застосунку.

34
155-upstream-failures-nginx-https-default-server-investigation.png
Nginx

155 помилок 503, але production працював: як HTTPS default server змінив розслідування

Під час розслідування сплеску трафіку 155 upstream errors спочатку виглядали як проблема доступності основного застосунку. Але error log показав інше: запити потрапляли в окремий virtual host через поведінку HTTPS default server. Це змінило і діагноз, і захист.

40
740-requests-in-three-minutes-hardening-nginx-without-blocking-real-readers.png
Nginx

740 запитів за три хвилини: як я посилила захист Nginx без блокування реальних читачів

Після нового сплеску трафіку я не стала одразу блокувати країну, User-Agent або IP. Спочатку звірила Laravel Analytics з Nginx logs, відокремила кілька незалежних джерел трафіку, перевірила роботу Fail2ban і лише потім додала Nginx rate limiting у dry-run режимі.

49
a-backup-file-existing-does-not-mean-your-backup-strategy-works.png
DevOps

Наявність резервної копії не гарантує, що її можна відновити

Файл backup на сервері ще нічого не доводить. Потрібно знати, коли він створений, чи процес запускається регулярно, чи розмір виглядає правдоподібно, чи є історія успішних запусків і головне - чи дані реально можна відновити.

25
how-to-safely-update-php-after-critical-vulnerabilities.png

Як безпечно оновити PHP після критичних вразливостей

Якщо критична вразливість знаходиться в самому PHP, оновлення Composer-залежностей її не виправить. Потрібно перевірити всі середовища, підготувати резервні копії, оновити встановлені пакети PHP і після цього перевірити сайт, PHP-FPM, черги та Docker-контейнери.

233
two-critical-php-runtime-rce-vulnerabilities-2026.png

Дві критичні вразливості PHP можуть призвести до RCE: що відомо зараз

21 жовтня 2026 року команда безпеки PHP повідомила про CVE-2026-109618 і CVE-2026-109619 - дві критичні вразливості, які можуть дозволити віддалене виконання коду без авторизації. Проблема знаходиться в самому середовищі виконання PHP, а не в залежностях Composer.

130
using-a-release-branch-as-an-integration-boundary-cover.png
CI/CD

Release branch як інтеграційна одиниця, а не пачка окремих merge у development

Для великого релізу я не вливаю пов’язані задачі в development по одній. Спочатку вони збираються в окремій release branch, проходять спільну стабілізацію, а вже потім реліз рухається далі як одна перевірена одиниця.

61
the-first-night-after-enabling-icanup-protection-nginx-fail2ban-logs-cover.png
Nginx

Перша ніч після налаштування захисту ICanUp: що показали реальні журнали Nginx і Fail2ban

Після налаштування блокування сканерів я залишила ICanUp працювати на ніч і вранці перевірила реальні журнали. Захист спрацював, Fail2ban заблокував реальні адреси, а аналіз одночасно показав прогалину на DEV для вкладених чутливих шляхів.

82