@drowzeenico

Grapqhl backend и React native app. Стоит-ли объединять?

Доброго дня. Есть проект проект: бэкенд + мобильное приложение.
Только-только начинается, потому еще не устаканилась архитектура. Backend пишется на Node.js + GraphQL(apollo), фронт - на React Native + Apollo-client.

Выходит так, что типы, используемые в GrqphQL одни и те же, что на бэке, что и на фронте. Тимлид говорит, что стоит два этих проекта пересобрать в один, так как:
  • так как определенные типы GraphQL одни и те же
  • все типы были в одном и том же месте
  • их можно было переиспользовать, не дублируя код (как на бэке, так и во фронте)


Я же, чую не ладное с таким подходом, ведь:
  • это разные проекты и зона их ответственности разная
  • общий код добавляет взаимную зависимость и ломает гибкость
  • на моем опыте не видел такого объединения: везде код дублировался (но то были микросервисы)


Собственно, теперь вопрос: стоит-ли все это собирать в один проект? Надеюсь на адекватную критику и аргументы.
  • Вопрос задан
  • 363 просмотра
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
Нормально вам тимлид говорит, если сделать это грамотно. Single Source Of Truth рулит.

- разные проекты вполне могут оставаться разными проектами используя один и тот же общий для обоих код. Способов это сделать много. монорепа, модуль, реестр схемы например.
- у вас уже взаимная зависимость - общий GraphQL API. Вы вряд ли сможете поменять схему в одном проекте и оставить её старой в другом. Возможность хранить схему отдельно и менять независимо - это не гибкость, это прямая дорога к тоннам проблем и куче потерянного времени. Вас не смущает то что каждый раз меняя схему в одном месте надо обязательно сходить и поменять ее в другом чтобы они были всегда синхронизированы, и если вы этого не сделаете/забудете/опечатаетесь/не так скопипастите то что-то где-то обязательно сломается? Именно в этот момент стоило бы почувствовать что-то неладное.
- если вы не видели чего-то - это не значит что то, чего вы не видели плохо, а то что видели - хорошо.

В общем, делать стоит - главное делать грамотно. Если вы сейчас весь код в одну кучу свалите то конечно ничего хорошего не выйдет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы