Авторы: Алексеева В.А., Грищенко В.И.
Источник: Компьютерная и программная инженерия (КПИ — 2015) — 2015 / Материалы международной научно технической конференции студентов, аспирантов и молодых ученых. — Донецк, ДонНТУ — 2015.
Рассмотрены технологии, используемые при создании Back-end сетевых распределенных приложений. Проведено сравнение и выбор базы данных между классической реляционной базой и базами NoSQL. Кратко описаны языки программирования Python, Ruby и PHP приведены их преимущества и недостатки. Описаны два метода взаимодействия компонентов приложения SOAP и REST и приведены их преимущества и недостатки. На каждом этапе обосновывается выбоор тго или иного средства для приложения, разрабатываемого в рамках магистерской работы.
В рамках дипломной работы будет разрабатываться сетевая онлайн игра для операционной системы Android. Сетевое (распределенное) приложение, представляет собой несколько взаимосвязанных частей, каждая из которых выполняет определенную задачу, которая может выполняться на отдельном компьютере сети. Для взаимодействия частей сетевого приложения используются сетевые службы и транспортные средства ОС.
Рисунок 1 — Упрощенная схема сетевого приложения
Пользователь запускает клиентскую часть системы на смартфоне или планшете. Клиентская часть выполнена в виде приложения на языке Java. Приложение в ходе своей работы обращается к серверной части системы (Back-end) для актуализации игровой сцены и сохранения промежуточных результатов. Back-end состоит из балансировщика запросов, кластера серверов приложений и СУБД.
При разработке серверной части приложения необходимо уделить внимание ряду важных задач: балансировка нагрузки на узлы системы, обеспечение пользователя всегда точной, достоверной и актуальной информацией, восстановление данных в случае возникновения ошибки, обеспечение быстродействия и масштабируемости системы. Согласно с требованиями к back-end на рисунке 1 приведена схема, которая отображает общую структуру приложения с точки зрения обработки информации.
Прежде чем начать разработку приложения необходимо определить, программные средства (язык программирования, тип базы данных, средства для передачи данных между front-end и back-end), которые будут использоваться для разработки приложения.
Базы данных, на данный момент, используются во многих приложениях, начиная с самых простых и заканчивая бизнес-приложениями. В современной индустрии получили распространение два типа БД: реляционные и NoSQL.
К реляционным базам данных относятся (MySQL, SQLite и PostgreSQL), выделим их основные характеристики:
Реляционные БД обеспечивают:
NoSQL базы данных делятся на:
Данные в таких БД представляются в виде агрегатов (вместо использования логической последовательности, все объекты рассматриваются как единое целое). Они легко подвергаются горизонтальному масштабированию и используют специализированный механизм запросов вместо SQL.
Таблица 1 – Достоинства и недостатки БД
Преимущества | Недостатки | |
NoSQL базы данных |
|
|
Реляционные базы данных |
|
|
В результате, для разрабатываемого приложения была выбрана реляционная БД, т.к. поддержание необходимых связей между данными в таблицах вызывает сложности при использовании NoSQL. Например, если необходимо вывести список игроков, с которыми пользователь сегодня играл, то будет нужно продублировать информацию в файлах обоих игроков, а в реляционной БД это лишь одна запись в таблице пересечения и нет необходимости отслеживать сложные зависимости между игроками, поэтому БД на основе графов тоже не подходят.
Наиболее популярными языками программирования для распределенных приложений являются Python, Ruby и PHP.
Python применяется как интерпретируемый язык для скриптов различного назначения. Основной целью Python является приближение синтаксиса реальной программы, написанной на нём, к описывающему задачу псевдокоду, что позволяет уменьшить объём программы. Python позволяет совместить два подхода к программированию: процедурный и объектно-ориентированный.
Ruby – динамический императивный объектно-ориентированный язык программирования, разработанный Юкихиро Матсумото.
PHP – язык программирования, исполняемый на стороне веб-сервера, спроектированный Расмусом Лердорфом (Rasmus Lerdorf) в качестве инструмента создания динамических и интерактивных веб-сайтов. Является мощным и гибким из-за чего и стал одним из популярнейших языков. Возможности языка позволяют применять его в проектах любого масштаба [3].
Для выбора из этих языков наиболее подходящего, их достоинства и недостатки были представлены в виде таблицы 2.
В результате, для системы был выбран PHP, так как он легок в освоении, является кроссплатформенным и очень популярен при разработке веб-приложений.
Таблица 2 – Преимущества и недостатки Python, Ruby, PHP
Преимущества | Недостатки | |
Python |
|
|
Ruby |
|
|
PHP |
|
|
Наиболее популярными методами являются: REST (метод взаимодействия, при котором вызов удаленной процедуры представляет собой HTTP-запрос, а данные являются параметрами запроса) и SOAP (протокол, основанный на XML и предназначен для обмена структурированной информацией между распределенными приложениями поверх существующих веб протоколов). Исходя из данных приведенных в таблице 3 и задач, которые необходимо решить наиболее подходящим будет метод взаимодействия компонентов через REST [4].
Таблица 3 – Преимущества и недостатки SOAP и REST
Преимущества | Недостатки | |
REST |
|
|
SOAP |
|
|
Данное исследование позволяет получить представление о задачах, которые возникают перед разработчиком распределенного приложения. В соответствии с ними были проанализированы и выбраны подходящие средства разработки и составлена полная схема распределенного приложения.