Как Создать Масштабируемую Инфраструктуру для Мобильного Приложения?

Вы ищите работающий способ масштабировать инфраструктуру для мобильного приложения? Перед вами подробное руководство, содержащее реальные уроки по масштабированию инфраструктуры мобильных приложений.

Contents

Что такое мобильное приложение?

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

  • Нативные приложения работают под конкретную операционную систему, например, Android или iOS;
  • Веб-приложения разрабатываются с использованием таких технологий, как HTML5 и CSS;
  • Гибридные приложения работают как веб-приложения, но находятся в контейнере с нативными приложениями.

Продолжайте читать далее, чтобы узнать больше подробностей об архитектуре инфраструктуры мобильных приложений.

Web apps vs Hybrid Apps vs Native Apps

Определение для масштабируемой архитектуры приложений?

Создание мобильных приложений и их масштабирование – это очень непростая задача, и при определении масштабируемой архитектуры необходимо учитывать множество переменных.

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

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

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

Как выглядит инфраструктура мобильного приложения?

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

  • Платформы для публикации приложений
  • SDK – Комплекты для разработки ПО
  • API
  • CDN – Сеть Доставки Контента
  • Хранилище Объектов
  • Балансировщики Нагрузки
  • Серверы для Приложений
  • Серверы для Баз Данных

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

Mobile App Architecture

Платформы для публикации приложений

Мобильное приложение можно создать, используя различные технологии. От нативных языков разработки iOS и Android, таких как, например, Swift и Kotlin/Java, до кроссплатформенных фреймворков разработки, таких как React Native или Flutter.

Описанные выше технологии используются для создания фронтенда мобильного приложения или интерфейса со стороны клиента. Магазины приложений, такие как популярные Google Play и App Store, обеспечивают экосистему для распространения мобильных приложений среди конечных пользователей.

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

И Google Play, и App Store имеют различные правила публикации, и очень важно сначала ознакомиться с ними, чтобы избежать проблем, которые могут помешать публикации приложения.

Чтобы избежать тщательной проверки со стороны магазинов приложений, альтернативой может стать разработка PWA – технологии доя разработки прогрессивных веб-приложений с использованием таких технологий, как, например, React, Angular и Ionic.

SDK – Комплекты для Разработки ПО

Комплекты для разработки ПО являются важным шагом в создании масштабируемой инфраструктуры мобильных приложений. SDK состоит из устанавливаемого пакета с такими инструментами, как API, библиотеки, отладчик, документация и т. д.

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

Простой для понимания пример – отправка push-уведомления с бэкенда на фронтенд. SDKоблегчит это действие и ускорит интеграцию функциональных элементов.

Простой для понимания пример – отправка push-уведомления через бэкенд приложения на фронтенд непосредственно пользователю. SDK упрощает это действие и ускорит интеграцию функциональных элементов.

API – Интерфейсы Прикладного Программирования

API являются жизненно важным элементом в разработке архитектуры мобильного приложения. API – это программные интерфейсы, которые соединяют фронтенд (сторону клиента) с бэкендом (стороной сервера) мобильного приложения.

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

API - Mobile App Infrastructure

CDN – Сеть Доставки Контента

CDN – это географически распределенная группа серверов, которые работают вместе таким образом, чтобы обеспечить максимально быструю доставку контента. Эти серверы расположены ближе к конечным пользователям и позволяют быстрее передавать ресурсы для загрузки интернет-контента (изображения, видео и т.д.).

Дополнительные преимущества внедрения CDN также включают сокращение времени связи между клиентом мобильного приложения и сервером за счет оптимальной маршрутизации, снижение затрат на пропускную способность, а также безопасность (DDoS-атаки, сертификаты и т.д.).

Хранилище Объектов

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

Балансировщики Нагрузки

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

CDN будет подключаться к балансировщикам нагрузки, а ПО балансировщика нагрузки будет эффективно распределять запросы клиентов, обеспечивать более высокую доступность и увеличивать/уменьшать масштаб в зависимости от количества запросов.

Серверы для Приложений

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

Серверы для Баз Данных

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

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

Как масштабировать мобильное приложение?

Существует в основном два способа создания масштабируемой инфраструктуры приложений. Первый – использование управляемых сервисов, таких как Мобильный Бэкенд как Услуга, и второй – создание бэкенда с нуля с помощью поставщика услуг Инфраструктура как Услуга.

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

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

Давайте более подробно рассмотрим каждый из этих двух вариантов.

BaaS – Бэкенд как Услуга

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

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

Scalable backend - Back4app Login

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

