Рассказываем, как делать успешные проекты еще быстрее

Рассказываем, как делать успешные проекты еще быстрее


Автор
Павел
Павел
Ведущий разработчик-консультант

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

В таком сложном режиме перед командой разработки стоит цель поддерживать одновременно в актуальном и правильном состоянии много разных процессов. На помощь приходит автоматизация процессов разработки. Её организует DevOps. DevOps (акроним от англ. development и operations) представляет собой набор операций и задач, которые помогают программному обеспечению быть максимально продуктивным.

Разделение программных окружений

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

В нашей компании принято создавать минимум 3 рабочих окружения:

  • окружение разработки. В нем происходит основной процесс создания функционала. Оно максимально адаптировано для быстрой и удобной работы. А время программиста — один из самых важных и дорогих ресурсов при разработке. Окружение отличается скоростью сборки, разворачивания проектов для быстрого подключения нового специалиста, дополнительной функциональностью в проекте, которая существенно увеличивает скорость работы и незрима для клиента.
  • окружение тестирования. В этом окружении работают наши QA-специалисты. Оно разворачивается на тестовых серверах (или, как мы их называем, стендах). QA-специалисты создают обширные коллекции данных с целью проверить максимальное количество возможных кейсов использования проекта. Окружение характеризует возможность быстрой генерации и сброса тестовых записей. Доступ к этим стендам имеют только QA-специалисты, разработчики, а также заказчики по желанию. Это окружение гарантирует качественное и быстрое тестирование проектов.
  • продакшн окружение. Самое важное и ответственное в работе DevOps-специалиста - настроить правильно продакшн окружение. Главная его задача - обеспечение максимальной защиты от взлома и гарантия целостности, консистентности данных. Продакшн окружение — это то самое место, куда будут “стучаться” реальные пользователи, в котором стабильность работы стремится к бесконечности. Каждый хороший DevOps-специалист знает методы настройки продакшн-окружения на “боевых” серверах.
Окружение2.png

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

Почему это важно? 

Год назад популярнейший сервис для размещения проектов GitLab фактически из-за плохой настройки окружений потерял продакшн базу проекта. Специалисты восстановили её, но сервис не был доступен несколько часов: огромный удар по репутации проекта. 

Что произошло?

 Настройка окружений предполагает предоставление соответствующих доступов специалистов к тем или иным файлам, командам или серверам. Логично, что правильная настройка продакшн окружения не должна позволять удалять простой командой базу данных. Этого у GitLab предусмотрено не было. В итоге программист случайно ввёл команду на удаление базы данных и части проекта. В случае, если бы настройка на невозможность удаления БД присутствовала в окружении, введённая программистом команда не привела к таким последствиям.



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


Системы интеграции

Continuous delivery & Continuous integration (CD & CI)- две аббревиатуры, которые могут напугать заказчиков во время обсуждения работы над проектом, а молодых разработчиков-во время собеседования. На самом деле, в них нет ничего страшного.

CI & CD - это инструментарий и зона ответственности DevOps-инженера. Что это такое? Фактически, это среды реализации заранее запланированных задач, выполняемые в фоновом режиме. В рамках каждого стека технологий существует определённый набор действий, который требуется для качественной разработки. CI и CD позволяют автоматизировать эти действия.

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

Приложение CD самостоятельно и в правильном виде выгружает готовый код на различные сервера для каждого окружения: тестирования, продакшена и т.д. Программист в это время продолжает работать над функциональностью, мы экономим ресурс - время разработчика.

Например, чтобы QA-специалист смог проверить работу проекта на тестовых стендах, которые имеют окружение тестирования, обновлённый код проекта следует загрузить на этот стенд и “собрать проект”. С этой задачей самостоятельно справляется CD.

CI & CD позволяют программисту сосредоточиться на быстром и качественном создании ПО. Они берут на себя всю рутину, связанную с разработкой и позволяют существенно сократить время реализации проекта.

DevOps-одно из слагаемых успеха программного продукта. Он делает возможным автоматизировать “ручной труд”, позволяя специалистам сосредоточиться на повышении качества и скорости релиза создаваемого проекта.

Почувствуйте наш подход и повторите
успех наших клиентов

Напишите нам
МАКСИМ БЕЛЯКОВ
МАКСИМ БЕЛЯКОВ
СЕРГЕЙ ИСАКОВ
СЕРГЕЙ ИСАКОВ