Многие заказчики с приходом облачных сервисов продолжают разворачивать и поддерживать собственные решения. В некоторых случаях это обусловлено требованиями к безопасности, а в некоторых с целью экономии денежных средств. На первый взгляд может показаться, что поддерживать собственные решения не так сложно, например, один из наших заказчиков решил реализовать собственный кластер узлов NGINX для балансировки нагрузки на кластер с бэкендом.
Кластер серверов NGINX показался для заказчика простым в конфигурации решением, однако с увеличением загрузки NGINX терял возможность обрабатывать трафик. При изучении лог-журнала обнаружилась очевидная причина: не хватало свободных worker_connections, что привело к сбросу пакетов. Но что всех удивляло, так это то, что кол-во worker_connections (*кол-во worker процессов) было в 4 раза больше количества запросов клиентов, что должно быть очевидно достаточно.
На этом этапе заказчик обратился к нашей компании для диагностики данной проблемы. В ходе диагностики мы обнаружили, что NGINX имеет архитектурные особенности, из-за которых распределение запросов пользователей между worker процессами происходит неравномерно. По этой причине на одном из worker процессов из-за большей нагрузки и истощался резерв worker_connections.
Заказчик был весьма удивлен таким результатом, но и одновременно оценил наши технические изыскания.
Переработаны Ansible-скрипты создания контейнеров Jenkins-master для организации многопоточных изменений конфигурации, что позволило сократить время простоя на обновление и обслуживание 200+ контейнеров Jenkins-slaves на 90%.
Мы реализовали методологию Gitops для автоматизации развертывания приложений в Kubernetes и обеспечения сохранности архитектуры. Мы разработали собственное приложение на Python, которое преобразовывает эти данные в метрики и передает их в систему мониторинга
Мы применили Thanos для долгосрочного хранения данных системы мониторинга с целью дальнейшего анализа развития инфраструктуры и приложения
Используя практики devops, мы создали пайплайны шаблонов для сборок с использованием gradle, yarn, python и .net, интегрировав в них тесты кода и проверки sonarqube, что позволило привести их к единообразию и уменьшить количество ошибок сборки для существующих и новых сервисов и , соответственно, выпускать стабильные релизы.
Заказчик хотел предоставить своим клиентам современный и удобный мобильный банкинг.
Команда проекта использовала подход DevOps для создания мобильного банковского решения. Это включало автоматизацию развертывания приложения, интеграцию автоматического тестирования в конвейер сборки и развертывание приложения в нескольких облачных средах. Команда также реализовала конвейер непрерывной доставки с автоматическим контролем качества, чтобы гарантировать, что приложение полностью протестировано и готово к работе.
Успешный подход DevOps позволил заказчику быстро внедрить решение для мобильного банкинга, что позволило ему быстро вывести приложение на рынок, с уверенностью, что оно стабильно и безопасно. Клиент также смог получить представление об использовании и производительности, что позволило ему улучшить качество обслуживания клиентов.
Для достижения поставленных целей были реализованы следующие решения: