В этой статье представлен краткий обзор технологий для разработки Backend’а мобильных приложений, рассмотрены их основные достоинства и недостатки.
Практически любому современному мобильному приложению, которое обменивается данными по сети, требуется серверная часть. Если у команды нет большого опыта, то неизбежно встает вопрос — на чем писать back-end для приложения?
В этой статье представлен краткий обзор самых популярных технологий с их основными особенностями.
PHP
Пожалуй, наиболее распространенный вариант для написания серверной части. Это интерпретируемый язык программирования, который предназначен для создания веб-приложений.
Основные плюсы:
- Простота изучения. PHP — сравнительно простой язык, он обладает динамической типизацией, и начать писать на нем довольно просто. В сети есть огромное количество туториалов и курсов.
- Доступность хостинга. В то время как более «сложные» решения требуют более дорогой хостинг или отдельный сервер, для PHP есть масса недорогих и даже бесплатных вариантов. При этом развертывание тоже элементарное — достаточно загрузить скрипт по FTP.
- Большое количество фреймворков и библиотек.
Впрочем, минусов у этого решения тоже хватает:
- PHP «заточен» для работы с протоколом HTTP. При каждом запросе запускается сценарий, результатом работы которого является ответ клиенту. Поэтому создание программ, выполняющихся постоянно, затруднительно. PHP плохо подходит для real-time проектов, где устанавливается постоянное соединение и происходит постоянный обмен данными.
- PHP «модно» критиковать за дизайн языка, и небезосновательно. В языке очень много странностей, например, оператор нестрогого сравнения (==) осуществляет приведение типов при сравнении, что может приводить к неожиданным багам.
Node.js
Сравнительно молодая технология, набирающая популярность в последнее время. Node.js основан на JavaScript-движке V8, применяемом в Google Chrome. Основной особенностью является неблокирующий ввод/вывод, что позволяет достигать хорошей производительности без использования многопоточности.
Плюсы этого решения:
- Высокая производительность операций ввода-вывода. Если приложение большую часть времени проводит в ожидании ответа на запрос к БД или в работе с сетью, то Node — отличный вариант. В добавок к этому, V8 компилирует JS в машинный код на лету, что обеспечивает неплохую производительность вычислений.
- Пакетный менеджер npm, который предоставляет доступ к огромному количеству библиотек (380 тысяч пакетов на момент написания статьи). При этом, он очень прост в использовании и позволяет поставить любой модуль одной командой.
- Наилучшим образом подходит для написания real-time приложений, ввиду событийно-ориентированной архитектуры.
Минусы:
- Если вы не знакомы с JavaScript, то Node покажется непривычным и могут возникнуть трудности с пониманием асинхронных операций и прототипного ООП (хотя в последних версиях языка добавили традиционный синтаксис для классов).
- Экосистема JavaScript очень быстро изменяется, постоянно появляются новые инструменты, библиотеки и фреймворки. Довольно сложно сориентироваться в этом и понять, что вам из этого нужно, а что — нет.
Ruby on Rails
Ruby on Rails — это мощный фреймворк, предназначенный для создания веб-приложений. Включает в себя все необходимое для работы с HTTP и базами данных, поэтому его тоже можно использовать для бэкенда мобильного приложения.
Плюсы:
- Высокая скорость разработки. Этот фреймворк содержит все, что нужно для разработки API. Сам язык тоже способствует удобству и скорости разработки.
- Большое количество доступных библиотек (RubyGems)
Существенный минус у этой технологии только один — это малая производительность фреймворка.
BaaS
BaaS расшифровывается как Backend-as-a-Service. Этот вариант существенно отличается от остальных — вам вообще не придется писать бэкенд. Вместо этого, BaaS-решения предлагают SDK для основных платформ (iOS в том числе), с помощью которого приложение обращается к API сервиса, и через него получает доступ к различным функциям.
У этого варианта один большой плюс — вам не придется разбираться с бэкендом и вручную писать его, такие сервисы предоставляют API для хранения и выборки данных, push-уведомлений и даже работы с геолокацией. Основные операции, с которыми сталкиваются разработчики приложений, уже реализованы за вас, поэтому вам не понадобятся знания о серверной разработке.
А минусы такие:
- Направление относительно новое, поэтому BaaS-провайдеров много, и нет такого решения, которое успело завоевать хорошую репутацию и широкую известность (относительно известный Parse.com закрывается в начале 2017 года). Выбрать хороший вариант затруднительно, ввиду того, что проверенных временем решений (пока что) нет.
- Vendor lock-in. У каждого провайдера свой API, и смена BaaS-провайдера потребует переписывания клиентского кода. А при смене хостинга для своего бэкенда переписывать его не потребуется, достаточно будет развернуть и настроить его на новом месте.
- BaaS в основном предназначен для ускорения разработки и прототипирования на начальных этапах, и есть немалая вероятность, что по мере роста функционала и нагрузки BaaS перестанет удовлетворять вашим требованиям.
Наиболее известные провайдеры на данный момент — это Kumulos, Backendless, Kinvey и Firebase.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.