Сооснователь первого в Беларуси сервиса онлайн-печати uprint.by Сергей Аксёнцев делится с читателями dev.by опытом создания продукта.
Идея
— Как-то в период подготовки к защите диплома, проведя в очереди за распечаткой по два часа, мы с Сергеем Котугиным решили больше не терять время и поискать онлайн-сервисы. Пункты печати, принимавшие заказы по e-mail, были. Однако алгоритм их работы всё равно предполагал звонок от оператора и необходимость самостоятельно забирать заказ. Нам же хотелось, чтобы заказ отправлялся без дополнительных подтверждений в офлайне, а забирать распечатанные работы можно было без очереди прямо в университете. В этом и заключается идея uprint.by.
Ранее мы уже работали вместе, поэтому решения научились принимать довольно быстро. Так и пошёл процесс создания сервиса.
Цели и задачи
Мы посчитали, что во время сессий и защиты дипломных работ студенты печатают довольно внушительные объёмы документов. Поэтому изначально планировали создать свой пункт печати с удобным сервисом приёма заказов. Камнем преткновения стало помещение. Ничего подходящего мы так и не нашли: либо не очень удобное расположение, либо немыслимая арендная плата.
Тогда мы решили пойти другим путём — подключать к сервису уже существующие пункты печати с удобным для студентов расположением.
Конкуренты
В Беларуси аналогов сервиса не существует. Не нашли подобного и за рубежом. Схожая модель работы, только в другой сфере, у Uber, но узнали мы об этом уже после создания сервиса.
Планирование и разработка
Сперва подумали, какой функционал необходим для первой версии, составили техническое задание и начали разработку. Параллельно с этим начали процесс регистрации юридического лица — без этого невозможно принимать платежи онлайн.
Для разработки выбрали фреймворк ASP.NET MVC 5. Использование готовой CMS не рассматривалась, так как решалась абсолютно новая задача. Язык программирования — C#.
В основу положена сервисно-ориентированная архитектура, поскольку программное обеспечения состоит из набора различных приложений (веб-клиент для заказов, менеджмент-инструмент для операторов, инструмент для работников uprint). Доступ к базе — только через сервис. Работа с базой организована по методике Code First. База — MSSQL.
Разработка ведётся с использованием системы управления задачами и проектами Jira. Работаем по Scrum. Длина итерации — месяц. Пока этого достаточно, так как нового функционала немного.
Система контроля версий — SVN.
Работа с платёжными системами организована на стороне сервиса. Сервисы WCF — как наиболее быстрый и простой способ организации коммуникации между веб-приложениями и единой точкой доступа к базе и логике.
В создании сервиса принимали участие пять человек: два фронтенд- и один бэкенд-разработчик, два тестировщика.
Сами работали над проектом в свободное время, сторонних участников привлекали за плату. В целом, разработка заняла примерно 305 человеко-часов (с учётом тестов). Финансовые расходы составили +/- 1000 долларов. Опять же, с учётом того, что своё время мы не оплачивали.
Сложности
В ходе разработки uprint.by мы испытывали ряд сложностей при подключении платёжных систем.
Во-первых, как оказалось, все они работают с чистым xml. Потому нам пришлось перенастраивать конкретные сервисы для работы с plain xml и обработки таких сообщений.
Во-вторых, для работы с белорусскими платёжными системами отсутствуют готовые библиотеки — предоставляется только руководство. В наших планах — выложить в общий доступ библиотеки, что, надеемся, сбережёт время другим разработчикам.
Помимо этого, Нацбанк, договор с которым необходим для подключения к системе ЕРИП, не понимал, чем мы вообще занимаемся и требовал от нас лицензии. Пришлось подготовить длинный ответ с цитатами из указов президента, после чего процесс пошёл дальше.
При подключении функции оплаты за услугу напрямую с карточки было сложно найти банк, который согласиться работать с небольшими транзакциями. Несколько раз переделывали документы для подачи в разные банки. Но этот метод оплаты самый удобный и он стоил упорства и настойчивости.
Поскольку сегодня используется множество форматов для документов, а обеспечить печать их всех — процесс трудоёмкий, мы предприняли попытку автоматической конвертации всех файлов в PDF, с которого и должна происходить печать. На данном этапе, она не увенчалась успехом, так как не нашлось инструмента, способного идеально конвертировать хотя бы файлы docx (встроенный в MS Word конвертер тоже даёт сбои).
В плане бизнес-стратегии мы выбрали, как оказалось, неверный подход. Подключение пунктов печати начали с родного БГУИРа. Там всё прошло относительно гладко. Поэтому решили сначала подключить все крупные вузы столицы, после чего расширяться дальше. Однако там пришлось столкнуться с железобетонной стеной бюрократии и отсутствием заинтересованности. Даже если представители учебных заведений говорят, что готовы поддержать идею, процесс идёт очень медленно. Сказывается необходимость согласования каждого действия с многочисленными чиновниками и отсутствие прямой личной заинтересованности.
Да, этот сервис сделает лучше вузу, но его конкретному работнику вряд ли принесёт дивиденды. А давать взятки мы не умеем да и не хотим учиться.
Поэтому, оглядываясь назад, нужно было сразу обращаться к частным пунктам печати — там и быстрый выход на владельца, и заинтересованность в улучшении сервиса имеется.
Итоги
В процессе работы был создан автоматический режим печати, при котором принтеры выполняют заказы без участия операторов. Для этого было разработано серверное ПО.
Сервис также использует систему смс-оповещения пользователей — Rocket SMS оказался лёгок в подключении, поскольку использует WebApi.
Важной задачей была реализация системы валидации файлов. То есть на обработку не должен попасть файл не соответствующего формата. Например, попытка загрузить файл с расширением .exe под видом .docx. Для этого мы внедрили проверку первых 16 битов в файле, в ходе которой производится побитовое сравнение с байтами, заявленными в спецификации формата.
В процессе работы мы полностью изменили интерфейс сайта, сделав его одностраничным, пошаговым и более приятным.
В целом, мы создали работающий сервис, которым уже с удовольствием пользуются минчане. На данный момент зафиксировано около 250 заказов со средним чеком около 15 тысяч рублей.
Те, кто один раз воспользовался нашим сервисом, продолжают печатать документы через него. Потому основная проблема сегодня — это научить людей пользоваться сервисом, донести до них, что это удобно.
Цена на печать через uprint.by не отличается от офлайн-печати в том же пункте. Наш коммерческий интерес — процент прибыли от клиентов, которые пришли через сервис. Он оговаривается отдельно с каждым пунктом печати.
Перспективы
Чтобы сервис начал приносить стабильную прибыль, необходимо сделать две вещи: расширить территориальный охват (подключить максимальное количество пунктов печати) и научить людей пользоваться онлайн-заказами.
В планах — развить сервис во всех областных центрах Беларуси, то есть максимально расширить территориальное покрытие сервиса. Также планируем сделать его в основном автоматическим, чтобы максимально уменьшить человеческий фактор и увеличить производительность.
Для читателей dev.by, желающих протестировать работу сервиса, предлагаем промо-код «fromdevby», который будет работать некоторое время после выхода статьи и позволит распечатать пять страниц формата A4 бесплатно.
Полезные ссылки
- ASP.NET MVC 5
- Code First
- Jira
- WCF
- Rocket SMS
- Список первых 16 байтов различных форматов файлов
- Список форматов
- Aspose
А как ВЫ это сделалиХотите вынести ваш продукт на суд наших читателей? Пишите на editor at dev.by.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.