Agile DevOps – гибкая разработка и эксплуатация ПО: Создание информационной панели DevOps

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

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

Пол Дюваль, технический директор, Stelligent Incorporated

Paul DuvallПол Дюваль (Paul Duvall) является техническим директором компании Stelligent Incorporated – консалтинговой фирмы, которая помогает командам разработчиков оптимизировать гибкие методологии разработки программного обеспечения. Он также соавтор книги Continuous Integration: Improving Software Quality and Reducing Risk (Addison-Wesley, 2007 г.). Он принимал участие в создании книг UML 2 Toolkit (Wiley, 2003 г.) и No Fluff Just Stuff Anthology (Pragmatic Programmers, 2007 г.).



23.10.2013

Об этом цикле статей

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

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

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

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

Инструмент CanaryBoard

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

На рис. 1 показана информационная панель, которую я настроил для отображения состояния некоторых индикаторов DevOps для проекта (Environment, Build, Test, Deploy). Посредством исполнения сценариев при каждой очередной регистрации программного кода я могу автоматически обновлять эту информационную панель, чтобы в реальном времени поддерживать состояние каждого индикатора.

Рисунок 1. Информационная панель состояния DevOps на основе CanaryBoard
Screen capture of a dashboard using the open-source CanaryBoard framework. The dashboard shows four DevOps indicators: Environment, Build, Test. and Deploy. The left-most column provides the most current state of these DevOps indicators.

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


Установка информационной панели DevOps

Возможности выбора

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

  • Ruby для доступа к интерфейсу RESTful API инструмента CanaryBoard
  • Linux для среды исполнения CanaryBoard
  • Этот же экземпляр Linux для исполнения скриптов CanaryBoard

Приведенные в статье примеры учитывают специфику вышеописанного набора инструментов; однако вам достаточно немного изменить приведенные в статье инструкции, чтобы привести их в соответствие с собственными требованиями (инфраструктура, операционная система, система упаковки и язык программирования).

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

Шаг 1. Загрузка и запуск сервера

Загрузите сервер Ubuntu 12.04 LTS (соответствующая ссылка на страницу загрузки приведена в разделе Реурсы ). Затем запустите свой экземпляр Ubuntu.

Шаг 2. Установка пакетов

Установите с сервером ssh-соединение и выполните команды, описанные в разделе Installing Rails on Ubuntu 12.04 LTS ознакомительного файла CanaryBoard по адресу https://github.com/stelligent/canaryboard/ (см. раздел Ресурсы). В результате выполнения этих команды будут установлены все необходимые пакеты, включая Ruby Version Manager (RVM), Ruby, Git и Rails (если вы используете систему упаковки, отличную от apt-get — такую как yum или rpm — измените эти команды соответствующим образом).

После установки всех пакетов вы будете готовы к установке, конфигурированию и исполнению панели CanaryBoard.

Шаг 3. Установка, конфигурирование и исполнение CanaryBoard

CanaryBoard — это Rails-приложение, а интерфейс RESTful API был создан компанией Stelligent и базируется на GitHub. Для получения функционирующего экземпляра этого приложения необходимо выполнить несколько простых шагов. В частности, нужно получить новейший экземпляр из репозитария Git, установить Ruby-компоненты, требуемые для CanaryBoard, настроить и наполнить базу данных, выполнить автоматические тесты и запустить Rails-сервер. Эти шаги детально описаны в разделе Installing CanaryBoard ознакомительного файла CanaryBoard (см. раздел Ресурсы).

Запустите веб-сайт для своего приложения CanaryBoard, для чего введите в своем браузереhttp://localhost:3000 (в случае необходимости измените фрагмент localhost на местоположение своего сервера). Убедитесь в том, что порт 3000 доступен.

В результате вы должны увидеть пустую панель состояния Status, как показано на рис. 2.

Рисунок 2. Пустая информационная панель, готовая к конфигурированию
Screen capture of an empty dashboard created with the CanaryBoard framework

Нажмите на ссылку Log in для отображения экрана входа в систему (рис. 3).

Рисунок 3. Экран входа в CanaryBoard
Login screen for the CanaryBoard Rails application.

Введите имя пользователя по умолчанию (admin) и пароль по умолчанию (admin). После входа в систему нажмите на ссылку Profile, а затем нажмите на Edit для изменения пароля по умолчанию.

