Дипломная работа: Разработка сервиса для свободного обмена одеждой

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Рис. 5. Модель бизнес-процесса «Процесс обмена одеждой вне приложения» в нотации BPMN 2.0

Стек технологий для разработки сервиса

Правильно выбранные инструменты для разработки делают ее более успешной и эффективной, помогают сократить риски, на начальном этапе подобрать совместимые технологии. Таким образом, правильно выбранный стек технологий - важный фактор успешной реализации проекта. Для разработки сервиса для свободного обмена одеждой проанализированы и выбраны технологии для реализации UI/UX, базы данных и серверного API. Также указаны предпочитаемые технологии, необходимые для процесса разработки (программное обеспечение, плагины).

Чтобы найти нужные товары или услуги, российский потребитель чаще всего просматривает страницы с ноутбука или смартфона. Однако, чтобы завершить заказ (оплатить, оформить доставку), он использует стационарный компьютер или ноутбук [3]. У них более удобный и большой экран, выше качество и скорость интернета, а также потребитель привык, что десктоп-версия более удобна и проработана. Таким образом, на сегодняшний день мобильные приложения не могут обеспечить оптимальный покупательский опыт (исследователи Euromonitor Passport прогнозируют, что мобильные приложения будут превалировать над веб-приложениями в России не раньше 2023 года). В работе акцентируется именно покупательский опыт с той стороны, что потребитель выступает лицом, который приобретает какую-либо ценность, в случае обмена, пользователь приложения по-прежнему ищет определенную ценность, поэтому, поведение можно приравнять к покупательскому.

Одной из главных тенденций в разработке веб-приложений сегодня становится технология Single page application (SPA). Такие приложения уже поддерживают поисковую и SEO оптимизацию, выигрывают по скорости работы и удобству использования у стандартных многостраничных сайтов (Multi Page application). Более того SPA позволяет добиться эффекта «приложения», когда вебсайт похож скорее на встроенное приложение на компьютере, а не типичный сайт с перезагрузками и задержками.

Развитие SPA связано с появлением технологии AJAX в 2005 году. AJAX позволял разработчикам динамически отправлять запросы на сервер, без перезагрузки страницы. Позднее появились другие технологии: JQuery, Dojo, Javascript, Prototype и др. Они работали с клиентской стороны и используются до сих пор.JQuery и JavaScript все еще входят в рейтинги самых используемых языков для разработки в контексте клиентской части веб-приложений.

В качестве основного инструмента для клиентской разработки были отобраны 5 технологий, реализованных на языке JavaScript:

- Backbone.

- Angular.

- Ember.

- React.

- Vue.

Краткая сравнительная характеристика с оценкой популярности и сложности освоения технологий представлена в Таблице 2.

Табл. 2. Сравнение технологий для разработки клиентской части приложения

Технология

Тип

Виртуальный DOM (Shadow DOM)

Популярность (от 1 до 5, где 5 - самый популярный)

Сложность обучения (от 1 до 5, где 5 - самый сложный)

Backbone

Фреймворк

+

1

3

Angular

Фреймворк

+

3

5

Ember

Фреймворк

+

1

5

React

Библиотека

+

5

5

Vue

Библиотека

+

2

3

После тщательного анализа была выбранаopen-source библиотека React.js для реализации клиентской части приложения. React поддерживается компанией Facebook, обновляется, развивается и на сегодняшний день остается самым популярным фреймворком (React часто называют фреймворком, хотя фактически - это библиотека) для разработки приложений [11, 12].

React использует реактивный подход в создании приложений - потоки данных асинхронны, изменения распространяются быстрее и синхронизируются в местах, где указаны те же переменные («propagate changes»). React придерживается концепции многоразовых компонентов, поэтому при проектировании интерфейса весь пользовательский экран будет логически разделен на компоненты. Разработка ведется на языке JSX - по сути совмещенного языка JavaScript и языка разметки, XML-подобный синтаксис, поддерживаемый ECMAScript.

Система управления базами данных

База данных - неотъемлемая часть информационной системы. Для взаимодействия с базой данных, необходима система управления базами данных. В этом разделе рассмотрены четыре вида систем управления базами данных, обоснован выбор технологии, наиболее подходящей под разработку сервиса на стадии MVP. Сравнение проведено по семи основным характеристикам и представлено в виде сводной таблицы.

Ежегодно DB-engines составляет график популярности исследуемых систем управления базами данных [13], аналитики учитывают частоту использования технологии, отзывы разработчиков, выход новых версий и другие критерии. MySQL, согласно DB_Engines, -- наиболее популярная реляционная система управления базами данных, PostgreSQLтакже имеет растущий тренд и набирает популярность среди SQLСУБД, а MongoDB -- наиболее известная NoSQLсистема управления базами данных. Redis, хранилище типа ключ-значение, также резко набирает популярность в NoSQL системах управления базами данных (особенно заметен яркий скачок в 2014-2015гг.). Данные актуальны на март 2020 года. Для сравнения были выбраны именно эти системы управления базами данных. Важно отметить, что использование вышеперечисленных СУБД является бесплатным.

В таблице 3 приведено сравнение систем управления базами данных по семи характеристикам. Сначала приведен тип каждой из рассматриваемых СУБД. Далее расположена оценка по различным характеристикам: Подход к разработке и жизненный цикл приложения, как устроена модель данных, насколько безопасна в использовании данная СУБД (есть ли возможность обернуть обращения к базе в транзакции и пр.), производительность используемой технологии, возможности к масштабированию системы (поскольку мы рассматриваем MVPс дальнейшей доработкой), и, наконец, удобство администрирования СУБД. Каждая характеристика оценена баллами от нуля до трех, где 0 - пустая ячейка, «3» - наивысший балл. Для выделения сверхвысокой производительности СУБД Redis, в таблицу занесено значение «4».

Табл. 3. Сравнение систем управления базами данных

Критерий

MySQL

PostgreSQL

MongoDB

Redis

Тип СУБД

Реляционная

Реляционная

Документо-ориентированная

Ключ-значение

Подход к разработке и жизненный цикл приложения

3

3

+++

2

Модель данных

2

3

2

1

Транзакции и Консистентность (ACID)

3

3

1

Производительность

3

3

2

4

Масштабируемость

2

1

3

3

Администрирование

2

1

3

2

В MongoDB данные представляют собой документы. Данные многих веб-приложений отображать очень просто. В MongoDB достаточной гибкий JSON-формат документов и низкий порог входа: не нужно специальных знаний языка SQL. Таким образом, простая логика и простые запросы реже создают проблемы. Также в MongoDB встроена достаточно простая масштабируемость с использованием технологии шардинга (шардинг - это стратегия масштабирования приложений. Шардирование - процесс, когда база данных делится на блоки и распределяется по разным серверам-шардам). Если говорить про приложения, где используется MongoDB, и на чем они фокусируются -- это очень быстрая разработка, однако здесь возникает вопрос жизненного цикла приложения. MongoDB подходит для приложений с ограниченным циклом жизни. Для создания сервиса для обмена одеждой это допустимое ограничение. Данные о пользователях зафиксированы, а товары, которые загрузил пользователь, хранятся в системе временно, пока не будут обменяны. Далее об обменянных товарах может храниться только короткая информация, полные сведения уже не нужны. MySQL в этом плане более гибок и обеспечивает долгий срок службы на 15 и более лет.

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

Язык разработки северной части

Прежде всего, фокус исследования языков для реализации серверной части был направлен на веб-ориентированные языки, поскольку предполагается создать некий MVP (MinimalViableProduct) для быстрого тестирования гипотез.

К рассмотрению были отобраны три технологии:

- Node.js- серверная платформа для работы с JavaScript через движок V8. JavaScript выполняет действие на стороне клиента, а Node - на сервере. Позволяет писать полноценные приложения. Node умеет работать с внешними библиотеками, вызывать команды из кода на JavaScript и выполнять роль веб-сервера [12].

- PHP- язык программирования, специально разработанный для написания web-приложений (сценариев), исполняющихся на Web_сервере, широко используемый язык сценариев общего назначения с открытым исходным кодом. Аббревиатура PHP означает «Hypertext Preprocessor (Препроцессор Гипертекста)».

- Go - статически типизированный, компилируемый, многопоточный язык для создания серверной части приложения. Разработан внутри компании Google.

Эти технологии имеют хороший выбор редакторов, интегрированных сред разработки, отладчиков, валидаторов и других инструментов. Более того, все вышеперечисленные языки названы перспективными, имеют огромные open-sourceсообщества, постоянно развиваются и улучшаются.

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

Каждая характеристика оценена баллами от нуля до трех, где «0» - пустая ячейка, «3» - наивысший балл.

Табл. 4. Сравнение языков программирования для серверной разработки

Критерий

PHP

GO

Node.js

Лаконичность синтаксиса

3

1

2

Инструменты для разработчика

1

2

3

Готовность команды к работе

1

1

3

Объем документации

3

1

2

Параллелизм

1

3

1

Масштабируемость

2

2

1

Для разработки была выбрана технология Node.js, она отвечает требованиям к лаконичности синтаксиса и наличию документации в свободном доступе. Также, поскольку разработка серверной части будет производиться параллельно с клиентской, наличие языка JavaScriptв обоих частях сделает переходы между задачами более простыми. Для разработки на Node.jsбудет использоваться веб-фреймворк Express версии 4.17. Expressпредставляет собой небольшую грубую надстройку над Node.jsдля реализации типовых действий: отправки/получения http-запросов, работы с веб-сокетами, предоставляет интерфейс программирования приложений (API). и пр. В сравнительной таблице критерию «Инструменты для разработчика» для Node.jsприсвоено значение «3» потому, что для работы с Node.jsбудет использоваться пакетный менеджер NPM, который также поддерживает работу React.

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

Разработка будет вестись на компьютере с операционной системой Windows 10. Среда разработки исходного кода программы - VisualStudio Code от компании Microsoft.VisualStudioCode позволяет:

- Запускать и отлаживать программу.

- Производить реинжиниринг исходного кода программы.

- Поддерживает автоматическую подстановку кода (технология Intelli Sense codecompletion).

- Поддерживает систему контроля версий (например, Git).

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

Так для комфортной работы с React, были подобраны следующие бесплатные плагины: Bracket Pair Colorizer, Code Spell Checker, DuplicateSelection, Path Intellisense, Auto Rename Tag, CodesnippentsforReact, ESLint, glean, ReactRefactor.

Основная функция приложения для свободного обмена одеждой - возможность найти человека с потребностью обменяться вещами (при этом, важно учесть, что пользователям взаимно должны понравиться вещи, которые им предлагают на обмен). Следует обратить внимание, что действие «Листает ленту товаров других пользователей» означает, что Пользователь 1 либо отметит одежду, как понравившеюся, либо откажется от нее. Отложить или просто посмотреть товар невозможно (см. Рисунок 6). Таким образом, формируются списки понравившихся предметов одежды и там, где есть пересечения между пользователями и товарами, приложение предлагает произвести обмен.