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

Введение для начинающих в принципы DevOps


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

Основы

Большинство команд, вероятно, могут разделить своих разработчиков на две основные категории:

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

Проще говоря, DevOps — это объединение этих двух команд (отсюда и название). Это не превратит ваших разработчиков в системных администраторов или наоборот, но должно помочь им работать вместе.

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

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

Чтобы объяснить, мы начнем с фазы мониторинга. Это включает в себя наблюдение за вашими серверами, просмотр аналитики, анализ журналов и выявление проблем с вашей кодовой базой. Хотя большая часть этого связана с кодом, многое также приходится на деловую сторону вещей. Вы эффективно достигаете своих целей? Ваши клиенты довольны? На этом этапе нужно выяснить, что не так, чтобы вы могли поставить правильные цели. Популярные инструменты мониторинга включают Nagios, AWS CloudWatch и аналитическое программное обеспечение, такое как Google Analytics.

Возможно, вы получаете тикет непосредственно от клиента и начинаете с этапа планирования. Здесь вы сядете со своими ведущими разработчиками и обсудите, что нужно сделать, чтобы заполнить заявку. Если вы используете такое программное обеспечение, как Jira, вы, вероятно, разобьёте большой тикет на отдельные истории и задачи, которые будет легче отслеживать и назначать отдельным разработчикам. Если вы планируете спринт кода на следующую неделю или две, вы должны четко изложить свой план, чтобы сократить время, затрачиваемое на повторение кода.

Вместо того, чтобы тестировать и создавать только один раз, когда все будет готово, в среде DevOps каждый разработчик в идеале будет отправлять изменения в систему управления версиями несколько раз в день, когда проблема решена или достигнута незначительная веха. Это позволяет начинать этапы сборки и тестирования раньше и гарантирует, что ни один разработчик не уйдет слишком далеко от HEAD главной системы управления версиями. Этот этап в основном касается правильного управления системой контроля версий, поэтому наличие эффективной службы git, такой как GitHub, Gitlab или BitBucket, имеет решающее значение для обеспечения бесперебойной непрерывной интеграции.

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

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

Конвейеры непрерывной интеграции/непрерывной доставки

Автоматизация и инструменты являются важной частью любой среды DevOps. Возможно, самый важный инструмент — это конвейер непрерывной интеграции/непрерывной доставки (CI/CD). Это автоматизированный процесс, который начинается с исходного кода и обрабатывает процесс сборки, тестирования и развертывания на серверах.

CodePipeline от AWS — хороший пример этого. Всякий раз, когда изменение обнаруживается в системе управления версиями (GitHub, BitBucket или AWS CodeCommit), оно отправляется в AWS CodeBuild для сборки и тестирования. В качестве альтернативы Jenkins довольно часто используется для обработки этой фазы сборки.

Обычно после завершения сборки вы хотите отправить ее в тестовую среду, прежде чем перейти непосредственно к производству. Тем не менее, автоматизация развертывания как на тестовых, так и на рабочих серверах значительно ускорит время итерации. В конвейере AWS этим занимается CodeDeploy. Jenkins также может обрабатывать развертывание, а также программное обеспечение, такое как Ansible.

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