Содержание


Знакомство со службами Bluemix и DevOps: Часть 3. Планирование, отслеживание и применение новых служб Bluemix

Comments

Эта серия руководств из трех частей демонстрирует, как с помощью служб IBM DevOps Services и IBM Bluemix можно легко планировать, писать и развертывать приложения. Из первой части вы узнали, как развернуть простое приложение и внести в него изменения. Из Части 2 – как развернуть приложение, использующее службу Bluemix. Третья часть этого руководства учит использовать средства планирования IBM DevOps Services для планирования и отслеживания своего приложения, а также добавлять к нему новые службы Bluemix с помощью дополнительного кода, задействующего эти службы.

Наградой – в дополнение ко всем тем знаниям, которые вы получите, работая над примерами из этой серии, – станет приложение, выясняющее цены на товары в интернет-магазинах. Так что вам больше не придется шарить по всему Интернету, чтобы узнать, есть ли в продаже нужная вам вещь! (Вы, наверное, уже догадались, что я обожаю шопинг?)

Содержание третьей части

В части 3 показано, как:

  • использовать возможности DevOps Services для планирования и отслеживания приложений;
  • добавить в приложение новую службу Bluemix;
  • написать код, задействующий службу Bluemix.

Сведения о приложении

Мы начнем с приложений Lauren's Lovely Landscapes и the Fabulous Price Finder, построенных соответственно в Части 1 и Части 2. И дополним Fabulous Price Finder возможностью отправки текстовых сообщений.

Скриншот приложения Fabulous Price Finder
Скриншот приложения Fabulous Price Finder

Что понадобится для работы

Часть 3 – продолжение частей 1 и 2. Если вы не выполнили задания Части 1 и Части 2, сделайте это, а затем вернитесь сюда.

Прежде чем приступить к работе, нужно зарегистрироваться в Bluemix и DevOps Services. Также понадобится один из следующих браузеров:

  • Firefox 15 или новее
  • Chrome 21 или новее
  • Internet Explorer 10 или новее
  • Safari 7 или новее

Шаг 1. Планирование новой функции для Fabulous Price Finder

До сих пор мы использовали готовый код и еще не создали ничего нового. Пришло время исправить это!

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

Открытие бета-версии Track & Plan

  1. Откройте проект Fabulous Price Finder, созданный на предыдущем занятии. Для этого откройте DevOps Services, войдите, если вы этого еще не сделали, и выберите свой проект на странице My Stuff.
  2. Щелкните на стрелке вниз кнопки TRACK & PLAN в правом верхнем углу.
  3. Щелкните на ссылке Try the new Track & Plan Beta.
  4. На открывшейся странице установите флажок Try the new Track & Plan Beta и нажмите кнопку SAVE.
  5. Щелкните на ссылке TRACK & PLAN в правом верхнем углу. Откроется бета-версия продукта Track & Plan. Здесь можно организовать свои идеи.

Создание задач

  1. На левой панели выберите Backlog (список задач).
  2. На правой введите в поле Create a work item… следующий текст: As a shopper, I want a text message sent to me with the price of each item so that I don't have to check the website to view the prices. (Как покупатель, я хочу чтобы мне приходили текстовые сообщения с ценой каждого товара, так чтобы не приходилось посещать веб-сайт, чтобы узнать цену.)
  3. Инструмент автоматически определит тип задачи — story - и настроит ее для вас.
  4. На нижней панели инструментов нажмите на значок Owned By и выберите свое имя пользователя.
  5. Нажмите кнопку Save.
  6. Повторите шаги 2-5, чтобы создать следующие задачи:
  • As a shopper, I want to organize my items by store so that Ionly have to input the field ID once per store instead of every item. (Как покупатель, я хочу организовать свои элементы по магазинам, чтобы для каждого магазина достаточно было ввести идентификатор поля один раз, а не вводить его для каждого товара.)
  • As a shopper, I want to see a graph of the price of the items I'm watching over time so I can judge if it's a good time to buy the items. (Как покупатель, я хочу видеть график изменения цен на товары, за которыми я слежу, со временем, чтобы можно было судить, стоит ли покупать их сейчас).
  • As a shopper, I want the prices to be retrieved automaticallyfor me on a daily basis so I don't have to log in manually and click Get Prices. (Как покупатель, я хочу, чтобы цены проверялись автоматически каждый день, чтобы мне не приходилось авторизовываться и нажимать кнопку Get Prices вручную.)
  • As a shopper, I want the prices to be texted to me only when the price has changed so I'm not getting inundated with text messages. (Как покупатель, я хочу, чтобы цены присылались мне только при их изменении, чтобы не утонуть в текстовых сообщениях).

Планирование работы