Scalable backend - Back4app creating app

На следующем экране представлен GUI или графический интерфейс пользователя, охватывающий модель данных, бессерверные функции, API и настройки инфраструктуры.

Scalable backend - Back4app dashboard

Бэкенд готов к использованию. Он имеет встроенную масштабируемость, и все, что нужно сделать пользователю – это подключить фронтенд приложения к бэкенду через SDK, загрузить данные и описать бизнес-логику.

Back4App предлагает множество готовых к использованию SDK, включая React Native, Flutter, Android, iOS, Javascript, Xamarin и др.

Scalable backend - Back4app SDKs

Чтобы узнать более подробную информацию о том, как создать свое первое приложение с помощью Back4App, внимательно изучите руководство Создание Первого Приложения с Помощью Back4App.

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

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

  • Broadcast

Первый пример мы рассмотрим на примере норвежского стартапа Broadcast Oslo. Компания предоставляет услуги бесплатного гида по фестивалям, концертам и клубам в Осло.

Broadcast Oslo является мобильным приложением, которое распространяется через GooglePlay и App Store. Пользователи скачивают приложение и получают доступ ко всем событиям, которые произойдут в Осло в ближайшие месяцы.

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

Фестиваль Musikkfest Oslo 2022 состоялся 4 июня и собрал около 20 тысяч участников. Представьте себе, насколько масштабируемой должна быть инфраструктура, чтобы поддерживать одновременный доступ тысяч пользователей к данным из одного приложения.

Техническая команда Broadcast решила использовать Back4App для решения этой проблемы, и результаты превзошли ожидания! Вот что сказал Тим Харрис, генеральный директор Broadcast, об этом опыте.

Еще раз спасибо за вашу помощь, это был очень удачный день для нас, и так важно, что у нас не было ни одной проблемы с доступом людей к приложению!

Тим Харрис, CEO Broadcast
  • Fight List

Fight List имеет более 10 миллионов скачиваний, и это очень успешная игра, созданная компанией Two4Tea. Это игра в виде вопросов и ответов, распространяемая более чем на семи языках и достигшая первых мест в рейтингах в США и Франции. 

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

Two4Tea выбрала Back4app для решения инфраструктурной задачи, что позволило ей обрабатывать более 10 тысяч запросов в секунду в пик использования. Вот что сказал Николас Бульч, генеральный директор Two4Tea, об этом опыте.

В это время мы поняли, что Back4App был самым правильным выбором, потому что они смогли проанализировать наше приложение и нашу бизнес-модель и создать индивидуальное решение.

Николя Бульч, CEO Two4Tea

Подробнее о проблемах масштабирования Fight List читайте в статье Масштабирование Игры с помощью Back4App.

Создание Пользовательского Бэкенда на Основе Любого Крупного Облачного Провайдера

Второй вариант построения масштабируемой инфраструктуры мобильного приложения – это создание бэкенда с использованием облачных провайдеров, таких как AWS, Google Cloud, Azure, Digital Ocean и т. д.

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

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

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

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

Следующий шаг – определение продуктов, которые будут поддерживать реализацию бэкенда. В данном примере мы будем использовать следующее:

  • EC2 Instances 
  • EBS – Elastic Block Storage
  • S3 – Simple Storage System
  • Балансировщики Нагрузки
  • CDN – CloudFront

Давайте рассмотрим каждый шаг более подробно.

Создание EC2 Instances

Для масштабируемой инфраструктуры бэкенда потребуются виртуальные машины приложений и баз данных. Первым шагом является определение модели экземпляра для использования в кластере.

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

В данном примере мы будем использовать экземпляр общего назначения. Начнем с экземпляра t4g.medium, который имеет архитектуру на базе процессора Arm; он отлично подходит для гибких рабочих нагрузок и предлагает отличную цену за час.

Ниже приведены начальные шаги, которые необходимо выполнить:

  • Войдите в AWS
Scale Mobile App Infrastructure - Login AWS
  • Перейдите к EC2
  • Instances
Scalable backend - Create instance
  • Запустите Новый Экземпляр (New Instance)
Scalable backend - Launch an instance

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

Для получения дополнительной информации о настройке экземпляра EC2 следуйте руководству Создание и запуск экземпляра EC2

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

Существует два способа масштабирования серверного кластера: горизонтальное масштабирование и вертикальное масштабирование.

  • Горизонтальное Масштабирование – добавление дополнительных экземпляров в кластер, чтобы справиться с новыми рабочими нагрузками.
  • Вертикальное Масштабирование – добавление большего количества ресурсов (CPU/RAM) к экземпляру для удовлетворения новой рабочей нагрузки, т.е. увеличение размера экземпляра.

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

