Коротко
- 01Задача
Автоматизировать цепочку процессов, которые проходит код от разработчика до пользователя, и следить, чтобы она работала без сбоев
- 02Проект
Система учета продаж POSiFLORA
- 03Эксперт
Devops engineer
- 04Какие задачи решает в проекте
- Devops автоматизация
- Devops системное администрирование
- Контейнеризация приложений docker
- Оркестрация контейнеров docker
- Elasticsearch логирование
- Zabbix настройка мониторинга
- Мониторинг с помощью Zabbix
- Posiflora интеграция
- 05Результаты работы системы для бизнеса
- Платформой пользуются 1 200 цветочных салонов и магазинов
- 3,2 млн запросов по API ежедневно
- Непрерывность работы — 99,95%
- Возможное время аварийной остановки — не более часа за год
DevOps-инженер появился из-за усложнения процесса разработки
За последнее десятилетие цикл разработки усложнился и появилась новая профессия — DevOps-инженер. Он совмещает функции разработчика и системного администратора: подготавливает серверную инфраструктуру для развертывания программ, помогает программистам загружать код на сервер и следит, чтобы все работало без сбоев.

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

Так выглядит один из современных подходов к разработке: программисты пишут код, проверяют его, отдают тестировщикам. Девопс загружает код на внешний сервер и обеспечивает его корректное исполнение
Как devops разработчик обеспечивает 35 дней бесперебойной работы платформы POSiFLORA
POSiFLORA — это система учета и контроля продаж, разработанная специально для цветочного бизнеса. Единая онлайн-платформа, с помощью которой можно управлять всеми бизнес-процессами сразу:
- планировать закупки, вести учет поступивших цветов и остатков на складе;
- составлять букеты, оформлять заказы, принимать оплату от покупателей;
- анализировать продажи, стимулировать лояльность клиентов, распределять смены между флористами:
- Проводить автоматизацию рутинных процессов.

Задача № 1: подготовить среду программирования — изолированную область для проекта на сервере
Раньше сервером был только железный шкаф для хранения данных, сейчас все чаще используют облачные сервера: Google Cloud, Amazon Web Services. Например, код POSiFLORA хранится в дата-центрах Yandex.Cloud.
Чтобы код на сервере исполнялся, девопс подготавливает для него среду: устанавливает базы данных, языки программирования, прикладные программы. Например, чтобы написанную на PHP серверную часть POSiFLORA можно было запустить, девопс должен сначала установить интерпретатор языка на сервер.
Важная задача девопс-инженера — написать конфигурационные файлы. Это вроде текстовых файлов, которые описывают инфраструктуру. Если в коде содержатся команды, которые исполняет программа, то в конфигурационных файлах — команды, которые исполняет сервер. Например, чтобы система видела диски с базами данных, подключенные к MySQL-серверу, их нужно описать в конфигурационном файле.

Этот конфигурационный файл описывает, какие диски и каким образом подключаются к одному из MySQL-серверов
Как это помогает бизнесу
Благодаря тому, что инфраструктура всегда готова к загрузке нового кода, реализуется CI/CD-подход — непрерывная интеграция и доставка. Как только разработчики завершают код новой функции, он тестируется и загружается на внешний сервер. Это сокращает время релиза: новые функции платформы быстрее попадают к пользователям POSiFLORA, компания быстрее начинает увеличивать продажи с их помощью.
Задача № 2: автоматизировать загрузку обновлений на внешний сервер
С помощью инструмента Docker девопс организует упаковку кода в контейнеры. Примерно как обычные грузовые контейнеры, которые благодаря стандартным габаритам укладываются, как конструктор, на палубе любого сухогруза. Только внутри виртуальных контейнеров — код, который «едет» на сервер, чтобы там исполняться. Так происходит контейнеризация Docker.
Также девопс настраивает систему управления контейнерами — для POSiFLORA это docker Swarm. Она следит за их состоянием, совместной работой, распределяет нагрузку.

Пример Docker-файла: здесь берется базовый образ node, к нему добавляется nginx, копируются некоторые файлы и объявляются переменные (ENV)
Контейнеризация помогает:
- избегать конфликтов кода с другими компонентами системы и больше не слышать от программистов легендарную фразу «на моей машине работает»;
- увеличить скорость выкладки кода на сервер, так как контейнер при запуске уже готов к работе;
- быстро вернуться к предыдущей версии, если в новой обнаружились проблемы: закачиваем старые контейнеры — и снова все работает.
Автоматизация рутинных процессов позволяет избавиться от человеческих ошибок. Например, человек, выложив код, может забыть добавить соответствующие изменения в базу данных, а система не забудет.
В итоге программисты сосредоточены на своей главной задаче: пишут код. А девопс помогает пройти весь остальной путь: собирает проверенные коды в контейнер, отправляет его на сервер и добавляет к уже работающей программе.
Как это помогает бизнесу
Пользователи меньше сталкиваются с багами, несовместимостью, получают больше позитивного опыта от работы с платформой. А программисты заняты только кодом: не задумываются о его дальнейшем пути и проблемах совместимости. Значит, меньше тратят рабочего времени зря.
Задача № 3: следить, чтобы система работала с помощью мониторинга zabbix
Для POSiFLORA и других проектов OrbitSoft системный администратор Devops выбрал систему мониторинга Zabbix, потому что она умеет следить одновременно и за серверной инфраструктурой, и за развернутой в ней программой и у нее есть удобные инструменты для настройки запросов и уведомлений:
- Мониторинг сервера.
Встроенные инструменты Zabbix позволяют следить за параметрами сервера, на который загружена POSiFLORA: доступен ли он, не перегружен ли процессами, хватает ли свободного места и оперативной памяти.
- Мониторинг программы.
POSiFLORA построена на микросервисах — набор ее функций собран из отдельных, независимых друг от друга модулей, каждый из которых выполняет свою задачу: работа с корзиной, оформление заказов, оплата и так далее. Это удобно, потому что, если один модуль выйдет из строя, другие продолжат работать. Чтобы отслеживать работу каждого модуля, мы создали систему запросов-ответов и настроили по ним уведомления:
- Система запросов.
Отправляя модулю запрос, мы как бы спрашиваем: «Как дела?» От модуля приходит один из связанных с этим запросом ответов: Все хорошо" или «У меня проблема». Например, чтобы проверить работоспособность системы, нужно отправить POST-запрос с идентификатором клиента на заранее созданный «проверочный» клиент: https://catalog.posiflora.com/api/v1/status. В ответ придет текущий HTTP-статус — 200 либо 201, что значит «запрос успешно обработан», и сам статус клиента в формате json. Здесь нам важно, что ответ в принципе возвращается: это значит, что система работает. Если же запрос выявил проблему, написанный девопсом скрипт преобразует ее в событие в системе мониторинга.
- Система уведомлений.
Чтобы не пропускать важные события и реагировать на них как можно скорее, девопс-инженер настроил рассылку событий из мониторинга на электронную почту через собственный почтовый сервер OrbitSoft. Чтобы уведомления приходили в Telegram, он написал скрипт и создал бота, но в последней версии Zabbix уже появилась такая функция, поэтому скрипт отключили.

Мониторинг выявляет неисправности и «узкие» места до того, как все ломается. Это помогает избегать аварий «конвейера»" и простоя во время ремонта. Так, непрерывность работы 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