Close

Инструменты DevOps

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


Открытый пакет инструментов

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

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

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

Подробнее о пакетах инструментов DevOps

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

  • Планируйте
  • Сборка
  • Непрерывная интеграция и развертывание
  • Мониторинг
  • Эксплуатация
  • Непрерывная обратная связь

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

Планируйте


Логотип Jira Software Логотип Confluence Логотип Slack

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

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

Позаботьтесь об интеграции и флажках возможностей. Чтобы ни входило в область проекта или возможности, ее необходимо преобразовать в пользовательские истории в бэклоге разработки. Флажки возможностей — это операторы «если» в базе кода; они позволяют команде включать и выключать возможности.

Подробнее об этом этапе читайте в публикации от менеджеров по продукту Atlassian, посвященной ведению бэклога и расстановке приоритетов.

Plan


Jira Software logo Confluence logo Slack logo

Taking a page out of the agile handbook, we recommend tools that allow development and operations teams to break work down into smaller, manageable chunks for quicker deployments. This allows you to learn from users sooner and helps with optimizing a product based on the feedback. Look for tools that provide sprint planning, issue tracking, and allow collaboration, such as Jira. 

Another great practice is continuously gathering user feedback, organizing it into actionable inputs, and prioritizing those actions for your development teams. Look for tools that encourage “asynchronous brainstorming” (if you will). It’s important that everyone can share and comment on anything: ideas, strategies, goals, requirements, roadmaps and documentation.

And don’t forget about integrations and feature flags. Wherever you decide to scope your feature or project, it should be converted into user stories in your development backlog. Feature flags are if-statements in the code base that enable teams to turn features on and off.

For more on this phase, check out this post from Atlassian product managers about backlog grooming and prioritization.

Сборка


Логотип Kubernetes Логотип Docker

Среды разработки, идентичные рабочей среде

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

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

Логотип Ansible Логотип Chef Логотип Docker Логотип Puppet Логотип Terraform

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

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

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

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

Логотип Bitbucket Логотип Github Логотип GitLab

Управление версиями и совместная работа над кодом

Иметь контроль над исходным кодом очень важно. Инструменты управления исходным кодом позволяют хранить код в разных цепочках. Так вы сможете видеть все изменения и без труда работать над ними всей командой. Вместо длительных собраний по подтверждению изменений перед развертыванием в рабочей среде проводите проверки в форме оценки коллег с помощью запросов pull. Это повысит скорость работы и качество кода.

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

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

Непрерывная интеграция и доставка


Логотип Jenkins Логотип AWS Логотип Bitbucket Логотип CircleCIЛоготип Snyk Логотип SonarSource

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

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

Проверка кода с помощью запросов pull — очень популярный метод, который требует использования веток. Рабочий процесс DevOps North Star позволяет сократить размер и количество веток и обеспечить тщательное тестирование без ущерба для скорости разработки.

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

Узнайте, как автоматизировать код с помощью Bitbucket Pipelines, от этапа тестирования до выпуска в рабочую среду.

Логотип mabl Логотип Saucelabs Логотип Xray Логотип Zephyr

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

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

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

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

Логотип Jira Software

Дашбоарды развертывания

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

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

Логотип Bitbucket Логотип Zephyr

Автоматическое развертывание

Не существует волшебного рецепта автоматического развертывания, который будет актуален для всех приложений и ИТ-сред. Что реально, так это преобразование перечня процедур в cmd-скрипт с помощью Ruby или Вash. Очень важны правильные методики разработки. Используйте переменные вместо имен хостов: поддерживать уникальные скрипты или код для каждой среды нерационально и довольно бессмысленно. Чтобы избежать дублирования кода, создавайте служебные методы или скрипты. Не забудьте проверить скрипты на работоспособность.

Сначала попробуйте автоматизировать развертывание в среде самого низкого уровня (там вы будете применять автоматизацию чаще всего). Затем распространите эту практику на весь процесс, вплоть до рабочей среды. По крайней мере вы сможете выявить различия между средами и сформируете список задач, направленных на их стандартизацию. А еще стандартизация развертываний посредством автоматизации сокращает число отклонений сред на серверах.

Test


Automated testing

               

Testing tools span many needs and capabilities, including exploratory testing, test management, and orchestration. However, for the DevOps toolchain, automation is an essential function. Automated testing pays off over time by speeding up your development and testing cycles in the long run. And in a DevOps environment, it’s important for another reason: awareness.

