Приложение для вызова такси, разработанное на основе архитектуры микросервисов

Услуги разработки на Java помогают повысить функциональность приложения и не позволяют ему стать со временем перегруженным.

Задача

Клиент хотел заказать приложение по работе сервиса такси. Одним из требований было сделать продукт межплатформенным, т.е. он должен работать как в виде приложения для смартфона, так и как веб-приложение. Для этого нужно было разработать стандартный функционал:

  • Заказ такси.
  • Отслеживание машины.
  • Совершение платежа.
  • Получение уведомления.
  • Комментирование.

Подход

На этапе анализа команда разработчиков СКЭНД разложила задание на составные части и выделила такие основные компоненты как:

  • Управление пассажирами.
  • Управление водителями.
  • Управление поездками.
  • Диспетчер.
  • Оплата.
  • Уведомления.
  • Выставление счета.

Каждый из компонентов имеет свои четкие границы, и идеально подходит для выстраивания структуры независимых микросервисов. Цель пассажирского сервиса – хранить/обновлять данные о пассажирах. Сервис, занимающийся управлением поездками, отвечает за создание/обработку информации о поездках. Компонент «Оплата» отвечает за выставление счета и получение оплаты в конце поездки. Пользовательский интерфейс для браузера и смартфона был выделен в отдельный микросервис. Процесс разработки был построен таким образом, что выделенная команда работала над одним сервисом, фокусируясь на теме и приобретая ключевые навыки, связанные с сервисом. Команды прилагали максимум усилий для того, чтобы все требования заказчика были учтены и выстроился надежный архитектурный шаблон микросервисов.

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

Большинство сервисов использовали REST как механизм межпроцессного взаимодействия на синхронном уровне «запрос/ответ», и JSON как формат сообщений. Например, микросервис «Управление поездкой» таким образом, запрашивал у пассажирского сервиса подтверждение активности аккаунта пользователя при помощи вышеприведенного механизма.

В процессе создания новой поездки между сервисами «Управление поездкой» и «Логистика» взаимодействие происходило асинхронным способом (по принципу “издатель-подписчик”). Сервис «Логистика» отвечал за поиск свободных водителей. Вышеописанное взаимодействие было реализовано с помощью Apache Kafka, системой сообщений с Java клиентом.

Для построения части сервисов была использована технология Grails 3, это мощная среда разработки для JVM на базе языка Groovy. Данная технология обладает большим потенциалом для создания микросервисов, так как предоставляет механизмы создания REST API, интерпретации JSON и отправки HTTP запросов с помощью RestBuilder.

Язык Groovy, добавляющий синтаксический сахар поверх среды программирования Java, значительно облегчил процесс разработки. Благодаря этому, разработчики концентрировались на реализации бизнес логики, а не тратили большую часть времени на написание шаблонного кода. Тем не менее, для написания сервисов с высокими требованиями к производительности использовался язык Java и библиотека Spring Boot.

Клиентское приложение (браузер или на смартфоне) отправляет запросы к сервисам не напрямую, а только через API Gateway. Для обеспечения обработки большого количества запросов одновременно, API Gateway был реализован с помощью RxJava.

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

Результат

Высокоэффективное и легко настраиваемое межплатформенное приложение.

Команда СКЭНД построила микросервсисы на базе Java-экосистемы. Основываясь на создании микросервисной архитектуры, было разработано высокоэффективное и легко настраиваемое межплатформенное приложение. Интерфейс приложения легко адаптируется как под смартфон, так и под десктопное использование. Микросервисы разработанные на Java, помогают улучшить работоспособность приложения и гарантируют более длительный срок его работы.

Нуждаетесь в разработке похожего проекта?

Свяжитесь с нами

Мы любим новые проекты! Напишите нам, и мы ответим вам в ближайшее время.

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