DevOps разработка

Ознакомьтесь с нашими успешными проектами DevOps, в которых мы внедрили передовые стратегии автоматизации, мониторинга и развертывания для улучшения процессов разработки программного обеспечения наших клиентов.

Настройка и оптимизация NGINX

Цель
Балансировка и снижение нагрузки на сервер при обработке запросов бэкендом при загруженном трафике.
Технологии
Nginx
Решение

Многие заказчики с приходом облачных сервисов продолжают разворачивать и поддерживать собственные решения. В некоторых случаях это обусловлено требованиями к безопасности, а в некоторых с целью экономии денежных средств. На первый взгляд может показаться, что поддерживать собственные решения не так сложно, например, один из наших заказчиков решил реализовать собственный кластер узлов NGINX для балансировки нагрузки на кластер с бэкендом.

Кластер серверов NGINX показался для заказчика простым в конфигурации решением, однако с увеличением загрузки NGINX терял возможность обрабатывать трафик. При изучении лог-журнала обнаружилась очевидная причина: не хватало свободных worker_connections, что привело к сбросу пакетов. Но что всех удивляло, так это то, что кол-во worker_connections (*кол-во worker процессов) было в 4 раза больше количества запросов клиентов, что должно быть очевидно достаточно.

На этом этапе заказчик обратился к нашей компании для диагностики данной проблемы. В ходе диагностики мы обнаружили, что NGINX имеет архитектурные особенности, из-за которых распределение запросов пользователей между worker процессами происходит неравномерно. По этой причине на одном из worker процессов из-за большей нагрузки и истощался резерв worker_connections.

Заказчик был весьма удивлен таким результатом, но и одновременно оценил наши технические изыскания.

Оптимизация Ansible

Цель
Оптимизировать сценарии Ansible для создания контейнеров Jenkins-master.
Технологии
Ansible
Jinja 2
Jenkins
Решение

Переработаны Ansible-скрипты создания контейнеров Jenkins-master для организации многопоточных изменений конфигурации, что позволило сократить время простоя на обновление и обслуживание 200+ контейнеров Jenkins-slaves на 90%.

Метрики пользователей

Цель
Заказчику необходимо было анализировать данные о количестве пользователях и разграничить их по категориям.
Технологии
Kubernetes
Python
Thanos
Решение

Мы реализовали методологию Gitops для автоматизации развертывания приложений в Kubernetes и обеспечения сохранности архитектуры. Мы разработали собственное приложение на Python, которое преобразовывает эти данные в метрики и передает их в систему мониторинга

Мы применили Thanos для долгосрочного хранения данных системы мониторинга с целью дальнейшего анализа развития инфраструктуры и приложения

Jenkins для сервисов

Цель
Создание шаблонного пайплайна Jenkins для сборки сервисов API и UI с помощью различных инструментов.
Технологии
Jenkins
Gradle
Yarn
Python
.Net
Решение

Используя практики devops, мы создали пайплайны шаблонов для сборок с использованием gradle, yarn, python и .net, интегрировав в них тесты кода и проверки sonarqube, что позволило привести их к единообразию и уменьшить количество ошибок сборки для существующих и новых сервисов и , соответственно, выпускать стабильные релизы.

Мобильный банкинг

Цель
Внедрить новое решение мобильного банкинга для крупного финансового учреждения.
Технологии
Amazon cloud
Docker
CI/CD
Automated Testing
Kubernetes
Prometeus
Grafana
Решение

Заказчик хотел предоставить своим клиентам современный и удобный мобильный банкинг.

Команда проекта использовала подход DevOps для создания мобильного банковского решения. Это включало автоматизацию развертывания приложения, интеграцию автоматического тестирования в конвейер сборки и развертывание приложения в нескольких облачных средах. Команда также реализовала конвейер непрерывной доставки с автоматическим контролем качества, чтобы гарантировать, что приложение полностью протестировано и готово к работе.

Успешный подход DevOps позволил заказчику быстро внедрить решение для мобильного банкинга, что позволило ему быстро вывести приложение на рынок, с уверенностью, что оно стабильно и безопасно. Клиент также смог получить представление об использовании и производительности, что позволило ему улучшить качество обслуживания клиентов.

Рефакторинг Kubernetes

Цель
Улучшить доступность, поддерживаемость и надежность сервисов в инфраструктуре Kubernetes.
Проект
Рефакторинг инфраструктуры Kubernetes для повышения доступности, поддерживаемости и надежности.
Технологии
Kubernetes
kustomize.io
Secret Manager
Bash Scripts
CI/CD
Решение

Для достижения поставленных целей были реализованы следующие решения:

  • Интеграция Kustomize: В проект был интегрирован шаблонизатор Kustomize. Были переработаны деплойменты и созданы базовые деплойменты для каждого сервиса. Кроме того, были разработаны специфичные оверлеи для каждой среды. Это улучшило понимание проекта и упростило поддержку кода.
  • Управление динамическими секретами: Были введены bash-скрипты для динамического получения секретов из Secret Manager. Этот подход заменил захардкоженные секреты в конфигурационных файлах деплойментов, повысив безопасность и упростив доступ к секретам.
  • Централизованная конфигурация: Был проведен рефакторинг кода, чтобы переменные с одним назначением и значением в сервисах были объединены в одном месте. Эта централизация снизила сложность и улучшила поддерживаемость.
  • Трансформация пайплайна: Весь пайплайн деплоя был переписан для использования Kustomize. Был установлен непрерывный интеграционный пайплайн (CI) с проверкой валидности манифестов и тестированием их с использованием схемы API-сервера Kubernetes. Это упростило интеграцию новых версий кода, обеспечивая совместимость и упрощение процесса деплоя.
  • Надежный непрерывный деплоймент: Была организована непрерывная доставка (CD) с тестированием после деплоймента с использованием команды rollout status. В случае сбоя деплоя автоматически запускается механизм отката к предыдущей версии, что повышает надежность деплоев и обеспечивает безшовное восстановление после неожиданных ошибок.