Руководитель DevOps, SRE и безопасности (DevSecOps)
Group CTO для 145 человек в шести странах, при этом работаю руками. Платёжная система центробанка, AI-платформа в трёх облаках, десять A100 на собственном железе и две сертификации, прошедшие аудит.
- 99,999%доступности Bakong, платёжной системы Национального банка Камбоджи
- 0 замечанийна надзорном аудите ISO 27001; SOC 2 Type II пройден дважды
- 145 человекв шести странах, в подчинении у CEO
Путь
Чем я руководил
Восемь направлений, одна планка доказательств
Руководство
145 человек · 6 странGroup CTO · Head of DevOps, SRE & Security
Руководство
145 человек · 6 стран- Мне подчинялась вся организация, офисы в Японии, России, Швейцарии, Черногории, Таиланде и Дубае. Сам я подчинялся CEO.
- Сначала построил техническую организацию: на пике 37 прямых подчинённых, из них 12 DevOps, 6 безопасность, 19 QA.
- В Everworker начинал с нуля: ни инструментов, ни процессов, ни людей. Собрал команду безопасности из 4 человек.
Платежи и CBDC
99,999%Bakong · пилоты CBDC
Платежи и CBDC
99,999%- Надёжность и безопасность Bakong, платёжной системы Национального банка Камбоджи. Она написана на Java и работает на Hyperledger Iroha.
- Больше $150 млрд в 2024 году, около 330% ВВП Камбоджи, и 1,3 млрд платежей в 2025-м, по данным самого НБК.
- Пилоты CBDC в группе. Участник команды, получившей награду Central Banking «CBDC Partner of the Year» в 2020 году.
Платформа и AI
300+ приложений · 99% IaCAWS · Azure · GCP · своё железо
Платформа и AI
300+ приложений · 99% IaC- Платформа AI-агентов в трёх облаках: как SaaS и как установка в собственных аккаунтах клиентов.
- Листинг в AWS Marketplace с Helm-чартами для трёх облаков. Сделал один, хотя говорили, что без платных партнёров не выйдет. AWS Marketplace
- 10 × NVIDIA A100 на собственном железе в Moro Hub, Дубай (Tier III). Переехали туда после того, как забытый GPU-инстанс сжёг тысячи долларов за два дня.
- 300+ приложений, 700+ репозиториев, 6 GitHub-организаций. Сборки быстрее на 40%, расходы ниже на 30%+.
Надёжность
MTTR −60%SRE-практика с нуля
Надёжность
MTTR −60%- Встроенный SRE для 20+ продуктовых команд в 4 регионах: SLI, SLO, error budgets, incident command, разборы без поиска виноватых.
- SLA с 99% до 99,99%. Автоматические бэкапы и DR для 5 критичных систем, с реально проведёнными восстановлениями.
- Дежурства, на которых можно жить: ежедневная ротация, страхующий на каждой смене, ранбук и метрика на каждый алерт.
Безопасность и аудит
0 замечанийISO 27001 · SOC 2 Type II · NIST CSF
Безопасность и аудит
0 замечаний- ISO/IEC 27001:2022: закрыл 5 мелких несоответствий первичного аудита, затем надзорный аудит первого года без единого замечания. Trust Center
- SOC 2 Type II два года подряд, scope расширен на Privacy и Availability. Вёл программу NIST CSF по запросу клиентов.
- Secure SDLC на 100+ разработчиков: модели угроз STRIDE и VAST, оценка по CVSS и EPSS, Security Champions. Окно уязвимости короче на 70%.
- Независимый пентест: 12 находок (1 высокая, 6 средних, 5 низких) разобраны, ключевые превращены в регрессионные DAST-проверки, чтобы оставаться под тестом.
Продукты
2 продукта · 2 × 12 человекот и до
Продукты
2 продукта · 2 × 12 человек- Платёжная система для Карибских островов, со своей командой из 12 человек.
- Система баллов лояльности для крупной экосистемы, со своей командой из 12 человек.
Web3
те же гейты, что у платежейPolkadot · Klaytn · SORA
Web3
те же гейты, что у платежей- Гранты Web3 Foundation, разработка в экосистеме Polkadot, Klaytn и экосистема SORA, на тех же пайплайнах и security-гейтах, что и платёжные системы.
- Выступал на Next-Generation Payments 2023 и на финтех-конференциях в Бангкоке.
Разборы инцидентов
Из реагирования на инциденты, аудитов и работы с платформами клиентов. Каждый закончился новым контролем, а не заплаткой.
Утечка исходного кода и попытка вымогательства
87 000 событий разобрано
- Обнаружено
Аномальная активность в репозиториях.
- Расследовано
Форензика по выгрузке аудита на 87 000 событий. Охват утёкшего доступа проверили заново, а не приняли на веру.
- Исправлено
Локализация и сброс доступов, затем права по всей организации пересобраны как Pulumi IaC, чтобы ручные выдачи не вернулись.
Ротация пароля, которую не видел мониторинг
0 потерь · исправлено в тот же день
- Обнаружено
На платформе клиента управляемая БД по расписанию сменила мастер-пароль, и ночью приложение потеряло соединение с базой. Ни один алерт не сработал.
- Расследовано
Приложение читало пароль один раз, при деплое. Разбор алертинга показал, что каждое правило слепо по-своему: процесс жил, пороги ошибок стояли выше того, что этот трафик выдаёт даже при полном отказе, а алерт пула винил медленные запросы.
- Исправлено
В тот же день приложение переехало на роль с минимальными правами и паролем, которым владеет команда, а деплой теперь падает, если эта учётка не логинится. Новые алерты: пустой пул, health-эндпоинт, нижняя граница соединений, пропавший бэкап. Данные не потеряны.
Вебхуки падали на каждом четвёртом запросе
исправлено в апстриме для всех
- Обнаружено
На платформе клиента 500 на вебхуках, несовпадение подписей и ошибки CSRF задели примерно четверть POST-запросов после того, как апстрим-образ поменялся под закреплённым релизом.
- Расследовано
Chunked-тела доходили до приложения пустыми: оно читает тело по Content-Length, а у chunked-запроса его нет. Сами 500 не логировались нигде: стандартное логирование фреймворка глотало их при выключенном debug.
- Исправлено
Буферизация запросов стала поведением по умолчанию в open-source инструменте деплоя, приложение склеивает chunked на уровне WSGI, вебхуки больше не отвечают 5xx, ошибки идут в структурные логи.
Connection refused, по 14 секунд за раз
0 отказов на 7 254 пробах
- Обнаружено
Пользователи платформы клиента жаловались на отказы соединения на порту 443. Облачный автоскейлер за день выселил edge-прокси 37 раз, обычно было от 0 до 8.
- Расследовано
Прокси дренировался 10 секунд, а балансировщику нужно около 24, чтобы снять узел. Воспроизвёл пробой каждые полсекунды: окно в 14 секунд, когда падала примерно половина новых соединений.
- Исправлено
Дренаж дольше health-check, жёсткий разнос прокси по узлам, обе настройки добавлены в open-source инструмент. 0 отказов на 7 254 пробах через несколько раскаток.
Релиз, в котором можно пропустить шаг
деплой теперь всё или ничего
- Обнаружено
На платформе клиента прод 20-30 минут работал без обработчика фоновых задач, а аптайм был зелёным: воркер не задеплоился, и алертить было не на что.
- Расследовано
Релиз состоял из двух отдельных ручных шагов, сначала web, потом worker, и ничто не проверяло, что прошли оба. Проверки до мержа и admission control отбросил: в git всё было верно, а воркер в кластер не отправлялся.
- Исправлено
Связанные сервисы теперь катятся одним упорядоченным workflow, который краснеет, если не прошла любая из половин, а отдельный деплой воркера убран. Алерты на паритет остались страховкой.
Алерты, которым никто не верил
89% ложных → 0
- Обнаружено
232 срабатывания CloudTrail за 14 дней, около 89% ложных.
- Исправлено
8 детекторов сверх базового CIS с исключениями под каждый: несколько срабатываний в день, ноль ложных за первый период, ранбук на каждый алерт.
Сторож, который перестал сторожить
зависшие запуски снимаются сами
- Обнаружено
Dead-man's switch у клиента тихо перестал работать: 4,5 дня каждый запуск по расписанию заканчивался отменой.
- Расследовано
Один запуск, который CI-платформа оставила в очереди, навсегда держал concurrency-группу. Таймаут до старта джобы не действует, поэтому каждый следующий запуск ждал и отменялся. Через день повторилось.
- Исправлено
Короткие workflow по расписанию теперь отменяют текущий запуск, и застрявший заменяется следующим, а не блокирует его.
Счёт +52% при загрузке CPU 4%
11 закреплённых узлов → 5-9 по нагрузке
- Обнаружено
Ревью затрат на платформе клиента: прогноз за месяц вырос на 52%, 18 узлов работали при загрузке CPU около 4%.
- Расследовано
Disruption budget по умолчанию в инструменте деплоя оставлял однорепличным сервисам ноль допустимых выселений, и автоскейлер не мог освободить ни один узел. Каждый новый white-label закреплял ещё один.
- Исправлено
Budget, разрешающий одно выселение, раскатан по 13 репозиториям. Прод с 11 закреплённых узлов перешёл на 5-9 по нагрузке, staging с 7 на 3. Смену дефолта в самом инструменте отложил: слишком много накопленных изменений для платёжного прода.
ISMS, где были инструменты, которых у компании нет
29 политик проверено
- Обнаружено
29 унаследованных политик, написанных AI, ссылались на MDM, EDR и каталоговые сервисы, которых не существовало.
- Исправлено
Проверка каждого названного инструмента и роли стала обязательной до утверждения. AI пишет черновик, решают доказательства.