Мы с важной новостью: с 28 февраля 2025 года сервис Хабр Фриланс прекратит свою работу.

Купить услуги можно до 28 февраля 2025, но пополнить баланс уже нельзя. Если на вашем счете остались средства, вы можете потратить их на небольшие услуги — служба поддержки готова поделиться бонусами, на случай, если средств немного не хватает.
Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
DevOps Engineer

HealthCare

Добавлено 03 мая 2023 в 16:40
Проект (.net core 3.1 api + mssql server + rabbitmq + reactJS + ffmpeg + ML) в сфере медицины по анализу медициннских материалов (видео и фото) на момент моего прихода хостился на Azure Cloud в Windows VM и не имел какой-то структурности (было три разных Azure аккаунта с хаотично создаными сервисами) и актуальной документации, ввиду отсутвия инженера на протяжении двух лет. Также не имел вменяемых pipeline и автоматизированных процессов по доставки кода в различные среды (sandbox, testing, production). И ввиду большого количества сервисов - переход на микросервисную архитектуру.
Задачи которые мне удалось решить за 8 месяцев:
1. Аудит всех ресурсов и миграции их на один аккаунт. (помогло решить проблему с неиспользуемыми ресурсами и как следствия уменьшить стоимость)
2. Анализ кодовой базы и выделение сервисов по группам - frontend, web API, photo/video workers.
3. Миграция с Windows+IIS на Linux+Docker+NGINX Web API сервисов и Frontend. (решение принималось в ввиду ограниченности во времени и полученным ранее мною опытом в bare metal инфраструктуре. в течении двух недель сервисы с минимальным downtime переезжали в Docker, запущенный на Linux VM. В итоге удалось снизить стоимость обслуживания для данных сервисов в 2 раза)
4. Написание Gitlab pipeline для деплоя Docker Compose манифеста содержащего эти сервисы.
5. Доработка вместе с командой разработки worker сервисов для запуска их в Linux контейнере.
6. Перенос этих сервисов с Windows+IIS на Linux+Docker позволил автоматически задокументировать процесс сборки артефакта и увеличить скорость работы worker, ввиду более дешевой стоимость Linux VM.
7. Распиливание монолитной базы данных и миграция MSSQL Server + Windows VM на Azure SQL Managed Instance.
8. Доработка pipeline для deploy отдельных микросервисов и миграция с Linux VM на Azure Container Instance.
9. Доработка backend кода для работы с секретами в Azure Key Vault.
10. Миграция с RabbitMQ на Azure Service Bus (с небольшими правками в backend благо использовался MassTransit)
11. Написание worker (обработчик сообщение с Azure Service Bus и отправление запроса в Azure ML Studio), ответственного за выделение ресурсов Azure ML Studio c GPU для ускорения работы FFMpeg и избавления от простоев дорогостоящей инфрастуктуры с GPU.

Итого:
В конце моей работы на проекте мы получили хорошо задокументированную CloudNative инфраструктуру почти на 90% описанную в ARM templates, которая в случая необходимости могла быть быстро развёрнута в ещё одном экземпляре. Решены проблемы с CI и CD процессами, что позволило минимизировать человеческое вмешательство. Большим плюсом я считаю отсутствие в проекте K8S, хотя со стороны заказчика было большое желание. Я же убедил его не переусложнять работающую инфраструктуру.
Удалось снизить стоимость инфрастуктуры на 35-40%. Смогли вместе с командой разработки сделать решение позволяющее дать клиентам продукта быстрый отклик от обработки их мед.данных.
Не удалось поработать с ML командой, о чём чуть-чуть жалею.
9c7352e5d9