Тестируем облачную платформу IBM на примере чата

от автора


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


Предыстория

Ранее мой опыт работы с платформой был близок к нулю, поэтому чтобы разобраться в огромном количестве сервисов платформы, я снова обратился к своему знакомому из IBM. Мне казалось очевидным использовать сервис Message Hub, но в итоге оказалось, что для решения нашей задачи лучше подойдет MQ Light. Основные причины:

  • тариф в бесплатные 10 тысяч сообщений в месяц
  • хорошая масштабируемость
  • простой в использовании API

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

Итак, перейдем в Dashboard IBM Bluemix.

Регистрируем облачный сервис

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

Заходим в панель, нажимаем “Use services or APIs”:

Ищем MQ Light:

И берём один такой себе.

Возвращаемся в Dashboard, выбираем MQ Light – Service Credentials. Создаём себе данные для авторизации наших приложений.

Получаем:

Проверьте заранее наличие “;” в логине и пароле. Компилятору оно не очень понравится, лучше сгенерировать новую пару.

Создаём десктопное приложение

Поскольку нам нужно быстро создать рабочее приложение – используем Node.JS и устанавливаем библиотеку MQ Light.

npm install mqlight

… и открываем нашу среду разработки. Первым делом необходимо подключить библиотеку:

var mqlight = require('mqlight');

Теперь, чтобы создать реалтайм чат, нам придётся работать с вводом данных из консоли. Для этого отлично подойдёт стандартная библиотека из набора Node.JS – readline.

var readline = require('readline');

Добавим немного переменных для MQ Light.

var TOPIC = "mqlight/simplechat";  var SHARE_ID = ""; var opts = {   service: 'connectionLookupURI', //Данные из предыдущего этапа   user: 'username',   password: 'password' }; 

И не забываем про ввод/вывод:

var rl = readline.createInterface(process.stdin, process.stdout);

Далее, при запуске спрашиваем ник и подписываемся на канал с ником в share id:

Скрытый текст

mqlightClient.on('started', function() {   rl.question("Please, choose your nickname: ", function(result) {     SHARE_ID = result;     console.log("Welcome,", SHARE_ID, "!");     rl.setPrompt(SHARE_ID + '> ');              mqlightClient.subscribe(TOPIC, SHARE_ID,      { credit : 5,       autoConfirm : true,       qos : 0},      function(err) {       if (err) console.error("Failed to subscribe: " + err);        else {         console.log("Subscribed to " + TOPIC);         rl.prompt();       }     });   }); }); 

И обрабатываем получение сообщения (событие ‘message’ в MQ Light) и отправку сообщения (ловим событие ‘line’ в readline):

Скрытый текст

mqlightClient.on('message', function(data, delivery) {   data = JSON.parse(data);   if (data.id != SHARE_ID) {     readline.clearLine(process.stdout, 0);     rl.setPrompt(data.id + '> ');     rl.prompt();     console.log(data.message + '                 ');     rl.setPrompt(SHARE_ID + '> ');     rl.prompt();   } });  rl.on('line', function(message) {   if(message != "") {     var data = JSON.stringify({       id: SHARE_ID,       message: message     });     mqlightClient.send(TOPIC, data, {       ttl: 60*60*1000     });     rl.prompt();   } }); 

Приложение готово. При запуске оно попытается подключится к серверам IBM, затем спросит ник, и подпишется на канал /mqlight/simplechat с ником в качестве SHARE ID. На всё ушло всего 64 строки! Кажется, весьма неплохой результат для одного вечера.

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

Проверяем, всё ли работает:

Profit! А вот так это выглядит в панели управления:

Заключение

Теперь о результатах.

  • 64 строчки кода
  • Следуя инструкции на создание чата уйдет 20-30 минут
  • Сервисы платформы сокращают ~40% времени, учитывая, что нужно поднять сервер, написать код для бекэнда
  • Дополнительным плюсом, данные передаются в зашифрованном виде из коробки, с помощью TLS

Итак, мы решили поставленную задачу: создать чат с минимальными затратами ресурсов, всего за один вечер. С помощью IBM Bluemix можно быстро создавать приложения любой сложности, используя множество уже готовых сервисов и API. Что же, облачные технологии развиваются, и в будущем работа программиста может стать гораздо проще и интереснее, а как вы считаете?

ссылка на оригинал статьи http://habrahabr.ru/post/272443/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *