Visitors have accessed this post 8033 times.

Туториал по DevOps для начинающих

5
0
8033
22 января 2021 10:49
Автор: Rebrain Me
DevOps

Visitors have accessed this post 8033 times.

Перевод статьи — https://www.guru99.com/devops-tutorial.html

Что такое DevOps?

DevOps — это культура, которая способствует развитию сотрудничества между командой разработчиков и операционным отделом для более быстрого и автоматизированного развертывания кода в производстве. Слово «DevOps» представляет собой сочетание двух слов «разработка» (development) и «операции» (operation).

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

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

Зачем нужен DevOps?

  • До появления DevOps команды разработчиков и внедрения работали изолированно друг от друга.
  • Тестирование и развертывание проводились отдельно после проектирования и сборки. Следовательно, на это уходило больше времени, чем на сам цикл разработки.
  • Без DevOps разработчики команды тратят большую часть своего времени на тестирование, развертывание и проектирование вместо того, чтобы разрабатывать проект.
  • Ручное развертывание кода чревато ошибками из-за человеческого фактора.
  • У команды разработчиков и операционного отдела разные и несогласованные дедлайны, что приводит к задержкам.

Заинтересованные со стороны бизнеса требуют ускорить процесс поставки программного обеспечения. Согласно исследованию Forrester Consulting, только 17% команд могут поставить программное обеспечение оперативно и в срок. Это еще раз доказывает актуальность этой проблемы.

Отличие DevOps от традиционного подхода

Давайте сравним традиционную waterfall модель разработки с DevOps, чтобы понять, как изменился мир IT с внедрением DevOps.

Предположим, что приложение будет запущено через 2 недели, а код выполнен на 80%. И еще предположим, что приложение запустилось, а покупка серверов для поставки кода только начинается.

Как было раньше Как сейчас с DevOps
После размещения заказа на новые серверы команда разработчиков работает над тестированием. Команда внедрения работает над документацией, необходимой компании для развертывания инфраструктуры. После размещения заказа на новые серверы, команды разработчиков и внедрения вместе работают над оформлением документов для настройки новых серверов. Это улучшает прозрачность требований к инфраструктуре.
Прогнозы, касающиеся аварийного переключения, избыточности, расположения дата-центров и требований к хранилищу, не точны, поскольку от разработчиков, разбирающихся в приложении, не поступает никаких данных. Прогнозы точны.
У отдела внедрения нет информации о ходе работы команды разработчиков над проектом. План мониторинга они составляют на свое усмотрение. С внедрением DevOps, отдел внедрения полностью осведомлен о работе разработчиков. Они взаимодействуют и совместно составляют план мониторинга, который отвечает потребностям IТ и бизнеса. Они также используют продвинутые инструменты мониторинга производительности приложений (APM).
Перед релизом нагрузочное тестирование может привести к выходу из строя приложения. Из-за этого релиз задерживается. Нагрузочное тестирование перед релизом приводит лишь к небольшому замедлению приложения. Тем временем команда разработчиков оперативно исправляет все недочеты, и приложение выпускается вовремя.

Почему используют DevOps?

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

Другие важные причины:

  1. Прогнозирование: DevOps предлагает значительно более низкий процент неработающих новых релизов.
  2. Воспроизводимость: возможность сделать откат до ранних версий в любое время.
  3. Поддержка: Легкий процесс восстановления в случае сбоя новой версии или прекращение работы текущей системы.
  4. Срок внедрения: DevOps сокращает время выхода на рынок до 50%, благодаря упрощенной поставке программного обеспечения. Это особенно актуально для цифровых и мобильных приложений.
  5. Лучшее качество: DevOps помогает команде улучшить качество разработки приложений, поскольку он работает над проблемами инфраструктуры.
  6. Меньше риска: DevOps включает аспекты безопасности в жизненный цикл поставки программного обеспечения. Таким образом, уменьшается количество дефектов в течение жизненного цикла.
  7. Устойчивость: Операционное состояние системы программного обеспечения более стабильно и безопасно. Также ведется аудит любых изменений.
  8. Экономия затрат: DevOps сокращает затраты на разработку программного обеспечения, а это именно то, чего добивается руководство любой IT-компании.
  9. Разбивка большой кодовой базы на маленькие кусочки: DevOps основан на методе гибкого программирования. Следовательно, это позволяет разбивать большие кодовые базы на более мелкие и управляемые части.

Когда необходимо внедрять DevOps?

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

Когда не стоит внедрять DevOps?

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

Жизненный цикл DevOps

DevOps — это интеграция между разработкой и внедрением. Понимание DevOps невозможно без знания жизненного цикла DevOps.

Ниже приведена краткая информация о непрерывном жизненном цикле DevOps.

  1. Разработка

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

  1. Тестирование

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

  1. Интеграция

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

  1. Развертывание

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

  1. Мониторинг

На этом этапе отдел внедрения будет решать вопросы, связанные с некорректным поведением системы или ошибками, обнаруженными в производственном процессе.

Рабочий процесс DevOps

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

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

Чем DevOps отличается от Agile? DevOps vs Agile

На схеме вы видите все заинтересованные стороны и коммуникационную цепочку в типичном IТ-процессе.

Agile устраняет пробелы в коммуникации между клиентами и разработчиками.

DevOps устраняет пробелы в коммуникации между разработчиками и отделом внедрения.

Различия между DevOps и Agile

Agile DevOps
Основной акцент идет на преодоление барьеров между разработчиками и руководством. DevOps — это совместная работа команды разработчиков и внедрения.
Устраняет пробелы между требованиями заказчика и командами разработчиков. Устраняет пробелы между командами разработки и внедрения.
Больше внимания уделяется функциональной и не функциональной готовности Ориентирован на операционную и бизнесовую готовность.
Быстрая разработка ПО в основном обусловлена тем, как компания продумывает процесс разработки. DevOps делает упор на развертывание программного обеспечения самыми надежными и безопасными способами, которые не всегда являются самыми быстрыми.
Agile делает акцент на обучении всех членов команды. Поэтому, когда возникают проблемы, можно попросить о помощи любого разработчика, даже если тимлида нет на месте. DevOps придерживается принципа «разделяй и властвуй», разделяя навыки между командами разработчиков и внедрения. Он также поддерживает непрерывную коммуникацию.
В Agile дедлайны короче (менее месяца), и за этот период должно быть разработано и выпущено несколько функций. DevOps стремится к консолидированным срокам и контрольным показателям при релизе масштабных проектов, а не к разработке быстрых и мелких проектов.

Принципы DevOps

Вот шесть принципов, которые необходимы для внедрения DevOps:

  1. Ориентация на клиента: команда DevOps должна ориентироваться на клиента, чтобы он постоянно инвестировал в продукты и услуги.
  2. Непрерывная ответственность: команда разработчиков DevOps должна обеспечивать поддержку производительности до тех пор, пока существует проект. Это повышает уровень ответственности и качество разработанных продуктов.
  3. Непрерывное совершенствование: культура DevOps нацелена на постоянное улучшение с целью минимизации потерь.
  4. Полная автоматизация: автоматизация является жизненно важным принципом в DevOps. Это касается не только разработки программного обеспечения, но и всей инфраструктуры.
  5. Сплоченность команды: в культуре DevOps роль дизайнера, разработчика и тестера уже определена. Все, что им нужно делать — это работать сплоченно одной командой.
  6. Мониторинг и тестирование всех процессов: для команды DevOps очень важны процедуры мониторинга и тестирования.

Кто такой инженер DevOps?

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

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

Инженер DevOps будет работать с персоналом команды разработчиков, решать вопросы, связанные с кодом и скриптами, которые важны для соединения элементов кода.

Роли, обязанности и навыки инженера DevOps

Инженеры DevOps несут ответственность за производство и обслуживание платформы для ПО.

Ниже приведены роли, обязанности и навыки инженера DevOps:

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

Инструменты автоматизации DevOps

Крайне важно автоматизировать и настроить все процессы тестирования, чтобы сделать процесс быстрее и эффективнее. Этот процесс известен как автоматизация DevOps.

