Портфолио /
Автоматизация развертывания проектных систем. DevOps.
Окружение на Docker контейнерах

Решение по автоматизации развёртывания проектного окружения сократит время на сборку системы в десятки и даже в сотни раз.

Современная онлайн система – это не только бизнес логика, информация на дисках и красивый интерфейс. Это еще и взаимодействие с большим количеством внутренних и внешних сервисов.

Одни сервисы облегчают работу с социальными сетями, другие обеспечивают электронные платежи, третьи позволяют получить необходимые данные за оплату. Одновременно с преимуществами, которые дают эти сервисы, усложняется процесс разработки и тестирования самой системы. В процессе отладки зачастую нет возможности работать с «боевыми» системами, а эмуляторов либо нет, либо они требуют дополнительной установки и конфигурации. Проблему разворачивания окружения можно решать с помощью подробных инструкций с описанием десятков шагов.

 

Другой путь – автоматизация процесса разворачивания и запуск по кнопке. Решение сократит время на подготовку инструментов, и вы сконцентрируетесь на задачах, которые эти инструменты решают.

Ниже мы делимся опытом автоматизации.

Наше решение, построенное на Docker контейнерах:

  • Не зависит от платформы
  • Позволяет легко добавлять новые компоненты системы.
  • Масштабируется. Есть возможность добавлять ресурсы отдельным узлам, и увеличивать количество этих узлов
  • Устойчиво к включению/выключению компьютера
  • Поддерживает несколько версий системы

В результате внедрения решения в МФК ‘SMSFinance’ для проектной инфраструктуры, состоящей из CRM системы, call-центра, подсистемы биллинга, а также 27 внешних сервисов, время развёртывания уменьшилось с 2 дней до 20 минут.

DevOps Digital BSS платформы с Kubernetes

Digital BSS система оператора связи — это платформа, для эффективной цифровой трансформации. Возникла необходимость усовершенствовать данное решение до коробочного продукта.

Для того, чтобы коробочный вариант платформы предоставлять бОльшему кругу клиентов, необходимо, чтобы он удовлетворял требованиям автоматической инсталляции, обновления, масштабирования и мониторинга. При этом не нуждался в контроле специалистами по продукту.

 

Ранее для развёртывания платформы использовали Ansible. Чтобы добавить в платформу требуемые возможности, мы реализовали контейнеризацию с использованием технологии Docker. Благодаря этому окружения каждого модуля стали изолированными друг от друга, что упростило процессы разработки и автоматизации тестирования. Далее реализовали управление контейнерами посредством Kubernetes. Kubernetes — production-ready система оркестрации контейнеров, которая отвечает за масштабирование, отказоустойчивость и развёртывание. Таким образом, после внедрения Kubernetes в продукте появились следующие возможности:

  • Обнаружение сервисов и балансировка нагрузки между ними. Контейнеры в Kubernetes получают доступ друг к другу, используя сервисы с назначенными DNS-именами, между которыми распределяется трафик.
  • Автоматизированное развертывание и откат. Для развертывания приложения достаточно описать желаемые состояния контейнеров, которые и будет поддерживать Kubernetes.
  • Распределение ресурсов между контейнерами. Для каждого контейнера указывается необходимое количество ресурсов, и Kubernetes выполняет оптимизацию.
  • Восстановление контейнеров после сбоя. Если возникает проблема при развёртывании, Kubernetes перезапускает приложение и проверяет его состояние. Только после подтверждения готовности переводит трафик клиентов.
  • Систему можно разворачивать как на нескольких физических машинах, объединённых в кластере, так и в облаке.

Для поддержки CI/CD-инфраструктуры проекта использовали пакетный менеджер Helm. Это дало возможность инсталляции и обновления модулей с управляемой конфигурацией в имеющемся кластере. Для наблюдения за состоянием продукта добавили систему мониторинга Prometheus.

Таким образом построили платформу — коробочное решение. Оно готово к автоматическому развёртыванию и обновлению в любой инфраструктуре клиента. Масштабируется и обладает замкнутой самоподдерживаемой экосистемой.

На проекте использовали технологии:

  • Серверные технологии: JDK 11, Spring Boot 2.X, Gradle, Prometheus
  • DevOps: Kubernetes, Helm, TeamCity