Облачная архитектура / Infrastructure as Code

Облачная инфраструктура как код, которая работает самостоятельно.

Aleksey DmitrievИнженер-фрилансер · Мюнхен · более 20 лет

Независимый инженер по разработке ПО и инфраструктуры · Infrastructure as Code, облачная архитектура, CI/CD

Я проектирую инфраструктуру, которая работает 24x7 сама.

Aleksey Dmitriev

Услуги

Infrastructure as Code и облачная архитектура

Проектирую и реализую облачную инфраструктуру в виде кода на Terraform, Kubernetes и Helm в AWS и GCP. Сюда входят миграции между облаками и платформами, CI/CD-пайплайны и наблюдаемость (observability), заложенная в архитектуру платформы с самого начала.

Разработка ПО

Разрабатываю бэкенд-приложения, интеграции между системами и инструменты автоматизации на Python и Go. Результат — протестированный код в вашем репозитории и документация, по которой ваши разработчики могут его расширять.

Технический консалтинг и ревью архитектуры

Анализирую существующую архитектуру и инфраструктурный код, выявляю риски и узкие места, составляю план модернизации. Пока ваша команда реализует план, я консультирую её.

Внедрение технологии в вашу команду: воркшоп, how-to и пилот на вашем окружении (Kubernetes, Istio, Argo CD, Terraform).

Как я работаю

От первого разговора до документированной передачи.

  1. 01

    Знакомство

    Обсуждаем цели, контекст и ограничения.

  2. 02

    Оценка

    Согласуем объём, приоритеты и результаты.

  3. 03

    Реализация

    Проектирую, пишу код и проверяю согласованное решение.

  4. 04

    Передача

    Код и документация переходят вашей команде.

Условия работы

  • Задачи и приоритеты согласуются с вами по ходу проекта; как и когда выполнять работу, решаю я сам.
  • Удалённо из Мюнхена (CET); встречи на месте по договорённости.
  • Оплата по часам или за согласованный этап.
  • Один счёт в месяц с разбивкой по задачам.
  • Договор по немецкому праву.
  • Для заказчиков-компаний за пределами Германии счёт без немецкого НДС (внутри ЕС — по схеме reverse charge).

Примеры работ

Избранные работы 2019–2026 годов, анонимно: без названий компаний, отраслей и абсолютных цифр заказчика.

Пример 1

Kubernetes в AWS: вдвое меньше нод, перезапуски только в согласованном окне

Задача

Несколько EKS-кластеров в нескольких аккаунтах AWS росли органически: фиксированные группы нод под пиковую нагрузку, on-demand везде, пакетные задачи и долгоживущие сервисы на одних и тех же нодах. Один кластер запрашивал около 60 % CPU при использовании около 10 %. Любая автоматическая консолидация нод перезапускала сервисы в произвольное время.

Решение

Перевёл кластеры на Karpenter с консолидацией недозагруженных нод, вынес пакетные задачи в отдельные пулы с защитой от вытеснения политикой, добавил spot-пулы, к которым владельцы сервисов подключаются через toleration. Первый запуск консолидации дал цикл пересоздания ноды; после разбора причин консолидация и ротация нод ограничены одним согласованным окном в сутки, с правилами оповещения о возрасте нод. Все изменения через Terraform/Terragrunt и MR с ревью, раскатка по кластерам по одному с проверкой после каждого.

Результат

Число нод сократилось более чем вдвое, расходы на ноды соответственно. Сервисы перезапускаются только в окне; инциденты из-за консолидации прекратились.

Пример 2

CI на self-hosted GitLab: от bare-metal раннеров, настроенных вручную, к автоскейлящимся флотам

Задача

Нативные сборки шли на нескольких bare-metal раннерах с ручной настройкой. Одна и та же сборка занимала от 7 минут до более часа в зависимости от загрузки хостов, ARM-очередь голодала, диски забивались старыми образами, хранилище артефактов дважды переполнялось и валило джобы. Около 40 % фоновых задач GitLab-сервера уходило на мёртвые вебхуки.

Решение

Спроектировал автоскейлящиеся раннер-флоты в AWS (x86 и ARM, spot), описанные кодом и разворачиваемые через GitOps. Прогнал тестовую неделю на реальных джобах, мигрировал самый тяжёлый проект, затем вывел статические раннеры и переустановил их хосты под вычислительный кластер. Убрал мёртвые вебхуки, ввёл сроки хранения CI-истории и лимиты кэша сборок, написал процедуру апгрейда сервера с проверкой фоновых миграций и передал её команде.

Результат

Статических раннеров не осталось. Хранимых пайплайнов на 58 % меньше, задержка фоновых задач упала с минут до секунд. Плановый апгрейд сервера укладывается в окно около получаса.

Пример 3

Bare-metal кластер под вычисления с большим объёмом данных, управляемый как код

Задача

Команде анализа данных нужны были вычисления с быстрыми локальными дисками и большими объёмами данных, которые в облаке стоили несоразмерно дорого. Требовался кластер на арендованных серверах с той же дисциплиной, что в облаке: воспроизводимая установка, шифрование данных, общий доступ к хранилищу без ключей на хостах.

Решение

Начал с пилота из трёх нод и расширил кластер до более чем пятнадцати: установка и бутстрап через Ansible, RAID0 под рабочие данные, LUKS на разделе с данными, общий бакет объектного хранилища, примонтированный только для чтения на всех нодах через сетевую политику вместо ключей на хостах. Написал процедуру ввода, вывода и переустановки нод и инструкцию для пользователей кластера.