Трудности, с которыми сталкивается команда DevOps, поддерживающая огромную IТ-инфраструктуру, можно кратко разделить на шесть категорий.

  1. Автоматизация инфраструктуры
  2. Управление конфигурацией
  3. Автоматизация развертывания
  4. Управление производительностью
  5. Управление логами
  6. Мониторинг

Давайте рассмотрим несколько инструментов в каждой из этих категорий и то, как они решают задачи.

Автоматизация инфраструктуры

Amazon Web Services (AWS): поскольку это облачный сервис, вам не нужно физически присутствовать в дата-центре. Кроме того, эти процессы легко масштабируются по требованию. Отсутствуют предварительные затраты на оборудование. Есть возможность автоматического выделения большего количества серверов на основе трафика.

Управление конфигурацией

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

Автоматизация развертывания

Jenkins: Этот инструмент облегчает непрерывную интеграцию и тестирование. Jenkins помогает легче интегрировать изменения проекта благодаря быстрому обнаружению проблем после развертывания.

Управление логами

Splunk: Этот инструмент решает такие проблемы, как объединение, хранение и анализ всех логов в одном месте.

Управление производительностью

App Dynamic: Это инструмент мониторит производительность в режиме реального времени. Данные, собранные с помощью App Dynamic, помогают разработчикам проводить отладку при возникновении проблем.

Мониторинг

Nagios: Nagios — один из инструментов, который помогает командам DevOps находить и исправлять проблемы.

Больше информации про инструменты DevOps можно найти в этой статье.

Будущее DevOps

Очень многое может измениться в мире DevOps в будущем. Самые вероятные изменения следующие:

  • Ускорение процессов разработки с нескольких лет до нескольких недель или месяцев.
  • Скоро мы увидим, что инженеры DevOps имеют больший доступ и контроль над конечным пользователем, чем кто-либо другой в компании.
  • DevOps становится ценным навыком для IТ-специалистов.
  • Компаниям важно развиваться. Однако внедрение концепции DevOps займет 5-10 лет.

Итоги

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

От редакции

Если вам интересно посещать бесплатные онлайн-мероприятия по DevOps, Kubernetes, Docker, GitlabCI и др. и задавать вопросы в режиме реального времени, подключайтесь к каналу DevOps by REBRAIN

*Анонсы мероприятий каждую неделю

Практикумы для специалистов по инфраструктуре и разработчиков — https://rebrainme.com.

Наш Youtube-канал — https://www.youtube.com/channel/UC6uIx64IFKMVmj12gKtSgBQ.

Агентство Fevlake, проектируем и поддерживаем IT-инфраструктуры с 2012 года — https://fevlake.com.

Комментарии (3)
Введено символов из возможных
Не отвечать

Вам также может понравится

Устанавливаем Mastodon
array(1) { [0]=> object(WP_Term)#11537 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор — Юрий Изоркин
Что такое Mastodon, и зачем он нужен
Mastodon — некоммерческая децентрализованная социальная сеть, которая предоставляет функции микроблоггинга, наподобие Twitter. Краткие сообщения, которые публикуют пользователи, здесь называются «гудками» (англ toots). Ограничением является длина поста в 500 символов, но мне хотелось бы,...

1
0
19 марта 2021
Как посмотреть открытые порты Linux
array(1) { [0]=> object(WP_Term)#976 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

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

В этом туториале мы покажем, как...

10
0
28 мая 2020
Устанавливаем дистрибутив NixOS
array(1) { [0]=> object(WP_Term)#11537 (16) { ["term_id"]=> int(6) ["name"]=> string(5) "Linux" ["slug"]=> string(5) "linux" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(28) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(6) ["category_count"]=> int(28) ["category_description"]=> string(0) "" ["cat_name"]=> string(5) "Linux" ["category_nicename"]=> string(5) "linux" ["category_parent"]=> int(0) } } Linux

Автор - Юрий Изоркин

Краткая справка из Wikipedia

NixOS — дистрибутив Linux, созданный поверх менеджера пакетов Nix. Он использует декларативную конфигурацию и позволяет надежно обновлять систему. Предлагаются два основных направления: текущий стабильный выпуск и Unstable после последней разработки. 

Любая ОС Linux после установки требует...

6
2
21 августа 2020