Автоматизация работы лодочных портов от A до Z
Система управления маринами
Компания, являющаяся ведущим поставщиков программных решений для марин в США, обратилась к нам для разработки SaaS системы комплексного управления яхтенными портами и расположенными в них розничными торговыми точками.
Созданное нами решение уже несколько лет используется американскими компаниями, владеющими маринами и являющимися клиентами нашего заказчика. А мы непрерывно модернизируем систему под актуальные запросы рынка и отдельных пользователей.Цель проекта
Ключевая особенность
Решение
Компоненты системы
Back-end Web API + Front-end SPA для управления основным функционалом системы
Дополнительное Front-end SPA для клиентов портов
Web API и десктопное приложение для интеграции с бухгалтерскими системами
Web API для внешних интеграций с нашей системой со стороны агрегаторов
Web API для чековых принтеров
Web API и десктопное приложение для интеграции с системами заправки
Azure Web Jobs для обработки тяжелых задач
Сервисы взаимодействуют между собой по протоколу HTTP или с использованием общей сервисной шины на основе Azure Queues и Azure Service Bus
Технологии реализации
C#, TypeScript, SQL
.NET Framework - ASP.NET MVC. .NET Core + Autofac, FluentMigrator, FluentValidation, Serilog, NUnit
Angular + DevExpress DevExtreme, Bootstrap, Moment.js, rxjs
MSSQL, CosmosDB, Azure Storage, Redis
OData, SignalR, REST
Entity Framework
Azure Queues, Azure Service Bus
Google Maps, Twilio, SendGrid, QuickBooks Desktop, QuickBooks Online, Sage Intacct, Global Payments (OpenEdge), Payment Innovators, FuelDirect, Star Micronics CloudPRNT
Azure App Services, Azure WebJobs, Azure Functions
Стандартный функционал
Управление стоянками
Интеграции с бухгалтерскими системами
Гибкая ролевая модель
Специальный функционал
Карты из Google Maps с возможностью добавления мест
Отслеживание загрузки мест
Личный кабинет пользователя
Решение для розничной торговли
Отчет по смене при ее закрытии
Функционал для самостоятельной заправки топливом
Проектные практики
Заказчик всегда видит текущий статус разработки
Так как нашим заказчиком является компания, занимающаяся разработкой программного обеспечения, с их стороны сразу было выдвинуто требование совместно работать в их системе управления задачами Jira. Таким образом наш клиент мог активно участвовать в процессе разработки, имея доступ к общему плану работ, а также к индивидуальным задачам и их статусам.
Обсуждение задач проводится непосредственно в комментариях в Jira, благодаря чему все решения сохраняются в задачах, и к ним можно обратиться в дальнейшем для уточнения требований.
На пайплайне присутствует особый статус для финальной приемки. Попадая в этот статус, каждая задача проверяется командой заказчика и может считаться завершенной только после подтверждения полной и корректной реализации с их стороны.Прорабатываем требования по базовому видению заказчика
Благодаря тому, что наша команда работает над проектом более 6 лет и разбирается во всех тонкостях системы, мы способны самостоятельно прорабатывать требования для нового функционала или даже целых новых модулей по верхнеуровневому запросу заказчика. Мы самостоятельно анализируем существующие аналоги, прописываем наше видение реализации и обсуждаем его на регулярных созвонах с командой клиента, чтобы итоговый результат в точности соответствовал их ожиданиям. Такая практика позволяет добавлять функционал, не дожидаясь его детальной проработки со стороны клиента.
Все прототипы интерфейса и финальные дизайны согласовываются на еженедельных встречах, чтобы внешний вид системы в точности соответствовал пожеланиям клиента.Возникающие проблемы анализирует архитектор системы
Все обращения в поддержку в первую очередь анализируются тим-лидом команды, который является архитектором системы. Благодаря глубокому пониманию технической части системы и интегрированных сервисов он может быстро выявить причины необычного поведения.
Ответы по обращениям даются в тот же день. В них добавляются причины описанного в обращении поведения системы и возможные решения, а также ссылка на задачу в Jira, в рамках которой будет обработан запрос.
Такие задачи реализуются в первую очередь и не задерживают разработку нового функционала, так как для работы над ними не привлекаются остальные члены команды.Основная техническая сложность проекта
Разработка идет уже около семи лет. За это время было решено множество совершенно разных проблем в реализации системы. В разработке проекта с таким количеством функционала и интеграций на первый план выходит планирование архитектуры.
Помимо основного веб-сервиса, в системе присутствуют отдельные приложения для взаимодействия с облачными и десктопными бухгалтерскими программами, чековыми принтерами, топливозаправочными установками. Нужно было организовать интерфейс между компонентами таким образом, чтобы внезапный рост нагрузки на одни сервисы не отразился на производительности остальных.Статиcтика работы и использования системы
~5500
новых бронирований в месяц
> 9000
пиковое число бронирований за месяц
~13000
пользователей в 105 компаниях
~3 000 000
HTTP-запросов в среднем система обслуживает в сутки
~185
обслуживаемых портов