Делегирование обязанностей между Frontend и Backend разработчиками, на чьей стороне должна выполняться та или иная работа (Подробнее в деталях)?

Ссылка скопирована
2 ответов

Например, у нас есть канбан, который имеет определенное количество колонок, допустим 5.
У каждой колонки есть свое название.
На канбане будут находиться таски (за пример можно взять джиру).
Каждый таск должен лежать в определенной колонке.

Есть два варианта распределения работы между фронтенд и бэкэнд:

1) Отдается массив данных с уже распределенными по колонкам тасками, фронтенд-разработчику остается только отрендерить данные. В таком случае придется структурировать данные полученные с БД на стороне сервера.

2) Отдается просто массив тасок, каждая из которых в своей структуре имеет категорию(название) колонки. Фронтенд-разработчик самостоятельно преобразует данные в нужный вид, то есть разкидывает таски по колонкам и затем рендерит. В таком случае сервера не напрягаясь просто отдает нам информацию, взятую из БД.

То же касается и функциональности сортировки, фильтрации, поиска и так далее.
Есть ли смысл делать это все на сервере?
Поясняю: на клиенте все это можно сделать в разы быстрее, приложение будет отвечать моментально, чем если мы будет делать запрос на сервер при каждом действии.

Как правильно разделить обязанности между фронтенд и бэкэнд разработчиками в 2022 году?
Хотелось бы получить аргументацию и развернутые ответы, а не просто "это должен делать сервер, или это должен делать фронтенд". Можно привести в пример другие кейсы, необязательно опираться на описанные мной выше.
Заранее спасибо!

Дополнительно:

Данные отдельно, мухи отображение отдельно.

Бэк отдаёт данные. Как их рисовать – задача фронта.

Так одни и те же методы стандартного и хорошо документированного API будут достаточны для любого клиента: web, мобилки, бота в мессенжере.