Результат

Партия из десяти нод введена в строй за несколько дней по процедуре, а не по памяти одного человека. Прямое чтение из бакета примерно в семь раз быстрее прежнего пути.

Пример 4

Более десяти EKS-кластеров подняты на три мажорные версии

Кластеры отставали на несколько версий Kubernetes и платили надбавку за устаревшие версии. Поднял все кластеры через цепочку версий вместе с CNI, с репетицией на тестовом кластере и окнами до начала пиковой нагрузки; процедуру оформил в playbook и передал команде. Надбавка снята; на основных кластерах ни одного инцидента.

Пример 5

AWS-платформа: от bastion-хостов и статических ключей к OIDC и managed-сервисам

Компания с несколькими веб-продуктами на ECS и без документации по инфраструктуре. Спроектировал EKS-окружение с нуля как код (Argo CD, IRSA, CSI-драйверы для секретов и EFS, логи в OpenSearch, ExternalDNS), заменил bastion на ECS Exec, мигрировал базу на Aurora Serverless, перевёл репозитории на GitHub Actions с OIDC вместо статических ключей, поднял несколько site-to-site VPN с BGP и перенёс брокер сообщений с внешнего хостинга в AWS без инцидентов.

Пример 6

Единый deploy-flow для восьми репозиториев

Деплой-пайплайны восьми сервисов открывали MR в GitOps-репозиторий по-разному и застревали при параллельных деплоях. Перевёл их на общий CI-компонент с rebase-and-retry, проверил четырьмя одновременными деплоями, закрыл более ста зависших MR. Деплои больше не требуют ручного вмешательства.

Пример 7

Команда облачной платформы для B2B-продукта

Руководил командой из семи инженеров, строившей Kubernetes-платформу. Мигрировал production-кластеры с Docker на containerd, ввёл spot-флот для dev-окружений примерно за треть цены on-demand ноды, выделенные группы нод для критичных приложений, правила requests/limits и управления ёмкостью для всех команд, автоматическое обновление сертификатов через cert-manager, первый в компании Kubernetes-оператор на Go, managed Kafka с собственными дашбордами, GitOps на Argo CD и инфраструктуру как код на Terraform.

Разработка

Собственные проекты, показывающие, как я разрабатываю софт, а не только инфраструктуру.

Аналитическая платформа: от 40+ сырых источников к решениям

Сквозной конвейер: приём данных из более чем сорока разнородных источников, нормализация и хранение как временных рядов, оценка движком правил и LLM-анализом со структурированным выходом, доставка результата туда, где по нему действуют: дашборды в веб-приложении, плановые дайджесты и событийные уведомления в Telegram, другие каналы подключаемы. Инженерия: сборщики с контролем консистентности и восстановлением после сбоев, изменения схемы только через миграции, записи архитектурных решений, сквозные и модульные тесты, деплой с откатом. Python, PostgreSQL, TypeScript.

Конвейер распознавания речи и суммаризации на собственном GPU-оборудовании

Отслеживает видео- и аудиоканалы, берёт субтитры там, где они есть, иначе транскрибирует на GPU с детекцией речи и подавлением галлюцинаций, затем суммаризирует самостоятельно размещённой LLM и отдаёт результаты в веб-приложении за OAuth. Приватность по умолчанию: ничего не покидает периметр владельца, внешних API нет. Качество распознавания настроено и задокументировано по языкам и условиям записи. Python.

Инструмент для секретов на macOS с аппаратной разблокировкой

Утилита командной строки на Swift: хранит мастер-секрет менеджера паролей в Data Protection Keychain, разблокирует его по Touch ID и передаёт постквантовый ключ age в SOPS для шифрования секретов репозиториев. Ноль сетевого доступа, ноль телеметрии, задокументированная модель угроз.

Стенд для сравнения LLM-агентов для кода

Одна и та же задача отдаётся нескольким агентам; стенд замеряет токены, время и расход квот, отдельный агент-судья оценивает результаты по рубрике и пишет отчёт. Выбор инструментов после этого делается по цифрам, а не по впечатлениям.

Обо мне

Проектирование и разработка заказного ПО и инфраструктурного кода, облачная архитектура и связанный с ними технический консалтинг для компаний в Германии, Австрии, Швейцарии, Нидерландах, Великобритании и США. Мюнхен, работа удалённо. Без поставки оборудования и лицензий, без текущей эксплуатации систем.

В Германии с 2016 года, в Мюнхене с 2019-го, работаю самостоятельно как Freiberufler (свободная профессия по немецкому праву). Высшее образование по специальности «Вычислительные машины, комплексы, системы и сети» (ГУАП, Санкт-Петербург, 2002), более 20 лет в инфраструктуре и разработке ПО на фундаменте Linux, сетей и системного программирования. Языки программирования: Python, Go, Swift, TypeScript. Языки: английский, немецкий, русский.

  • Kubernetes
  • Terraform
  • Terragrunt
  • Helm
  • Argo CD
  • GitOps
  • AWS
  • GCP
  • Bare metal
  • Linux
  • Karpenter
  • Istio
  • Kafka
  • PostgreSQL
  • GitLab CI
  • GitHub Actions
  • Prometheus
  • Grafana
  • Python
  • Go
  • LLM integration

Контакты