Разработка сервиса виртуализации мобильных приложений в браузере

Разработка сервиса виртуализации мобильных приложений в браузере

И.Н. Старицкий Волгоградский государственный университет

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

В первой части работы описан процесс проектирования и непосредственной разработки серверной части системы облачной виртуализации приложений в браузере. Указаны проблемы и трудности, возникшие в процессе работы.

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

Ключевые слова: облачные вычисления, виртуализация, аппаратная виртуализация, сервис приложений.

Введение

В последние годы главным направлением развития IT отрасли являются облачные вычисления. Постоянно этот термин упоминается в средствах массовой информации, большие компании заявляют о внедрении этих технологий в своей инфраструктуре. И уже ни одна техническая конференция не обходится без доклада про Cloud computing. В настоящее время лидерами этой отрасли являются такие гиганты, как Google с сервисом App Engine, Microsoft с Azure и Amazon с EC2, который входит в инфраструктуру AWS [1, 3].

Не смотря на это, небольшие компании тоже смогли выйти на рынок облачных технологий и успешно там обосноваться. Самые успешные из них - это Dropbox и Digital Ocean [2].

Перечисленные выше компании предоставляют хранилище данных на удаленных серверах, инфраструктуру (IaaS), платформу (PaaS) или уже конечное приложение (SaaS). Все эти новые технологии переносят нас в

будущее, где все данные хранятся и обрабатываются на удаленных серверах, а компьютер является только устройством вывода и ввода информации [4, 5].

Пока до этого ещё далеко, и в нашем настоящем нам постоянно приходится сталкиваться с обычным, не облачным программным обеспечением. Перенести его на удаленные машины и предоставить его для работы конечному клиенту по модели SaaS - совершенно нетривиальная задача. Для того чтобы импортировать в Web такую программу, как Autodesk 3D Max, потребуется большой штат дополнительных разработчиков, так как функционал программы писался десятилетиями. Для мобильных ПО все еще сложнее, тут есть и проблемы с покрытием интернета и с задержкой данных. Но в целом процесс перехода в облака неотвратим и появляется все больше и больше решений. Чтобы уже сейчас использовать мобильное или десктопное ПО удаленно на любом устройстве, и разрабатывается система облачного доступа к приложению.

В работе рассматривается проблема виртуализации мобильных приложений, так как этот рынок развивается наиболее стремительно.

Разработка клиентской части

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

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

WebSocket — протокол связи поверх TCP-соединения, предназначен для обмена данными между веб-клиентом и сервером в режиме реального времени. В настоящее время протокол стандартизирован W3C [6,7].

J

Протокол WebSocket имеет две URI схемы, ws: (нешифрованное соединение) и wss: (шифрованное соединение).

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

Для примера работы VNC клиента использующий технологию WebSocket (рис.1), было взято потоковое изображение рабочего стола Windows, обрезано на несколько частей и отправлено в сессию WebSocket.

Рис. 1. - Пример работы VNC клиента по технологии WebSocket

Для передачи изображения в VNC клиенту используется Binary Frames, в котором хранятся порезанные части изображения. На рис.2 можно увидеть передачу Binary Frames в браузер. Помимо приема изображения от сервера, для полноценного удаленного доступа требуется ещё и передача данных о передвижении мыши и о введенных символах.

Рис. 2. - Прием клиентов изображения от сервера

WebSocket позволяет решать все задачи, возникающие в результате работы с удаленным рабочим столом внутри браузера. При этом имеет более высокую скорость работы по сравнению с обычной AJaX HTTP передачей данных. Еще одним плюсом WebSocket является то, что он сохраняет преемственность с основными web-технологиями, тем самым упрощается процесс понимания технологии его работы.

Разработка серверной части

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

И в итоге основным решением оказалось использование виртуальной машины с гипервизором. При проведении исследовании нагрузок на вычислительную машину получалось, что на один слепок операционной системы приходится 30% ЦП шестиядерного AMD FX-6300 (рис.3).

Процессы Г 54% - ислользорание ЦП

Fj Образ _1_ИА Потоки цп Среднее для ЦП

jHj player.exe 3076 36 21 13,09

Q VB0xHaadle55.exe <4043 36 16 16,33

О explorer.exe 3936 46 7 0,14

|_\ Searchlndexer.exe 5912 14 3 0 .СБ

П chrome.axe 3532 14 2 С,19

Q Systenr. 4 139 2 1,46

jP| Системные прерывания - - 1 0,89

audlodg.exe 316 17 1 8,61

chrome,exe 2848 15 1 0,51

Рис. 3. - Загрузка ЦП для одной виртуальной машины