Заполнив список задач, можно приступить к планированию своего первого проекта.

  1. Нажмите кнопку Sprint Planning на левой панели. Спринт – это интервал времени. Распределите свои задачи по спринтам.
  2. Нажмите кнопку Add Sprints… на правой панели.
  3. Расположите спринты так, чтобы их было по крайней мере два, и нажмите кнопку ОК.
  4. В разделе Backlog расположите свои задачи по порядку, перетаскивая их. Сделайте элемент As a shopper, I want a text message sent to me with the price of each item so that I don't have to check the website to view the prices. верхним в списке, а элемент As a shopper, I want the prices to be retrieved automatically for me on a daily basis so I don't have to log in manually and click Get Prices. – вторым.
  5. Предположим, что у вас есть время на решение одной задачи за спринт. Перетащите верхний элемент списка в спринт 1 (справа), а следующий – в спринт 2 (еще правее).

Отслеживание своей работы

Спринт 1 начался. Укажите, что вы начали работу над первой задачей, пометив ее меткой In Progress.

  1. В разделе Sprint 1 правой панели щелкните на значке Status: New, чтобы запланировать задачу для спринта 1.
  2. В диалоговом окне Status нажмите кнопку Start Working.
  3. Запомните идентификатор своей задачи - он понадобится позднее.

Шаг 2. Реализация функции

Теперь решим задачу As a shopper, I want a text message sent to me with the price of each item so that I don't have to check the website to view the prices. Реализация функции отправки текстовых сообщений может показаться трудноватой. К счастью, Bluemix предоставляет службу Twilio, которую можно использовать для управления отправкой текстовых сообщений, так что для реализации этой функции достаточно всего девяти строк кода!

Регистрация в службе Twilio

Если у вас еще нет учетной записи Twilio, вам придется зарегистрироваться. Кроме того, вам понадобятся Twilio AccountSID, Auth Token и номер телефона.

  1. Перейдите на страницу https://www.twilio.com и зарегистрируйтесь.
  2. Следуйте инструкциям на экране, чтобы проверить свою учетную запись.
  3. Запомните свой номер телефона Twilio.
  4. Пройдя проверку подлинности и просмотрев свою учетную запись, щелкните на идентификаторе в правом верхнем углу и выберите Account Settings.
  5. В разделе API Credentials запомните свои AccountSID и AuthToken. (Лучше пока оставить эту страницу открытой, чтобы их можно было легко копировать).

Добавление службы Twilio в приложение

Начнем с добавления службы Bluemix Twilio в свое приложение.

  1. Щелкните на ссылке EDIT CODE в правом верхнем углу страницы DevOps Services.
  2. Прокрутите правую панель до таблицы Manual Deployment Information.
  3. Выберите строку, соответствующую своему развернутому приложению.
  4. Щелкните на ссылке Manage. Откроется страница Bluemix с вашим приложением.
  5. Выберите ADD A SERVICE.
  6. Найдите службу Twilio.

    Совет: ищите в разделе Mobile. Каталог постоянно пополняется новыми службами!

  7. Выберите службу Twilio.
  8. В поля Account SID и Auth Token вставьте свои значения Twilio AccountSID и AuthToken со страницы Twilio Account Settings.
  9. Нажмите кнопку CREATE.
  10. При появлении запроса воссоздайте свое приложение, нажав кнопку ОК.
  11. Зеленая точка в разделе APP HEALTH означает, что ваше приложение успешно воссоздано и работает.

Добавление кода, использующего службу Twilio

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

Добавление Twilio в файл requirements.txt

Вашему приложению нужен модуль Twilio, поэтому его следует добавить в файл requirements.txt.

  1. Откройте файл requirements.txt в веб-IDE.
  2. Добавьте новую строку в конец файла и наберите twilio.
  3. Выберите File > Save.

Подключение к службе Twilio

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

  1. Откройте файл wsgi.py в веб-IDE.
  2. В разделе Imports после строки 55 добавьте следующую строку.
     from twilio.rest import TwilioRestClient
  3. В цикле for, который начинается после строки 62, добавьте следующие две строки.

    Примечание. Отступ перед этими двумя строками (пробелы и символы табуляции) должен быть таким же, как у оператора if над ними.

    if decoded_config[key][0]['name'].startswith('Twilio'):
        twilio_creds = decoded_config[key][0]['credentials']
  4. Теперь ваши учетные данные Twilio хранятся в twilio_creds.
  5. Под только что добавленным кодом (вне цикла for) добавьте следующие три строки.
    twilio_authToken = twilio_creds['authToken']
    twilio_accountSID = twilio_creds['accountSID']
    twilioClient = TwilioRestClient(twilio_accountSID, twilio_authToken)
  6. Теперь ваш код должен выглядеть так же, как следующий листинг.
    for key, value in decoded_config.iteritems():
    	if key.startswith('mongo'): 
    		mongo_creds = decoded_config[key][0]['credentials'] 
    	if decoded_config[key][0]['name'].startswith('Twilio'):
    		twilio_creds = decoded_config[key][0]['credentials']
    
    twilio_authToken = 
    twilio_creds['authToken']twilio_accountSID = 
    twilio_creds['accountSID']twilioClient = 
    TwilioRestClient(twilio_accountSID, twilio_authToken)
  7. Сохраните изменения, выбрав File > Save.

