Какие задачи решает DevOps

Какие задачи решает DevOps

Коротко

  • 01
    Задача

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

  • 02
    Проект

    Система учета продаж POSiFLORA

  • 03
    Эксперт

    DevOps-инженер

  • 04
    Какие задачи решает в проекте
    • Увеличивает скорость загрузки обновлений на сервер
    • уменьшает количество ошибок
    • Снижает время простоя
  • 05
    Результаты работы системы для бизнеса
    • Платформой пользуются 1 200 цветочных салонов и магазинов
    • 3,2 млн запросов по API ежедневно
    • Непрерывность работы — 99,95%
    • Возможное время аварийной остановки — не более часа за год

DevOps-инженер появился из-за усложнения процесса разработки

За последнее десятилетие цикл разработки усложнился и появилась новая профессия — DevOps-инженер. Он совмещает функции разработчика и системного администратора: подготавливает серверную инфраструктуру для развертывания программ, помогает программистам загружать код на сервер и следит, чтобы все работало без сбоев.


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

Так выглядит один из современных подходов к разработке: программисты пишут код, проверяют его, отдают тестировщикам. Девопс загружает код на внешний сервер и обеспечивает его корректное исполнение

Как девопс обеспечивает 35 дней бесперебойной работы платформы POSiFLORA

POSiFLORA — это система учета и контроля продаж, разработанная специально для цветочного бизнеса. Единая онлайн-платформа, с помощью которой можно управлять всеми бизнес-процессами сразу:

  • планировать закупки, вести учет поступивших цветов и остатков на складе;
  • составлять букеты, оформлять заказы, принимать оплату от покупателей;
  • анализировать продажи, стимулировать лояльность клиентов, распределять смены между флористами.
Система учета разработана специально для цветочного бизнеса

Задача № 1: подготовить среду программирования — изолированную область для проекта на сервере

Раньше сервером был только железный шкаф для хранения данных, сейчас все чаще используют облачные сервера: Google Cloud, Amazon Web Services. Например, код POSiFLORA хранится в дата-центрах Yandex.Cloud.

Чтобы код на сервере исполнялся, девопс подготавливает для него среду: устанавливает базы данных, языки программирования, прикладные программы. Например, чтобы написанную на PHP серверную часть POSiFLORA можно было запустить, девопс должен сначала установить интерпретатор языка на сервер.

Важная задача девопс-инженера — написать конфигурационные файлы. Это вроде текстовых файлов, которые описывают инфраструктуру. Если в коде содержатся команды, которые исполняет программа, то в конфигурационных файлах — команды, которые исполняет сервер. Например, чтобы система видела диски с базами данных, подключенные к MySQL-серверу, их нужно описать в конфигурационном файле.


Этот конфигурационный файл описывает, какие диски и каким образом подключаются к одному из MySQL-серверов

Как это помогает бизнесу

Благодаря тому, что инфраструктура всегда готова к загрузке нового кода, реализуется CI/CD-подход — непрерывная интеграция и доставка. Как только разработчики завершают код новой функции, он тестируется и загружается на внешний сервер. Это сокращает время релиза: новые функции платформы быстрее попадают к пользователям POSiFLORA, компания быстрее начинает увеличивать продажи с их помощью.

Задача № 2: автоматизировать загрузку обновлений на внешний сервер

С помощью инструмента Docker девопс организует упаковку кода в контейнеры. Примерно как обычные грузовые контейнеры, которые благодаря стандартным габаритам укладываются, как конструктор, на палубе любого сухогруза. Только внутри виртуальных контейнеров — код, который «едет» на сервер, чтобы там исполняться. Также девопс настраивает систему управления контейнерами — для POSiFLORA это Swarm. Она следит за их состоянием, совместной работой, распределяет нагрузку.


Пример Docker-файла: здесь берется базовый образ node, к нему добавляется nginx, копируются некоторые файлы и объявляются переменные (ENV)

Контейнеризация помогает:

  • избегать конфликтов кода с другими компонентами системы и больше не слышать от программистов легендарную фразу «на моей машине работает»;
  • увеличить скорость выкладки кода на сервер, так как контейнер при запуске уже готов к работе;
  • быстро вернуться к предыдущей версии, если в новой обнаружились проблемы: закачиваем старые контейнеры — и снова все работает.

Автоматизация рутинных процессов позволяет избавиться от человеческих ошибок. Например, человек, выложив код, может забыть добавить соответствующие изменения в базу данных, а система не забудет.

В итоге программисты сосредоточены на своей главной задаче: пишут код. А девопс помогает пройти весь остальной путь: собирает проверенные коды в контейнер, отправляет его на сервер и добавляет к уже работающей программе.

