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

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

Automotive parts - B2B Retail business

Добавлено 03 мая 2023 в 16:42
Работал на проекте связанного с B2B продажами автозапчастей.
Вводные:
0. Инфраструктура bare-metal в трёх регионах (есть основной 70% прибыли и два региона с 20% и 10%). Регионы никак не связаны между собой. Релиз происходит сначала на два региона с меньшим для бизнеса приоритетом, а на следующей день наблюдаем и принимаем решение о дальнейшей судьбе релиза.
1. Сам B2B (монолит ASP.NET MVC/WCF/Web Api + Angular + MS SQL + Redis + Solr + ElasticSearch), но проект двигался в сторону микросервисов и более современных фреймворков (.net core 3.1/.net 6).
2. CRM и ERP системы для получения связанной информации, используя SQL Job по расписанию для получения данных в B2B базы данных.
3. Мониторинг (Zabbix) и логирование (ELK)
4. Код и текущие pipeline были в Azure DevOps Server.
Проект был стабилен в работе, но потреблял море ресурсов для обеспечения production нагрузки + было много слабых мест в виду отсутствия RnD практик в компании.
Моя работа на проекте:
1. Автоматизация рутины. Каждый Windows Server настраивался в ручную и на это тратилось много времени - написал для начала скрипт который позволял установить всё необходимое ПО и все роли Window Server, а так же скачивал последний артефакт сборки кода и настраивал IIS.
2. Занялся мониторингом SQL job, отвещающих за синхронизацию данных (они отваливались и хотелось бы получать уведомление оперативно).
3. Принято решение о внедрении Kafka для синхронизации данных между внутренними системами и избавления от SQL job. Взял готовый runbook для развертывания Kafka кластера (на тот момент решили двигать в сторону Raft кластера без Zookeeper) + было написано несколько скриптов по настройке Kafka/Debezium Connect для захвата данных с таблиц базы SQL Server + был написан сервис за запись данных из Kafka в SQL Server B2B. Были проблемы с производительностью на текущем железе и отложили ввод в production до закупки нового железа. После введение в эксплуатацию избавились от множества проблем с рассинхронизацией данных между порталом и внутренними системами, также получили платформу для потоковой обработки и трансформации данных.
4. Занялся переписыванием pipeline с Release в Pipeline, для повышения читаемости и быстроты дальнейшей модификации.
5. Внедрении двух кластеров ELK (dev&stagging и production) и перепись всех конвейров доставки и обработки логов.
6. После получения опыта принято решение отказа от Solr (хостился на каждом window server рядом с MVC) в пользу ELK и для этого был развернут отдельный кластер для поисковых активностей.
7. Стандартизирован pipeline для сборки docker image для нескольких микросервисов и deploy на различные environments.
8. Было принято решение о миграции Web Api (написан для интеграции заказчиками нашей системы в их собственные бизнес процессы) на .net 6 и разделении его на два сервиса (web api сервис + auth сервис). Описал и развернул всю инфраструктуру + составил задачу для программистов для ухода от прямой аутентификации в AD для сбора учетных данных в сторону использования LDAP.
9. RnD - ASP.NET MVC in Windows container. С учётом полученного ранее опыта попросил программистов переписать аутентификацию на LDAP и попробовать запуск монолита в Windows Container. Удалось быстро деплоить новый артефакт, по сравнению с артефактами в zip архивах (первый запуск pipeline был длительным из-за большого размера image windows server core). Оптимальная производительность получалась только на bare metal сервере. В случае VM были большие просадки по производительности. Опыт был оформлен в вики и отложен до получения апрува от бизнеса.
3605212c2e