Типичный кейс автоматизации разворачивания веб-проекта

Продолжим разговор об Ansible. На мой взгляд, эта система управления конфигурациями настолько проста, что системный инженер средней руки вполне способен сам создать автоматизированную систему управления процессами. Другой вопрос — всегда ли это надо делать самостоятельно или лучше обратиться в специализированную компанию?
обратиться к профессионалам
Приведу простой пример из практики Git in Sky.К нам обратилась компания, которая занимается разработками веб-сервисов, с просьбой создать автоматизированную систему управления развертывания серверов. На тот момент у них не было системного инженера, и они решили передать эту работу нам.

Задача для нас была вполне типовая: создать виртуальную машину на базе Linux Debian 8, развернуть на ней около 16 системных программ. Мы должны были написать скрипты на Ansible, которые будут разворачивать каждый из этих программных компонентов и обеспечивать их настройку. Затем, по команде пользователя, в эту подготовленную среду должно «деплоиться» (развертываться) пользовательское приложение из указанных репозиториев с кодом.
пользовательское приложение
Через специальный веб-интерфейс, предоставленный заказчиком, происходит разворачивание программы из репозитория, и дальше она тестируется в необходимых по условию задачи режимах. Для нас эта работа на 7 дней (на самом деле меньше, но на непредвиденные случаи мы всегда берем срок с запасом).

Кроме того, наш клиент попросил обеспечить разворачивание своих программ на 6 production серверах:
  1. Web (nginx, php7-fpm, Cache (Redis));
  2. MasterDatabase (PostgreSQL 9.4, PostGis);
  3. Slave Database (PostgreSQL 9.4, PostGis);
  4. Sphinx search engine (+Cache (Redis));
  5. Mail server (smtp) (+Cache (Redis));
  6. Мониторинг (Zabbix/Nagios/Cacti).
При этом должен осуществляться постоянный мониторинг, автоматический откат системы при сбое с сохранением данных и прочие моменты, которые необходимы для обеспечения безопасности проекта. В заключение нас попросили написать регламент эксплуатации созданного проекта.

Составление технического задания фактически происходило по методике DevOps, когда с нашей стороны в нем участвовали системные инженеры, а со стороны клиента — программисты. На выходе мы получили сбалансированный проект, который учитывал и возможность оперативного обновления, и высокую отказоустойчивость.
Результат
В результате все работы у нас заняли 15 дней. В случае создания аналогичной автоматизированной системы силами даже хорошего системного инженера на это потребовалось бы более месяца. Таким образом, наш клиент, затратив сумму, сопоставимую с месячной заработной платой хорошего системного инженера, сэкономил время и деньги, получив взамен высокоавтоматизированный процесс в сжатые сроки и с высоким уровнем компетенции. При этом, что важно, благодаря созданию регламента и получению всех кодов, клиент имеет возможность нанять системного инженера, который сможет все это обслуживать своими силами.

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

Не пропустите последние новости. Подписывайтесь!