Поиск по сайту:

LFCA: Изучите основные концепции DevOps – Часть 21


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

Начнем с того, что DevOps — это сочетание двух слов: Разработка и Операция. Это набор практик и инструментов, которые способствуют сотрудничеству между командами разработчиков (Разработчики) и операторами (Операторы). Цель DevOps — оптимизировать жизненный цикл разработки программного обеспечения, свести к минимуму количество сбоев, увеличить частоту развертываний и добиться высококачественного программного обеспечения.

Чтобы лучше понять DevOps в современной ИТ-среде, давайте взглянем на то, какой была модель развертывания до появления DevOps.

Традиционные ИТ-практики

До появления DevOps команды разработчиков и инженеры по контролю качества использовали классическую водопадную модель. Рабочая среда была в значительной степени изолированной, а тестирование и развертывание приложений происходило в полной изоляции. Это приводило к дублированию обязанностей, пробелам, задержкам в обратной связи и другим факторам неэффективности, которые требовали дополнительного времени для завершения проекта. Ограниченная и запоздалая обратная связь означала, что качество программного обеспечения не подвергалось тщательной проверке до последнего этапа разработки.

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

Введите DevOps

Концепция DevOps была задумана где-то между 2007 и 2010 годами двумя разработчиками: Эндрю Шейфером и Патриком Дебуа. С момента своего создания он способствовал бесперебойному сотрудничеству между командами эксплуатации и разработки на каждом этапе жизненного цикла разработки программного обеспечения. Это положило начало новым концепциям, таким как Непрерывная интеграция ( CI ) и Непрерывная доставка ( CD ) и многим другим, которые способствуют к быстрой доставке программного обеспечения.

Модель и практики DevOps

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

Непрерывная интеграция (CI)

Непрерывная интеграция – это практика разработки программного обеспечения, при которой разработчики объединяют изменения кода в один центральный репозиторий. После этого на коде выполняются автоматические тесты и сборки. Цель непрерывной интеграции — ускорить отладку приложений, сократить время выпуска новых обновлений программного обеспечения и повысить качество программного обеспечения.

Непрерывная доставка (CD)

Непрерывная доставка (CD) — это еще один метод, при котором изменения в коде автоматически создаются и развертываются для тщательного тестирования. Позже для развернутого кода выполняются автоматические тесты, позволяющие разработчикам выявлять и исправлять ошибки. Обычно код постепенно подвергается множеству сред тестирования, где с помощью стандартной автоматизированной процедуры код достигает высшей оценки качества.

Популярные инструменты CI/CD включают Jenkins, Travis CI, Circle CI, Azure DevOps и сборку кода AWS.

Непрерывное тестирование

Целью непрерывного тестирования является выявление ошибок и потенциальных рисков на ранних этапах жизненного цикла разработки программного обеспечения, чтобы свести к минимуму ошибки, которые могут проявиться в конечном продукте. Если код не проходит строгие тесты, его обычно отправляют обратно разработчику на доработку, а затем передают в отдел обеспечения качества для оценки и функционального тестирования. Широко используемые инструменты непрерывного тестирования включают Travis и Selenium.

Непрерывный мониторинг и вход в систему

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

  • Использование памяти и процессора
  • Использование дискового пространства
  • Использование полосы пропускания
  • Взаимодействие с клиентами

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

Популярные инструменты мониторинга включают Prometheus, Grafana, Nagios, Zabbix и Netdata, и это лишь некоторые из них.

Инфраструктура как код

Сокращенно IaC, Инфраструктура как код описывается как развертывание и управление такими ресурсами, как виртуальные серверы и балансировщики нагрузки, с использованием машиночитаемых файлов конфигурации, а не интерактивных инструментов настройки. . Это особенно важно в облачных средах, таких как AWS, где вы можете легко развернуть вычислительные экземпляры, определив детали экземпляра в файле конфигурации и используя такие инструменты, как Terraform, для развертывания ресурсов.

Например, Amazon AWS предоставляет API, которые позволяют пользователям программно взаимодействовать с облачной платформой из командной строки. Это способствует быстрому развертыванию ресурсов за счет исключения ручных процессов и простоев. Проще говоря, IaC выполняет больше работы за короткий промежуток времени.

Микросервисы

В архитектуре микросервисов одно приложение представляет собой интеграцию или объединение различных более мелких слабосвязанных сервисов. Каждая служба работает независимо и взаимодействует с остальными приложениями с помощью API-интерфейсов на основе HTTP. Микросервисы могут быть развернуты как группа сервисов или как отдельный сервис.

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

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

Преимущества модели DevOps

Рассмотрев лучшие практики DevOps, давайте теперь сосредоточимся на преимуществах внедрения модели DevOps.

Повышение эффективности и производительности между командами

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

Снижение вероятности отказа продукта

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

Быстрая доставка программного обеспечения

Развертывание приложений становится более рациональным и намного быстрее благодаря инструментам автоматизации, предоставляемым DevOps (таким как Ansible, Chef и Puppet) и расширенной непрерывной интеграции (CI).

Больше прозрачности продукта

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

Краткое содержание

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

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