Как это помогает бизнесу

Пользователи меньше сталкиваются с багами, несовместимостью, получают больше позитивного опыта от работы с платформой. А программисты заняты только кодом: не задумываются о его дальнейшем пути и проблемах совместимости. Значит, меньше тратят рабочего времени зря.

Задача № 3: следить, чтобы система работала

Для POSiFLORA и других проектов OrbitSoft мы выбрали систему мониторинга Zabbix, потому что она умеет следить одновременно и за серверной инфраструктурой, и за развернутой в ней программой и у нее есть удобные инструменты для настройки запросов и уведомлений:

  1. Мониторинг сервера.

Встроенные инструменты Zabbix позволяют следить за параметрами сервера, на который загружена POSiFLORA: доступен ли он, не перегружен ли процессами, хватает ли свободного места и оперативной памяти.

  1. Мониторинг программы.

POSiFLORA построена на микросервисах — набор ее функций собран из отдельных, независимых друг от друга модулей, каждый из которых выполняет свою задачу: работа с корзиной, оформление заказов, оплата и так далее. Это удобно, потому что, если один модуль выйдет из строя, другие продолжат работать. Чтобы отслеживать работу каждого модуля, мы создали систему запросов-ответов и настроили по ним уведомления:

  • Система запросов.

Отправляя модулю запрос, мы как бы спрашиваем: «Как дела?» От модуля приходит один из связанных с этим запросом ответов: Все хорошо" или «У меня проблема». Например, чтобы проверить работоспособность системы, нужно отправить POST-запрос с идентификатором клиента на заранее созданный «проверочный» клиент: https://catalog.posiflora.com/api/v1/status. В ответ придет текущий HTTP-статус — 200 либо 201, что значит «запрос успешно обработан», и сам статус клиента в формате json. Здесь нам важно, что ответ в принципе возвращается: это значит, что система работает. Если же запрос выявил проблему, написанный девопсом скрипт преобразует ее в событие в системе мониторинга.

  • Система уведомлений.

Чтобы не пропускать важные события и реагировать на них как можно скорее, девопс-инженер настроил рассылку событий из мониторинга на электронную почту через собственный почтовый сервер OrbitSoft. Чтобы уведомления приходили в Telegram, он написал скрипт и создал бота, но в последней версии Zabbix уже появилась такая функция, поэтому скрипт отключили.

Оповещение системы мониторинга в Telegram о высокой нагрузке на процессор

Мониторинг выявляет неисправности и «узкие» места до того, как все ломается. Это помогает избегать аварий «конвейера»" и простоя во время ремонта. Так, непрерывность работы POSiFLORA составляет 99,95%, а возможное время аварийной остановки — не более часа за год.

Совет от OrbitSoft: в каких проектах нужен DevOps-инженер, а в каких можно обойтись без него

КритерийДевопс нуженМожно справиться без девопса
Размер командыДевопсы нужны не только в крупных проектах, но и в небольших, на 3—4 разработчикаОбойтись без выделенной роли девопса могут разве что совсем маленькие команды из пары разработчиков. Причем кому-то из них придется взять девопс-функции на себя: в любом случае нужно поставить на сервер интерпретатор языка программирования, базу данных, настроить политику безопасности
Нужен ли интернет для работы программыДевопс нужен там, где есть обмен данными с серверами: при разработке сайтов, веб-сервисов, браузерных приложений, работающих в интернете мобильных приложений вроде мессенджеров и соцсетей
Девопс не нужен при разработке мобильных приложений, которые не подключаются к интернету. Например, для редактора фотографий, калькулятора, простой игры. В этом случае разработчик написал код, приложение протестировали тестировщики и дальше оно выкладывается в App Store, Google Play, Windows Market — там за инфраструктурой следят соответственно Apple, Google и Microsoft

Технический блок

  • Контейнеризация и оркестрация Docker, Docker Compose, Docker Swarm
  • Сервера на базе Linux
  • Мониторинг на Zabbix плюс отслеживание скорости обработки запросов серверами кластера Grafana
  • Логирование Elasticsearch плюс Greylog

В чем бы вы ни нуждались, мы можем помочь!

Расскажите нам, с какими проблемами вы сталкиваетесь в своем бизнесе. Мы с нетерпением ждем вашего ответа.

Получите ответ по смс

Ваше сообщение успешно отправлено!
Представьтесь пожалуйста
Укажите номер, на который придет ответ
Нажимая на кнопку, вы даете согласие
на обработку персональных данных.