Горизонтальное масштабирование кластера приложений, в общем, является простым процессом. Это можно сделать с помощью AWS, зайдя в меню Auto Scaling и запустив новую конфигурацию.

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

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

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

Для получения подробной информации о том, как добавить автоматическое масштабирование в EC2, пожалуйста, следуйте руководству Начало работы с автоматическим масштабированием Amazon EC2.

EBS – Elastic Block Storage

Для каждого экземпляра потребуется подключенный том EBS. Исключение составляют кратковременные экземпляры с хранилищем, встроенным в аппаратное обеспечение.

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

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

Для получения дополнительной информации о том, как прикрепить том EBS к виртуальной машине, обратитесь к разделу Прикрепление тома Amazon EBS к экземпляру.

S3 – Simple Storage Service

Для создания надежной и масштабируемой инфраструктуры бэкенда потребуется хранилище объектов. Сделать это с помощью AWS очень просто, а S3 – идеальный продукт для достижения данной цели.

Первым шагом в создании S3 является определение региона для хранения файлов. Вообще говоря, вы должны выбрать тот же регион, что и экземпляр EC2.

Scalable mobile app infrastructure - Build S3 bucket.

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

Участки памяти AWS S3 по умолчанию масштабируются, и пользователи платят только за используемые ресурсы. Для получения дополнительной информации о создании участков памяти S3, пожалуйста, следуйте руководству Создание Участков Памяти S3.

Балансировщики Нагрузки

Масштабируемая инфраструктура требует правильной реализации балансировщика нагрузки. AWS предлагает несколько типов балансировщиков нагрузки, которые находятся в составе их продуктов.

Балансировщики нагрузки приложений будут направлять запросы на нужные экземпляры EC2 и следить за состоянием этих экземпляров.

Прикрепление балансировщика нагрузки к экземплярам не является сложным процессом и включает в себя следующие шаги:

  • Перейдите на панель управления EC2
  • Балансировка нагрузки
  • Создайте балансировщик нагрузки
  • Выберите тип балансировщика нагрузки
Scaling a mobile app infrastructure - Load Balancer Type.
  • Настройте балансировщик нагрузки относительно типа IP-адреса, VPC, зон доступности и дополнительных служб.

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

Cloudfront CDN

Cloudfront – это встроенная сеть доставки контента, доступная в AWS и поддерживающая около 300 географических точек по всему миру. Продукт ускоряет распространение статического и динамического контента, повышает безопасность и легко интегрируется с другими продуктами AWS.

В рамках масштабируемой архитектуры бэкенда Cloudfront соединяется с участками памяти S3 и с балансировщиками нагрузки.

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

Подключение Cloudfront к участку памяти S3 очень просто осуществимо. Подключение происходит через панель Cloudfront, создание дистрибутива Cloudfront и добавление домена. Для получения дополнительной информации вы можете прочитать статью в блоге Создание дистрибутива AWS CloudFront с SOrigin.

Заключение

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

Масштабируемая инфраструктура мобильных приложений состоит из системы, спроектированной таким образом, чтобы не было простоев, сбоев, а также чтобы быть супербыстрой и безопасной.

К основным элементам масштабируемой инфраструктуры относятся платформы публикации приложений, SDK, API, CDN, балансировщики нагрузки, серверы приложений и баз данных.

Два наиболее распространенных способа достижения лучшей в своем классе масштабируемой инфраструктуры мобильных приложений – это использование готовых решений, таких как Бэкенд как услуга, или создание пользовательского бэкенда на облачных сервисах, таких как AWS.

Решения Бэкенд как услуга обеспечивают более быструю реализацию, предоставляет готовые функции масштабирования и заранее определенные протоколы безопасности. С другой стороны, бэкенд, созданный на заказ, обеспечит более гибкую среду и контроль.

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

ВОПРОС-ОТВЕТ

Что такое мобильное приложение?

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

Как выглядит инфраструктура мобильного приложения?

К основным элементам масштабируемой инфраструктуры относятся платформы для публикации приложений, SDK, API, CDN, балансировщики нагрузки, серверы приложений и баз данных.

Как создать масштабируемую инфраструктуру мобильных приложений?

Два наиболее распространенных способа создания лучшей в своем классе масштабируемой инфраструктуры мобильных приложений – это использование готовых решений, таких как Бэкенд как услуга, или создание пользовательского бэкенда на облачных сервисах, таких как AWS.


Leave a reply

Your email address will not be published.