В 2023 году на Хабр Карьере проходила битва пет-проектов, в которой две команды начинающих IT-специалистов создавали место в интернете, где можно объединяться с единомышленниками и работать над IT-продуктами. Тогда победителем стала команда Sapphire. Казалось бы — цель достигнута, но ребята пошли дальше ииии… 1 июня Sapphire запустили Collabry в публичный доступ.
Не можем не порадоваться и не поддержать ребят, поэтому пообщались с ментором бэкенда обо всех нюансах и о том, что помогло довести проект до конца.
Что за проект? Collabry предназначен для тех, у кого есть идея, но нет команды для её воплощения, или есть желание присоединиться к уже сложившейся команде для работы над крутым проектом. Даже если вы начинающий IT-специалист, помните, что любой пет-проект — всегда большой плюс при поиске первой работы в IT.
О своих ожиданиях от Битвы и о том, как изменился Collabry после финала проекта, рассказал Олег Юрчик, ментор бэкенда Sapphire.
Олег: Вообще мы ожидали, что сделаем крутой проект и сможем реализоваться как сайд-проект Хабра. Эту свою идею мы до самого финала держали в тайне.
Если честно, на старте Битвы не было мыслей о победе, но после первого этапа и презентации оппонентов лично у меня появилось ощущение, что дойти до победы нам будет очень сложно. Даже к концу Битвы не было конечного понимания, кто в итоге победит. Думаю, что из-за того, что мы не знали, как идут дела у соперников, мы просто работали по полной. Вся команда работала как единый организм.
К концу Битвы на сервисе уже можно было искать и создавать проекты, делать заявки и работать с ними, статусами и отправлять уведомления. Что изменилось сейчас?
Во время Битвы мы очень быстро создавали новый функционал, который обговорили с командой ещё на старте, и все силы и время уходили на его реализацию. Но, к сожалению, мы не обдумывали, насколько этот функционал нужен и в каком виде.
В итоге после Битвы мы пересмотрели сервис и решили снизить наши требования к MVP. Мы сохраняем возможность искать и создавать проекты, ведь это его главная функция и ядро, но пока отключили работу с заявками, уведомлениями, статусами проекта и мессенджером. Вместо этого мы направили свои силы на стабилизацию сервиса, на рефакторинг, на работу пользователя с собственным аккаунтом.
Как будет проходить общение пользователей без мессенджера?
Мессенджер — это очень важный и нужный элемент экосистемы сервиса, но на его качественную реализацию может уйти много времени и сил, поэтому на данный момент мы решили вместо собственного решения использовать уже существующие. При этом мессенджер из роадмэпа никуда не пропал и всё равно будет реализован.
Вместо общения во внутреннем мессенджере мы решили дать пользователям возможность обмениваться личными контактами: в Telegram, ВКонтакте или личным сайтом, например.
В каком виде доступен Collabry?
Во время финального питч-дека Битвы мы показывали мобильное браузерное приложение, которое также доступно в формате PWA, то есть его можно установить в виде приложения на мобильный телефон. После Битвы мы уже активно взялись за работу над десктопной веб-версией приложения, которая также может устанавливаться в браузер.
Если не секрет, сколько человек в команде осталось перед релизом?
Не секрет, сейчас нас 8 человек: 1 дизайнер/product owner, 2 фронтендера, 4 бэкендера, 1 тестировщик.
Как появилось название Collabry?
Оно появилось случайно в процессе мозгового штурма. Мы выбирали название всей командой, накидывали различные варианты и голосовали, а остановились на Collabry в основном из-за того, что оно отображает главную цель сервиса — объединение людей, — и не привязывает нас к какому-либо одному продукту.
Кстати, во время мозгового штурма мы чуть не выбрали название InTeam, голосовали по системе премии «Оскар»: каждый создавал свой топ названий, и мы итеративно вычисляли победителя, на каждом цикле выкидывая варианты, которые набрали меньше всего баллов.
Технические детали проекта
Наши сервисы развёрнуты на виртуальных машинах, сейчас мы не используем Kubernetes из-за дороговизны решения. При этом мы готовы к масштабированию и используем docker swarm, с которым можно будет ещё долго находится на VPS, а переехать на большой кластер Kubernetes будет уже не так сложно.
После Битвы мы решили отказаться от микросервисов и снова собрать наше приложение в монолит, но при этом сохранили микросервисную структуру. В данном случае мы вдохновились решением команды-соперника Garnet, а именно Monolith over Microservices, когда приложение собрано в один пакет, но является компиляцией независимых частей кода. В нашем случае мы это реализовали с помощью отдельных Python-пакетов, которые пока что все находятся в одном репозитории и собираются в один Docker-образ. Это позволяет нам снизить расходы на поддержку отдельных сервисов, а также оставляет возможность для манёвра в будущем.
Раньше у каждого сервиса была отдельная база данных. Сейчас мы отказались от этого решения и используем одну общую, это опять же снижает проблемы с распределением доменных областей, что сейчас даётся сложно.
В качестве основной базы данных используется PostgreSQL, для временных данных, кэша и прочего Redis, для маршрутизации трафика — Traefik. Общение между сервисами происходит через Kafka. Добавили сервисы мониторинга: Prometheus, Node Exporter, Grafana.
На бэкенде мы используем Python, FastAPI, Uvicorn, SQLAlchemy, aiokafka, redis, fastapi-prometheus-instrumentator. Вся логика приложения разбита на конкурентно работающие сервисы с помощью facet.
На фронтенде мы используем React и TypeScript, взаимодействие с бэкендом через React Query, клиент для работы с бэкендом генерируется из OpenAPI-формата. В приложении мы используем архитектуру FSD, приложение поставляется как PWA вместе с service worker для установки его в браузер.
Каковы ближайшие перспективы, что хочется сделать и чего ждать пользователям?
У нас реализовано много функционала, который на данный момент недоступен, чтобы не было казусов, чтобы не переусложнить сервис и чтобы понять, куда двигаться дальше. Но пока что в дальнейшем мы хотим подключить мессенджер, систему с заявками/статусами проектов, а также у нас есть планы по созданию отдельного сервиса для простого старта командного пет-проекта.
С радостью и гордостью дублируем ссылку на сервис ребят — Collabry. Кажется, эта история — знак найти свою команду и реализовать проект!
Больше о нас: Хабр Карьера, ВКонтакте, Telegram.