P.S. разумеется, бэк не отдаёт 100 тыс. записей. Фильтрует и бьёт на страницы, отдаёт, например, 10 результатов – JSON массив с 10 объектами и инфой сколько там всего, какая сейчас страница и т.п.

  • Сергей Соколов, спасибо за дельный ответ! А что по поводу фильтрации, сортировки и поиска? Есть ли смысл делать это все исключительно на сервере или есть кейсы, когда это лучше делать на стороне клиента?
  • Артур Волохин, здравый смысл никто не отменял. Сравните:
    1. выбор города. Городов в БД многовато - со всего мира. Autocomplete – человек вбивает начало – запрос на бэк, возвращает уже приемлемо недлинный список кандидатов.
    2. список возможных половых принадлежностей в анкете. Два варианта можно целиком держать на фронте hard-coded. При переезде в Европу добавить ещё пару вариантов для соответствия местному законодательству.

    Главный критерий – не минимизировать работу одного иливторого разработчика : ) Наверное, всё же ускорить работу (учитывая, что связь априори «медленная»), оптимизировать нагрузку (клиент может быть устаревший телефон с забитой памятью).

  • Ответы:

    Как правильно разделить обязанности между фронтенд и бэкэнд разработчиками в 2022 году?

    Сделать декомпозицию всего проекта в несколько интераций, далее правильно его структурировать и спроектировать архитектуру, которая будет решать поставленные перед проектом задачи и соответствовать его требованиям. Архитектуру разрабатывает/разрабатывают архитектор и/или тим- и тех- лиды. И вот когда на руках будет исчерпывающее ТЗ со всеми деталями - на этом этапе тимлид и прожект-менеджер создают задачи для фронт-энда и для бэкэнда. При этом, выставляются взаимосвязи и блокировки задач: например, "список пользователей в админке" для фронта, зависит от "базовое API для управления пользователями" для бэка, если задача для фронта требует каких-то дополнительных точек API - просто создается подзадача для бэка типа "поиск пользователя по всем полям учетной записи". И такие подзадачи не просто могут быть, они однозначно будут и надо просто учитывать этот момент.

    То же касается и функциональности сортировки, фильтрации, поиска и так далее.
    Есть ли смысл делать это все на сервере?

    Конкретная реализация зависит от задач. Если данных мало и их можно быстро передать - то да, удобнее на клиенте обрабатывать, если данных много - то на сервере, при этом сделать кэш и группировку для горячих данных для ускорения. Приведу реальный пример из практики (тыц): была задача сбора и отображения статистики использования десятки терминальных серверов на нескольких сотен пользователей. От каждого активного пользователя по несколько сотен точек в день, десяток машин. И для каждой машины и для каждого пользователя надо было сделать график и чтобы все это можно было быстро и удобно просмотреть. Десятки и сотни мегабайт данных - сотни тысяч точек за несколько месяцев. На одной странице. Все данные хранятся в БД, горячие данные - в кэше памяти, аппроксимация точек для разных периодов времени за 3 месяца, быстрые фильтры для получения данных для построения графика с нужной точностью за выбранный период. Т.е., фронт говорит "дай данные за такой-то период для такого-то сервера/пользователя" - бэк быстро фильтрует нужное среди нескольких сотен мегабайт данных и отдает от нескольких десятков до нескольких сотен КБ.

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Роман IT Ответ

    Делегирование обязанностей между Frontend и Backend разработчиками - это важный аспект в разработке веб-приложений. Определение того, на чьей стороне должна выполняться та или иная работа, зависит от конкретной задачи и требований проекта.

    Frontend разработчики отвечают за создание пользовательского интерфейса, визуальное оформление и интерактивность веб-приложения. Они работают с HTML, CSS и JavaScript для создания клиентской части приложения. Frontend разработчики отвечают за отображение данных на странице, взаимодействие с пользователем и адаптивность интерфейса под разные устройства.

    Backend разработчики отвечают за серверную часть приложения, обработку данных, выполнение бизнес-логики и взаимодействие с базой данных. Они работают с различными языками программирования, такими как PHP, Python, Java, Node.js и другими, для создания серверной логики приложения.

    При делегировании обязанностей между Frontend и Backend разработчиками, важно учитывать следующие аспекты:

    1. Разделение задач по специализации: Frontend разработчики занимаются визуальной частью приложения, а Backend разработчики - логикой и данными.

    2. Эффективное взаимодействие: коммуникация между Frontend и Backend разработчиками должна быть прозрачной и эффективной, чтобы избежать конфликтов и ускорить процесс разработки.

    3. Оптимизация производительности: определение того, на чьей стороне должна выполняться та или иная работа, может повлиять на производительность приложения. Например, выполнение сложных вычислений лучше делегировать на серверную сторону.

    4. Безопасность данных: защита данных и обеспечение безопасности приложения также являются важными аспектами, которые должны учитываться при делегировании обязанностей.

    Пример использования PHP на Backend для выполнения сложных вычислений:

    function calculateSum($a, $b) {
        return $a + $b;
    }
     
    $sum = calculateSum(5, 3);
    echo $sum; // Output: 8

    function calculateSum($a, $b) { return $a + $b; } $sum = calculateSum(5, 3); echo $sum; // Output: 8

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

    Другие ответы (1) Ответить на вопрос
    Антон С.

    Делегирование обязанностей между Frontend и Backend разработчиками - это очень важный аспект в процессе создания веб-приложений. Обычно, Frontend разработчики занимаются созданием пользовательского интерфейса (UI), визуального оформления и взаимодействия пользователя с приложением на стороне клиента, а Backend разработчики отвечают за серверную часть приложения, обработку данных, взаимодействие с базой данных и бизнес-логику.

    Однако, в реальности границы между Frontend и Backend часто размыты, и может возникнуть вопрос, на чьей стороне должна выполняться та или иная работа. Во многих случаях, правильное делегирование обязанностей помогает улучшить производительность, безопасность и общую архитектуру приложения.

    Например, если речь идет о валидации данных, то обычно Frontend разработчики занимаются валидацией на стороне клиента, чтобы обеспечить быструю обратную связь с пользователем и улучшить пользовательский опыт. Однако, Backend разработчики также должны проводить валидацию данных на стороне сервера, чтобы обеспечить безопасность и защиту от возможных атак.

    Если речь идет о обработке больших объемов данных или сложных вычислений, то лучше всего делегировать эту работу Backend разработчикам, так как сервер имеет более мощные вычислительные ресурсы. Frontend разработчики, в свою очередь, могут заниматься отображением результатов вычислений и взаимодействием с пользователем.

    Таким образом, правильное делегирование обязанностей между Frontend и Backend разработчиками зависит от конкретной задачи, требований к производительности, безопасности и пользовательского опыта. Важно иметь четкое понимание ролей каждого участника команды и эффективно сотрудничать для достижения общей цели - создания качественного и функционального веб-приложения.

    // Пример кода на PHP для валидации данных на стороне сервера
    if(isset($_POST['submit'])){
        $name = $_POST['name'];
        $email = $_POST['email'];
     
        if(empty($name) || empty($email)){
            echo "Пожалуйста, заполните все поля";
        } else {
            // Дополнительная проверка данных и сохранение в базу данных
        }
    }

    // Пример кода на PHP для валидации данных на стороне сервера if(isset($_POST['submit'])){ $name = $_POST['name']; $email = $_POST['email']; if(empty($name) || empty($email)){ echo "Пожалуйста, заполните все поля"; } else { // Дополнительная проверка данных и сохранение в базу данных } }

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно