Проекты

DevOps

Что за технология, зачем нужна и какие задачи решает DevOps инженер

DevOps

Коротко

  • 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-инженера из OrbitSoft на проекте POSiFLORA.

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

За последнее десятилетие цикл разработки усложнился и появилась новая профессия — DevOps-инженер. Такое название — это сочетание английских слов Development (Dev) и Operations (Ops), что значит «разработка» и «поддержка».

Простыми словами DevOps — это специалист, который совмещает функции разработчика (Dev) и системного администратора (Ops): подготавливает серверную инфраструктуру для развертывания программ, помогает программистам загружать код на сервер и следит, чтобы все работало без сбоев.

DevOps — это методология, которая объединяет практики разработки и эксплуатации программ. Девопс-инженер улучшает взаимодействие между командами разработки и поддержки, автоматизирует процессы и объединяет этапы жизненного цикла программного продукта, обеспечивая быстрый, стабильный и непрерывный релиз его новых версий.

схема1

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

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

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

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

скриншот1
Система учета разработана специально для цветочного бизнеса

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

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

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

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

скрипт1

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

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

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

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

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

Также девопс настраивает систему управления контейнерами — для POSiFLORA это docker Swarm. Она следит за их состоянием, совместной работой, распределяет нагрузку.

скрипт2

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

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

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

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

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

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

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

Задача № 3: следить, чтобы система работала с помощью мониторинга zabbix

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Перезвонить вам, чтобы ответить на вопросы?

Когда с вами связаться?

Связаться по телефону:+7 499 321-59-32

Нажимая на кнопку, я принимаю условия политики и пользовательского соглашения

Фото эксперта
Дмитрий

Проектный менеджер

Получите ответ на ваш вопрос в любимом мессенджере

Выберите удобный мессенджер и начните диалог прямо сейчас

Telegram WhatsApp

Рассчитать стоимость проекта

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

Напишите ваше имя
Укажите ваш email

Выберите удобный для вас способ связи

Мы сразу получим ваш запрос и поможем в решении проблемы

Написать в Telegram

Написать в WhatsApp

Позвонить нам