Для исполнения учебного кода, используемого в этой статье, необходимо получить ключ интерфейса API Key, который задается для входных данных. Вернитесь к своему профилю (http://localhost:3000/profile) и скопируйте значение API Key. На рис. 4 показан пример экрана профиля с ключом API Key.

Рисунок 4. Профиль пользователя для получения API Key
Screen capture of the CanaryBoard user profile page that displays the API key

Программируемое обновление информационной панели DevOps

Мы будем использовать два настраиваемых Ruby-скрипта — set-indicators.rb и update-indicators.rb — для создания индикаторов информационной панели с помощью интерфейса CanaryBoard REST API.

С помощью командной строки Linux-сервера создайте новый Ruby-файл с именем set-indicators.rb. Перейдите к файлу set-indicators.rb, который доступен по гиперссылке в разделе Using CanaryBoard ознакомительного файла CanaryBoard (см. раздел Ресурсы), и вставьте его содержимое в файл set-indicators.rb, который вы только что создали. Если ваш сервер исполняется не на localhost, замените фрагмент localhost значения переменной API_URL на местоположение своего сервера. Измените значение changeme ключа API_KEY на значение, которое вы получили на странице профиля CanaryBoard. Вы будет исполнять скрипт set-indicators.rb позднее.

Универсальные скрипты

Имейте в виду, что — с определенными модификациями — вы сможете использовать скрипты CanaryBoard на практически любой другой платформе, на которой поддерживается исполнение Ruby on Rails.

Теперь с помощью командной строки Linux-сервера создайте новый Ruby-файл с именем update-indicators.rb. Перейдите к файлу update-indicators.rb, который доступен по гиперссылке в разделе Using CanaryBoard ознакомительного файла CanaryBoard (см. раздел Ресурсы), и вставьте его содержимое в файл update-indicators.rb, который вы только что создали. Если ваш сервер исполняется не на localhost, замените фрагмент localhost значения переменной API_URL на местоположение своего сервера. Измените значение changeme ключа API_KEY на значение, которое вы получили на странице профиля CanaryBoard.

Выполните Ruby-программы с помощью следующих команд (предполагается, что ваши файлы set-indicators.rb и update-indicators.rb находятся в корневом каталоге вашего экземпляра).

sudo ruby ~/set-indicators.rb
sudo ruby ~/update-indicators.rb

В своем браузере перейдите по адресу https://localhost:3000/ (или его эквиваленту),чтобы увидеть результаты работы сервисов и события, которые вы создали. При исполнении кода, содержащегося в файле update-indicators.rb, он обновляет все события для сервисов, которые были перечислены в скрипте. Нажатие на любой индикатор в информационной панели позволяет увидеть историю этих событий. Если вы хотите, чтобы этот скрипт работал при каждой регистрации кода, вы можете вызывать его со своего сервера Continuous Integration или запускать его с помощью cron или другой системы планирования. На рис. 5 показан пример результатов сервиса Deploy.

Рисунок 5. Журнал событий для индикатора сервиса Deploy
Screen capture of a CanaryBoard page that shows a history of the events logged for the Deploy indicator. Each row contains a date- and time-stamped description of a event that's related to deployment.

Скрипты set-indicators.rb и update-indicators.rb жестко закодированы для конкретных сервисов, однако при желании вы сможете сделать весь код динамичным.


Заключение

Примите участие

Сообщество по концепции Agile DevOps на сайте developerWorks: новости, обсуждения и обучающие ресурсы, которые помогут вашей организация построить фундамент на основе принципов динамичной разработки.

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

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

Ресурсы

Научиться

  • Оригинал статьи: Agile DevOps: Build a DevOps dashboard.
  • CanaryBoard readme: На этой странице представлены команды и сценарии, необходимые для выполнения описанных в этой статье шагов.
  • Automation for the people: Continuous feedback: (Практическая автоматизация: непрерывная обратная связь); Пол Дюваль (Paul Duvall), IBM developerWorks, ноябрь 2006 г. Немедленное получение обратной связи при каждом изменении исходного кода.
  • Примеры CanaryBoard REST API: Ruby-примеры для обращения к REST API панели CanaryBoard.
  • Раздел по концепции DevOps на сайте developerWorks поможет вашей организация построить фундамент на основе принципов динамичной разработки.
  • Материалы developerWorks в Твиттере.

Получить продукты и технологии

  • CanaryBoard: инструмент с открытым исходным кодом для отображения состояния системы программного обеспечения согласно проектам/сервисам и датам.
  • Ubuntu: Загрузите версию 12.04.2 LTS дистрибутива Ubuntu.
  • IBM Tivoli Provisioning Manager: Tivoli® Provisioning Manager позволяет создавать динамическую инфраструктуру, автоматизируя управление физическими серверами, виртуальными серверами, программным обеспечением, системами хранения данных и сетями.
  • IBM Tivoli System Automation for Multiplatforms: Tivoli System Automation for Multiplatforms обеспечивает высокую готовность и автоматизацию приложений и ИТ-сервисов в масштабе всей организации.

Обсудить

  • Сообщество по концепции DevOps на сайте developerWorks: новости, обсуждения и обучающие ресурсы, которые помогут вашей организация построить фундамент на основе принципов динамичной разработки

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source
ArticleID=949767
ArticleTitle=Agile DevOps – гибкая разработка и эксплуатация ПО: Создание информационной панели DevOps
publish-date=10232013