Портфолио и кейсы фрилансеров по DevOps и настройке инфраструктуры

Дмитрий Иванов
Дмитрий Иванов 1 день 3 часа назад
мониторинг сайта на VPS, Telegram-уведомления и автозапуск Docker
Установка и настройка Uptime Kuma на Ubuntu-сервере. Запуск через Docker с автоматическим перезапуском контейнера. Добавление сайта в систему мониторинга. Настройка проверки доступности сайта и времени ответа. Подключение Telegram-уведомлений о недоступности сайта и его восстановлении. Проверка работы мониторинга и отправки уведомлений. Предоставление инструкции по использованию и основным командам управления.
Евгений Росляков
Евгений Росляков 2 дня 9 часов назад
Архитектура IT-системы для сети клиник: системный анализ, архитектура предприятия и решений, план перехода на одну МИС
Задача. Владелец сети многопрофильных клиник в областном центре собирался заказать «одно приложение для всего» и уже собрал предложения. Сеть росла покупкой готовых клиник: три разные медицинские информационные системы, несколько баз учёта, колл-центр не видит расписание, лаборатория шлёт результаты файлами на почту, сайт принимает только заявки на звонок. Общей картины не было ни у кого. Нужно было понять, что менять, в каком порядке и сколько это стоит, до договора с разработчиком. Решение. Системный анализ начал с интервью администраторов, врачей, колл-центра, лаборатории, бухгалтерии и владельца, прошёл путь пациента от звонка до оплаты. Карта процессов показала: данные пациента вводят до четырёх раз, расписание живёт в трёх местах. В архитектуре предприятия для каждой задачи определил главную систему по данным. Для архитектуры решений сравнил три существующие медицинские системы по одним критериям и рекомендовал одну общую. В архитектуре инфраструктуры описал серверы, связь клиник и хранение персональных данных в России. Свёл всё в план из четырёх этапов, после каждого сеть работает. Результат. Владелец отказался от разработки с нуля, из плана выросло техзадание первого этапа. Внедрение и обучение остаются отдельной работой, я проверяю решения подрядчика. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 9 часов назад
Защита сети медлаборатории: замена Checkpoint без поддержки на FireWall на Linux, сегменты и OpenVPN для пунктов забора
Задача. В частной медицинской лаборатории с несколькими пунктами забора на компьютере регистратуры нашли чужую программу удалённого доступа. На входе стоял старый аппаратный Checkpoint: производитель ушёл из России, базы угроз не обновлялись больше года, правил несколько сотен без авторов. Сеть плоская, анализаторы, кассы и гостевой Wi-Fi в одном сегменте, пункты подключались через проброшенный порт удалённого рабочего стола с одним паролем. Нужно закрыть дыры и уйти со старого оборудования без остановки работы. Решение. За вечер закрыл порт, сменил пароли, заражённый компьютер переустановили. Разобрал правила Checkpoint, больше половины оказались мёртвыми. Сеть разделил на сегменты: анализаторы на старой Windows видят только сервер лабораторной системы, отдельно регистратура, бухгалтерия, изолированный гостевой Wi-Fi, всё неразрешённое запрещено. Новый FireWall собрал на Linux из двух серверов в паре, правила в текстовой конфигурации с комментариями и историей. Пункты подключил постоянными туннелями OpenVPN, удалённые сотрудники входят с сертификатом и одноразовым кодом. Журналы собраны в одном месте с оповещениями. Результат. Заражение одного компьютера не открывает путь к анализаторам, снаружи вход только через OpenVPN. Анализаторы на старой Windows пока остаются за отдельным сегментом. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 9 часов назад
Разработка студии мобильных игр из Алматы: код из Subversion в GitHub, сборки в Jenkins, CI/CD и превью на Vercel
Задача. Студия из шести человек делает казуальные головоломки для Android и iOS. Весь проект лежал в Subversion без веток, программисты ломали друг другу общий ствол, откат правки занимал полдня. Релиз собирал ведущий программист на своём ноутбуке с ключами подписи, в его отпуск релизы ждали. Сайты игр геймдизайнер правил прямо на хостинге. Решение. Сначала записал процесс: ветка на задачу, слияние только через проверенный запрос с автосборкой. Код перенёс из Subversion в GitHub с историей, авторами и тегами релизов, тяжёлые бинарники вынес в хранилище больших файлов. Художественные исходники сознательно оставил в Subversion с блокировкой файлов, экспорт в GitHub идёт автоматически. Сборки настроил в Jenkins на машинах студии, включая офисный компьютер с macOS, ключи и сертификаты в хранилище секретов. Каждое слияние собирает обе платформы с тестами, ночью уходит тестовая версия. Релиз стал кнопкой, цикл CI/CD описан в файле репозитория. Сайты игр перенёс на Vercel с превью для каждой ветки и откатом. Результат. Последний релиз выпустил новичок по инструкции из пяти шагов, ствол почти не ломается, художники переезда не заметили. Издатель видит превью сайтов до публикации. Сборщик iOS один, в дни обновлений к нему очередь. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 9 часов назад
Переезд маркетплейса хендмейда в облако попроще: с Amazon Web Services, Azure и Google Cloud на DigitalOcean, Cloudflare
Задача. Европейский маркетплейс изделий ручной работы с ценами в евро ведёт команда из двух основателей, одного разработчика и поддержки. Под стартовые кредиты проект разъехался по трём облакам: основное в Amazon Web Services, поиск в Microsoft Azure, аналитика в Google Cloud Platform. Кредиты кончились, пришли три непонятных счёта с забытыми машинами, балансировщиками и межоблачным трафиком. Решение. Две недели составлял опись всего запущенного с ценой и последствиями отключения, половину выключили сразу. Основным облаком выбрал DigitalOcean: приложение, база, очередь, хранилище и поиск без лишних сервисов. Перед всем поставил Cloudflare: DNS, кэш фотографий и защита от ботов, выкачивавших каталог. Базу перенёс репликацией с неделей сверки и ночным переключением с объявленным окном. Фотографии переехали в объектное хранилище фоном, старые ссылки перенаправляются. Поиск из Azure заменил открытым движком с синонимами. Аналитику в Google Cloud оставили в урезанном виде. Всё описано в одном документе: что где стоит, как развернуть заново, кого будить ночью. Результат. Один понятный счёт, страницы с фото открываются быстрее, боты отрезаны, разработчик справляется сам. Часть задач, например копии поиска, в DigitalOcean настроена своими скриптами. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 9 часов назад
Кластер в облаке для онлайн-кинотеатра: управляемый Kubernetes, Terraform и Ansible, мониторинг Prometheus, логи Kibana
Задача. Российский онлайн-кинотеатр с лицензионными фильмами работал на десятке вручную настроенных виртуальных машин. Вечером и в выходные зрителей в разы больше, API каталога и авторизации не справлялись, новый сервер поднимали полдня, а логи искали, заходя на каждую машину. Нужно было растягивать сервисы под пик, выкладывать без простоя и видеть происходящее. Решение. Взял управляемый Kubernetes у российского облачного провайдера. Сети, кластер, базы и хранилище описал в Terraform, провайдеры подтягиваются через зеркало облака, тестовое окружение поднимается той же командой. В Kubernetes переехали API, каталог, авторизация и фоновые задачи с запросами ресурсов, проверками здоровья, автомасштабированием подов и узлов и постепенной выкладкой с быстрым откатом. Серверы перекодирования на видеокартах и базы данных оставил вне кластера и настроил через Ansible. Мониторинг Prometheus с оповещениями в чат дежурных и дашбордами пика, логи всех сервисов в одном хранилище с поиском в Kibana по идентификатору запроса. Провели учения с отключением узла посреди вечера. Результат. Вечерние пики держатся, лишние узлы освобождаются ночью, окружение поднимается по описанию, версии выходят днём. Перекодирование масштабируется вручную, доставка видео не входила в работу. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 10 часов назад
Серверы проектного бюро без VMware и Citrix: перенос на KVM, терминальные серверы и удалённый вход через OpenVPN
Задача. Бюро на восемьдесят инженеров проектирует дороги и мосты. Всё держалось на кластере VMware vSphere 6.7, инженеры из дома и с выездов работали через Citrix, у обоих бессрочные лицензии без поддержки и обновлений. Служебные машины на CentOS 7 после 2024 года остались без исправлений безопасности. Работу останавливать нельзя, переезд нужен по частям с откатом. Решение. Составил план машин от простых к важным с допустимым простоем. Платформу взял открытую, на KVM, с общим хранилищем и веб-управлением. Переносил по одной машине в выходные: конвертировал диски из формата VMware, ставил драйверы в Windows-машины, проверял загрузку, сеть, программы и данные, старая копия ждала до понедельника. Вместо Citrix развернул терминальные серверы с программами проектирования и профилями на сервере. Снаружи пускает только OpenVPN с личным сертификатом и одноразовым кодом. Для машин на CentOS поднял новые на поддерживаемом дистрибутиве и перенёс данные. Настроил копии с ежемесячной проверкой восстановления и описал порядок для администратора. Результат. Серверы на платформе с обновлениями, инженеры переезда почти не заметили, вход из дома стал проще. Тяжёлые 3D-модели через удалённый стол идут медленнее, это вопрос сети и видеокарт. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 10 часов назад
Автодеплой интернет-магазина товаров для кемпинга: CI/CD в GitLab, окружения в Docker и Docker Compose, релизы без FTP
Задача. Два разработчика на аутсорсе из разных городов заливали правки магазина товаров для кемпинга по FTP прямо на боевой сервер. После релизов ломалась корзина и терялись заказы, откатить было нечем, тестовая копия отличалась от боевой, однажды правки двух человек перезаписали друг друга. Маркетолог перед акциями боялся просить о правках. Выкладку нужно было сделать скучной. Решение. Завёл репозиторий Git с ветками: основная, рабочая и своя на каждую задачу, в основную только через merge request с просмотром коллеги. Поставил GitLab CE на сервер клиента, код остаётся у владельца. Собрал CI/CD: на каждый merge request проверка кода и автотесты, после слияния образ Docker в реестр GitLab, на тест он уходит сам, на боевой сервер кнопкой. Окружения описал в Docker Compose: сайт, база, кеш, очередь, различаются только переменные. Миграции базы в пайплайне, откат запуском прежнего образа за минуты, секреты в защищённых переменных, выкладка только в рабочее время. Написал инструкцию на одну страницу. Результат. FTP закрыт, ошибки корзины ловятся на тесте, разработчики не перезаписывают друг друга. Автотесты покрывают корзину и оформление заказа, остальное покрывается постепенно, откат образа не отменяет изменений в базе. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 10 часов назад
Настройка веб-сервера для регионального оператора по отходам: Nginx на входе, Apache и LAMP на Linux, IIS для кабинета
Задача. У регионального оператора по обращению с отходами публичный сайт на LAMP (Linux, Apache, MySQL, PHP) и кабинет для юрлиц на ASP.NET под Internet Information Services. Раз в месяц сотни организаций приходят за счетами, и кабинет переставал отвечать, сайт тормозил следом. Настройки обоих серверов остались как после установки. Приложения менять было нельзя, решать нужно было на уровне серверов. Решение. Сопоставил логи дней выставления счетов с графиками загрузки: Apache упирался в память, пул приложений кабинета разрастался. Общим входом поставил Nginx на Linux: сертификаты, HTTP/2, отдача статики, кеш страниц сайта, разные таймауты для сайта и кабинета, лимит частоты запросов и защита от ботов. Apache перевёл на mpm_event, PHP вынес в PHP-FPM и подогнал лимиты под память. В Internet Information Services сделал отдельные пулы с ночной переработкой, сжатие, фильтрацию запросов и понятные журналы. Перед днём счетов провёл нагрузочную проверку, поставил мониторинг ответов и ошибок, написал регламент. Результат. День выставления счетов прошёл без остановок, сайт нагрузку почти не почувствовал, администратор готовится к пикам сам. Медленные места в коде кабинета собрал в отчёт для разработчиков: настройка серверов не лечит приложение. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.
Евгений Росляков
Евгений Росляков 2 дня 10 часов назад
Серверы на Unix для НИИ: Solaris 10 и 11 на SPARC, Red Hat на x86, снимки ZFS, зоны, документация и план ухода с SPARC
Задача. В вычислительном центре института часть сервисов на серверах SPARC под Oracle Solaris 10 и 11, часть на x86 под Red Hat Enterprise Linux 7, подписок и патчей нет. Администратор один, документации нет, а расчёты лабораторий идут днями, и остановка стоит недель работы. Нужно было навести порядок в Unix-хозяйстве, не останавливая расчёты. Решение. Провёл инвентаризацию серверов, сервисов, пользователей и зависимостей, нарисовал схему. На Solaris настроил снимки ZFS по расписанию с отправкой на отдельный сервер, перевёл службы под SMF, поставил наблюдение за дисками и памятью. Сервисы с Oracle Solaris 10 перенёс в зоны Solaris 10 на сервере с Oracle Solaris 11 без переписывания, самое старое железо выключили. Серверы RHEL 7 заменил машинами на совместимом дистрибутиве с обновлениями, лаборатории прогнали эталонные задачи, расхождений не было. Убрал заброшенные учётные записи, завёл личные вместо общих, выдал права по ролям. Написал документацию и план постепенного ухода с SPARC. Результат. Есть общая картина и инструкции на случай отсутствия администратора. Снимок ZFS уже вернул удалённый по ошибке каталог за минуты. Solaris остаётся без поддержки и закрыт от внешней сети, уход с SPARC рассчитан на несколько лет. Евгений Росляков, сайты с 2016 года. Работаю как самозанятый по договору, закрывающие документы для юрлиц.