call us toll-free +1 855 855 3600
 
  • Home
  • >
  • Blog
  • >
  • Серверный back-end для мобильного приложения: разработка и переход в облако Azure
DB Best Chronicles
 
Talks on Big Data, Mobile Apps, Web and Software Development

Серверный back-end для мобильного приложения: разработка и переход в облако Azure

Posted by | On November 7th, 2013 | In Big Data | Tags: , ,

“there is no such thing as a SQL Server team anymore.
There is, in fact, no code base called SQL Server.
There’s only one code base, which is the Azure database code base.”
Satya Nadella,
president of the Microsoft Server and Tools Division

Данный рассказ будет первым в небольшом цикле статей, описывающих опыт команды DB Best по применению облачных технологий от Microsoft  к различным проектам. Мы рассмотрим пример разработки приложения электронной коммерции и переноса его в облако Microsoft Azure.

Общая информация о проекте:

Тип Проекта:

E-Commerce

Цель: 

Разработать серверный back-end для мобильного приложения и десктопного.

Стек технологий:

Windows Communication Foundation (WCF)
Entity Framework (EF)
Microsoft SQL Server
.Net Framework 4.5

Разработка проекта проходила в несколько этапов:


1. Модель данных. Разработка осуществлялась по принципу Model First (в начале строилась модель с помощью нативного редактора моделей Visual Studio). Далее Visual Studio на базе реализованной модели отстроил скрипт, который накатывался на SQL Server. Стоит отметить, что скрипт уже изначально был совместим с Azure, но в разработке использовался SQL Server 2012.

2. Доступ к данным. Следующим этапом было написание уровня работы с базой данных на основе Entity Framework (EF) в качестве доступов к базе данных.

Указанный функционал доступа к данным покрыли Unit-тестами. Также Unit-тесты, эмулирующие вызовы с клиентских приложений, были написаны для покрытия уровня доступа к самому сервису и бизнес логики.

3. Web API для back-end’а. Для работы с сервисом разрабатывались приложения со следующим функционалом:

  • совершение покупок от имени клиентов системы (на базе iOS, Android);
  • обслуживание заказов покупатели в режиме реального времени от имени обслуживающего персонала магазина (на базе Android);
  • работа с данными о продуктах, сотрудниках от имени администарора (WPF клиент).

При реализации вышеописанных сервисов мы прибегли к использованию специфических приемов:

  • Protobuf (протокол, с помощью которого описываются объекты участвующие в трансфере между клиентами и сервером https://code.google.com/p/protobuf/) для описания объектов и сообщений для контрактов служб, с которыми работают клиентские приложения;

  • Google Cloud Message Service для обратной связи с мобильными приложениями, который отправляет сообщения непосредственно на мобильное устройство;

4. Бизнес логика. Уже посредством импорта в EF модель из базы добавились несколько хранимых процедур в рамках реализации бизнесс логики приложения. Внедренные хранимые процедуры были предназначены для поиска объектов по географическому признаку.

Основные методы, которые мы использовали:

  • на уровне базы данных:
    – STDistance –  вычисление дистанции от точки до точки;
    – geography::Point – получение точки по двум координатам (широта и долгота);

  • на уровне сервиса использовались аналогичные функции, доступные в Spatial Library

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

  • учитывая координаты клиента (широту и долготу) и заданный радиус поиска отдавать данные
    – о ближайших магазинах
    – о ближайших продуктах;
    – об описании местности, в которой может находиться несколько магазинов;

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

5. В рамках тестирования работы WCF сервиса были написаны хранимые процедуры по заполнению базы тестовыми валидными данными и процедуры по ее очистке.

6. Полученный сервис был выложен на виртуальную машину на Windows Server 2008 R2 для дальнейшего тестирования со стороны клиентских приложений.

   Процесс миграции E-Commerce проекта в облако:

Прикинув возможные нагрузки и сверив их с данными нагрузочного тестирования, было принято решение использовать Windows Azure  в качестве хостинга приложения, а SQL Azure – в качестве базы данных для него.  Решающим фактором для принятия такого решения стало быстродействие “облачных” сервисов, а также возможность быстрого, динамического расширения требуемых мощностей.

В процессе перехода в облако мы столкнулись со следующими трудностями:

  • Во-первых, для генерации тестовых данных на  SQL Server были задействованы процедуры sp_msforeachtable и sp_msforeach_worker, которых фактически не оказалось в SQL Azure. То есть,  в SQL Server 2012 они находились в контексте Master DB, а в  SQL Azure не оказалось возможности переключения между несколькими базами в рамках одной сессии. Объяснялось же это тем, что различные базы данных могут находиться физически в разных местах, следовательно, чтобы переключиться между ними, надо было отключаться от одной и соединяться с другой. Так, не было никакой возможности использовать в SQL Azure USE, выполняющий переключение между контекстами баз данных.

  • Во-вторых, для вычислений в рамках функционала приложений использовались географические типы данных (при помощи библиотек Microsoft.SqlServer.Types.dll и SQLServerSpatial.dll). Как оказалось, по умолчанию эти библиотекине поддерживались Windows Azure. И, чтобы решить возникнувшую проблему, мы использовали советы, опубликованные в блоге Alastaria.

Неоспоримым плюсом стало то, что для реализации проекта был использован тестовый Azure Instance (на бесплатной основе):

  • это позволило сразу проверить возможности Azure и сделать выбор в его пользу;

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

Заключение

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

Однако, компания Microsoft уже открыто заявила о том, что в ближайшее десятилетие облачные технологии могут стать доминирующим архитектурным решением для IT компаний. Также Microsoft заверил пользователей SQL Azure в том, что в ближайшее время ему будет уделяться максимум времени и трудовых ресурсов и полученный продукт будет скорее гибридным решением. А это значит то, что уже сейчас можно смело говорить о том, что реализация проектов с применением облачных технологий – это перспективное направление, в котором стоит двигаться разработчикам программного обеспечения.

Оригинал статьи: Server Back-End for Mobile Apps: How to Develop and Deploy to SQL Azure

Comments

comments


Leave a Reply