Test automation can increase software quality and reduce risk by doing it early and often. Development teams can execute automated tests repeatedly, covering several areas such as UI testing, security scanning, or load testing. They also yield reports and trend graphs that help identify risky areas.

Risk is a fact of life in software development, but you can’t mitigate what you can’t anticipate. Do your operations team a favor and let them peek under the hood with you. Look for tools that support wallboards, and let everyone involved in the project comment on specific build or deployment results. Extra points for tools that make it easy to get Operations involved in blitz testing and exploratory testing.

Deploy


Deployment dashboards

Jira Software logo 

One of the most stressful parts of shipping software is getting all the change, test, and deployment information for an upcoming release into one place. The last thing anyone needs before a release is a long meeting to report on status. This is where release dashboards come in.

Look for tools with a single dashboard integrated with your code repository and deployment tools. Find something that gives you full visibility on branches, builds, pull requests, and deployment warnings in one place.

Automated deployment

Bitbucket logo Zephyr logo

There’s no magic recipe for automated deployment that will work for every application and IT environment. But converting operations’ runbook into a cmd-executable script using Ruby or bash is a common way to start. Good engineering practices are vital. Use variables to factor out host names – maintaining unique scripts or code for each environment is no fun (and misses half the point anyway). Create utility methods or scripts to avoid duplicated code. And peer review your scripts to sanity-check them.

Try automating deployments to your lowest-level environment first, where you’ll be using that automation most frequently, then replicate that all the way up to production. If nothing else, this exercise highlights the differences between your environments and generates a list of tasks for standardizing them. As a bonus, standardizing deploys through automation reduces “server drift” within and between environments.

Эксплуатация


Логотип AppDynamics Логотип Datadog Логотип Slack Логотип SplunkЛоготип New Relic Логотип Opsgenie Логотип Pingdom Логотип Nagios Логотип Dynatrace Логотип Hosted Graphite Логотип Sumo Logic

Мониторинг производительности приложений и серверов

Два типа мониторинга требуют автоматизации: мониторинг серверов и мониторинг производительности приложений.

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

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

Логотип Jira Service Management Логотип Jira SoftwareЛоготип Opsgenie Логотип Statuspage

Отслеживание инцидентов, изменений и проблем

Для развития взаимодействия между командами DevOps необходимо, чтобы все сотрудники имели единое и целостное представление о текущей работе. Что происходит при возникновении инцидентов? Выполняется ли их привязка к проблемам программного обеспечения и отслеживаются ли они? Выполняется ли привязка новых изменений к релизам?

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

Observe


Application and server performance monitoring

AppDynamics logo DataDog logo Slack logo Splunk logoNew Relic logo Opsgenie logo Pingdom logo Nagios logo Dynatrace logo Hosted Graphite logo Sumo Logic logo

There are two types of monitoring that should be automated: server monitoring and application performance monitoring.

Manually “topping” a box or hitting your API with a test is fine for spot-checking. But to understand trends and the overall health of your application (and environments), you need software that is listening and recording data 24/7. Ongoing observability is a key capability for successful DevOps teams.

Look for tools that integrate with your group chat client so alerts go straight to your team’s room, or a dedicated room for incidents.

Непрерывная обратная связь


Логотип GetFeedback Логотип Slack Логотип Jira Service Management Логотип Pendo

Если вы делаете правильные шаги, клиенты уже сообщают вам об этом — нужно только прислушаться. Непрерывная обратная связь — это культура и процессы регулярного получения обратной связи, а также инструменты извлечения из нее аналитических данных. Методики непрерывной обратной связи включают сбор и анализ данных NPS, опросов о причинах оттока клиентов, отчетов о багах, заявок в службу поддержки и даже твитов. Согласно принципам культуры DevOps каждый участник команды по продукту должен иметь доступ к комментариям пользователей, поскольку они помогают руководить всем процессом: от планирования релизов до сеансов глубокого тестирования.

Найдите приложения для интеграции чата с вашей любимой платформой для опросов и получайте обратную связь в виде индекса потребительской лояльности (NPS). Для получения обратной связи в режиме реального времени можно выполнить интеграцию чата с Twitter и (или) Facebook. Если вам необходим обширный мониторинг обратной связи из социальных сетей, стоит использовать платформу для управления социальными сетями, которая позволяет формировать статистические отчеты.

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

Заключение


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

Готовы начать? Попробуйте решение Atlassian DevOps бесплатно.


Рекомендуемые статьи

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

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Образовательные программы DevOps

Рисунок схемы

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up