Разработка: что должно быть впереди фронтэнд или бекенд?

Разрабатываем веб-проект со сложной логикой как на клиенте, так и на бекенде. Постоянно возникает вопрос как формировать нагрузку: разрабатывать так, чтобы бекенд часть была всегда готова под текущие задачи фронтэнда или наоборот, фронтэнд разрабатывается на фейковых данных(т.е. данные на основе обговоренного API), а бекенд делается параллельно?
  • Вопрос задан
  • 4157 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Все, что написал Сергей Протько - несомненно верно, но несколько абстрактно.
Отвечу конкретно на вопрос.
После создания схемы взаимодействия всех блоков, выделяется отдельно 3 части:
1. Клиентская часть
2. Серверная часть
3. "Труба": от момента "это нужно передать" до момента "получены вот эти данные".
Т.е. к "трубе" относится: API, протокол передачи, сжатие/шифрование данных, организация защищенного канала передачи и т.д.
Вот, вначале описываем (документируем) "трубу" и создаём "заглушки" для проверки взаимодействия между клиентом и сервером: т.е. подготавливаем некий тест-кейс на статичных, заранее известных эталонных данных, для дальнейшей отладки формирования и передачи данных со стороны как клиента, так и сервера.
Т.е., после того, как обе проверочных "заглушки" (генератор запросов тест-кейса и генератор ответов тест-кейса) будут готовы - можно приступать к параллельной разработке клиента и сервера, добавляя в контрольный тест-кейс нужные запросы/ответы по мере необходимости.
После того, как клиент и сервер по-отдельности будут корректно работать с "заглушками" - можно их связывать напрямую между собой (убрав временно или совсем и навсегда заглушки из схемы взаимодействия).
PS: пример "клиента-заглушки":
3bede94653f647b78068b66e1b37634e.jpg
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
В идеале второй вариант, если это возможно.

Скажем я на своих проектах пытаюсь делать так насколько это возможно. Перед началом разработки какой-то фичи разработчики просто договариваются между собой как будет организовано взаимодействие с сервером (по сути пишется описание API на каком api blueprint, сейчас будем переходить на raml).

После чего из этого описания разработчик серверной части может спокойно генерить себе тесты, json схемы респонсов и т.д. что бы быть уверенным что он делает так как договаривались, а мобильщики могут поднять себе из описания mock сервер.

Таким образом какие-то проблемы с серверным взаимодействием можно отловить задолго до того как разработчики в принципе реализуют эту часть api. Хотя если разработчики не используют какие-то средства для валидации реализации на предмет соответствию описанию, то в итоге на интеграцию может уйти больше времени.

p.s. этот подход я форсирую еще и потому, что при таком варианте можно легко наладить кодогенерацию как для клиента так и для бэкэнда. Скажем валидация запросов, маршрутизация, мэппинги и т.д. - все можно сгенерировать. RAML в этом плане дает из всех форматов максимальную гибкость, и поэтому я и планирую на него переходить. В очень простых случаях можно сгенерировать код хоть всего бэкэнда, но и так в целом скорость разработки неслабо увеличивается.
Ответ написан
@VDoskuSvoi
Во время разработки фронтенда тебе начинают быть видными коррективы которые нужно внести. Во время разработки бекэнда ты создаешь основу, чтобы можно было фронтенд опробовать.
У нас так: делаем ядро бекенда, чтобы можно было начерно сделать фронтенд. Потом подтачиваем бекенд. И так по кругу
Ответ написан
Комментировать
jaxtr
@jaxtr
JavaEE/Spring-разработчик
ИМХО, при разработке бекенд и фронтенд не должны зависеть друг от друга. Если используется итеративный подход к разработке, то перед началом очередной итерации проводится всеобщая планёрка, на которой обсуждается, что и как должно быть реализовано в рамках итерации. Результатом должен быть некий протокол, который согласует действия фронтенд-разработчиков и бекенд-разработчиков. Информации в протоколе должно быть достаточно для того, чтобы не возникало вопросов на тему "Что, как и с чем должно взаимодействовать". Например, при разработке веб-приложения, где есть набор Rest-сервисов и HTML/JS-фронтенд, должны оговариваться эндпоинты сервисов, их возможное поведение, включая HTTP-коды, описание классов сущностей, и т.д.
И тут да, фронтенд и бекенд разрабатываются на основе фейковых данных. Если всё организовано правильно, такой подход не будет давать осечек.
Ответ написан
Комментировать
@unkwua Автор вопроса
Подводя итоги хочется отметить еще 1 момент, общался со знакомым человеком на эту тему который работал в Яндексе, он сказал, что у них однозначно бекенд на 2 недели в среднем идет впереди фронтэнда, вариант когда бекенд делается параллельно это типо удел нищих контор. Интересные вообщем мнения :)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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