Из рис. 3 видно, что потребляемые гипервизором ресурсы достаточно высоки, из-за этого облачный проект по виртуализации Android в данной модели не сможет иметь широкого распространения и развития, так как не выгодно содержать такие вычислительные мощности. Соответственно нужен совершенно иной подход.

Полноценным решением всех описанных выше проблем является Cubieboard. Это микрокомпьютер с процессором ARM Cortex A8, специально разработанный под операционные системы Linux и Android. Стоимость его $50, что 2 раза меньше, чем стоимость потребляемых ресурсов виртуальной машины. С помощью этого устройства можно сделать сервис аппаратной виртуализации Android, где на каждом устройстве будет предустановлена ОС, и доступ к ней будет даваться пользователю по требованию[8-10].

В итоге общая схема серверной части системы облачного доступа к приложению, представляет из себя веб-серевер (рис.4) к которому обращается веб-браузер пользователя, Linux сервер, который обеспечивает всю логику доступа к устройствам, и сами устройства Cubieboard, которые передают информацию о своём статусе, доступности или недоступности.

Для работы с программой каждому пользователю будет выделено 5 минут, в итоге 100 Cubieboard могут за сутки обслуживать 28800 уникальных

Рис. 4 .- Кластер Cubieboard

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

В процессе работы и была реализована аппаратная виртуализация с использованием кластера из машин Cubieboard.

Был разработан прототип административной панели управления работой c облачным сервисом. Программный интерфейс показан на рис.5.

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

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

J

Рис. 5. - Программный интерфейс Cubieboard

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

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

Литература

1. Brodkin J. Open source fuels growth of cloud computing, software-as-a service. Network World, 2012. 432 p.

2. Joseph M. Proceedings of the 1st ACM symposium on Cloud computing. N. Y.: ACM, 2010. 402 p.

3. Lee G. Cloud Computing: Principles, Systems and Applications. L.: Springer, 2010. 379 p.

4. Prajapati K., Sarkar, A. Trust Management Model for Cloud Computing Environment// India. International Conference on Computing Communication and Advanced Network 2013. pр. 24-30.

5. Ullah S. TCloud: A Dynamic Framework and Policies for Access Control across Multiple Domains in Cloud Computing // International Journal of Computer Applications. 2013. V. 62(2). pр. 49-51.

6. Берёза Н.В. Современные тенденции развития мирового и российского рынка информационных услуг // Инженерный вестник Дона, 2012, №2 URL: ivdon.ru/magazine/archive/n2y2012/758/.

7. Пономарева Е.И. Совершенствование процесса обработки данных при помощи облачных вычислений // Инженерный вестник Дона, 2012, №1 URL: ivdon.ru/magazine/archive/n1y2012/628/.

8. Риз Д. Облачные вычисления. СПб.: БХВ-Петербург, 2011. 288 с.

9. Фингар П. Dot.cloud: облачные вычисления - бизнес-платформа XXI века. М.: Аквамариновая книга, 2011. 256 с.

10. Широкова Е.А. Облачные технологии // Современные тенденции технических наук: материалы международной заочной научной конференции (г. Уфа), 2011. С. 30-33.

References

1. Brodkin J. Open source fuels growth of cloud computing, software-as-a service. Network World, 2012. 432 p.

2. Joseph M. Proceedings of the 1st ACM symposium on Cloud computing. N. Y.: ACM, 2010. 402 p.

3. Lee G. Cloud Computing: Principles, Systems and Applications. Springer,

2010. 379 p.

4. Prajapati K., Sarkar, A. International Conference on Computing Communication and Advanced Network, 2013. pp. 24-30.

5. Ullah S. International Journal of Computer Applications, 2013, V. 62(2). pp. 49-51.

6. Bereza N.V. Inzenernyj vestnik Dona (Rus), 2012, №2. URL: ivdon.ru/magazine/archive/n2y2012/758/.

7. Ponomareva E.I. Inzenernyj vestnik Dona (Rus), 2012, №1. URL: ivdon.ru/magazine/archive/n1y2012/628/.

8. Riz D. Oblachnye vychislenija. SPb [Cloud computing]. BHV-Peterburg,

2011. 288 p.

9. Fingar P. Dot.cloud: oblachnye vychislenija - biznes-platforma XXI veka [Dot.cloud: cloud computing - business platform XXI century]. M.: Akvamarinovaja kniga, 2011. 256 p.

10. Shirokova E.A. Sovremennye tendencii tehnicheskih nauk: materialy mezhdunarodnoj zaochnoj nauchnoj konfeencii (g. Ufa), 2011. pp. 30-33.