В этой статье представлен краткий обзор технологий для разработки 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.