Теперь можно подключаться к службе Twilio с помощью только что созданных переменных twilio*.

Добавление кода для отправки текстового сообщения

Итак, начинается самое интересное! Пришло время писать код!

  1. Продолжая работать в файле wsgi.py, создайте после строки 79 новую функцию, которая отправляет текстовое сообщение:
    def sendTextWithMessage(message):
        message = twilioClient.messages.create(to="+15555555555", 
        from_="+15555555555", body=message)
  2. Замените номер to номером мобильного телефона, на который вы хотите отправлять текстовые сообщения (не забудьте код страны).
  3. Замените номер from своим номером телефона Twilio (не забудьте код страны).
  4. В функции getCurrentPrice внутри оператора if, который проверяет, что значение цены не равно None, добавьте следующую строку кода.
    sendTextWithMessage("The current price of %s is %s" % (item["name"], price))
  5. Сохраните изменения, выбрав File > Save.

Вот и всё! Вы реализовали функцию, написав всего девять строк кода!

Шаг 3. Развертывание и тестирование функции

Теперь нужно развернуть приложение в Bluemix, чтобы проверить его.

  1. Нажмите кнопку DEPLOY.
  2. Когда приложение развернется, нажмите на ссылку в зеленой полосе, чтобы открыть страницу корневого каталога.
  3. На странице корневого каталога прокрутите правую панель до раздела Deployment Information.
  4. Нажмите FabulousPriceFinder, чтобы открыть свое приложение.
  5. Нажмите кнопку Get Prices.
  6. Прочтите текстовое сообщение на своем телефоне!

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

Шаг 4. Перенос функции в репозиторий

Теперь, когда ваша функция протестирована, можно перенести изменения в репозиторий Git. Для отслеживания функции свяжите изменение с отслеживаемой задачей.

  1. На левой панели инструментов щелкните на значке Git Repository.
  2. В разделе Working Directory Changes введите в поле комментарий, подобный следующему, заменив 20 идентификатором своей задачи: Changes to implement the text messaging feature as described inwork item 20. (Изменения для реализации функции отправки текстовых сообщений, как описано в задаче 20.)
  3. Выбирая каждое изменение в разделе Changed Files, нажимайте кнопку COMMIT 3 File(s).
  4. В разделе OUTGOING нажмите кнопку PUSH.
  5. Если вам предложат ввести свои учетные данные, сделайте это и нажмите кнопку ОК.

Шаг 5. Выполнение функции

Чтобы указать, что вы закончили функцию, пометьте соответствующую задачу как выполненную.

  1. Щелкните на ссылке TRACK & PLAN в правом верхнем углу веб-IDE.
  2. На правой панели щелкните на стрелке вниз рядом с Open и выберите In progress.
  3. На правой панели найдите задачу, относящуюся к функции текстовых сообщений, и нажмите кнопку Status: In Progress.
  4. Нажмите кнопку Set Done.
  5. На правой панели щелкните на стрелке вниз рядом с In Progress и выберите Resolved. Обратите внимание, что задача теперь помечена как выполненная.

Шаг 6. Отслеживание

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

  1. Если в данный момент вы не просматриваете свои решенные задачи, выберите представление Resolved на правой панели.
  2. Щелкните на текстовом описании задачи, связанной с функцией текстовых сообщений, чтобы открыть ее.
  3. В задаче перейдите на вкладку Links.
  4. В разделе Links обратите внимание, что была автоматически создана ссылка. Щелкните на ней правой кнопкой мыши и выберите свойство, чтобы открыть эту ссылку в новой вкладке или в новом окне. Откроется журнал Git.
  5. Обратите внимание, что у изменения, зафиксированного в git, есть краткое описание и оно связано с задачами.
  6. Нажмите кнопку GIT LOG на левой навигационной панели, чтобы увидеть список всех своих изменений, зафиксированных в git.

Хотите пойти дальше?

Желаете продолжить? Вот несколько вещей, которые стоит освоить.

  • Предложите другу присоединиться к проекту. Перейдите на главную страницу своего проекта, нажмите кнопку Members и пригласите друга.
  • Включите автоматическое развертывание, чтобы процесс развертывания в Bluemix запускался всякий раз, когда вы или ваш или товарищ по команде передает изменения в репозиторий. Быстрое создание приложения Node.js с помощью шаблона Bluemix и DevOps Services – серия видеоруководств, в которых объясняется, как включить автоматическое развертывание.
  • Решите некоторые из задач, которые вы создали.

Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления
ArticleID=993078
ArticleTitle=Знакомство со службами Bluemix и DevOps: Часть 3. Планирование, отслеживание и применение новых служб Bluemix
publish-date=12172014