Чи загально розділяти бек-енд-енд-енд на дві позиції у проектах веб-розробки?


31

Чи частіше під час запуску веб-сторінки інженер працює передньою та задньою частиною функції (в основному відповідає за всю функцію)? Або інженери розділили між задньою та передньою частиною?

Які з них вигідніші та в яких ситуаціях?

Мінус, який я помітив, щодо того, що один інженер керує всією особливістю, полягає в тому, що людина може бути особливо сильною або в розрізі фронтеду, або в задньому плані, але не в обох, таким чином іноді спостерігається зниження швидкості та якості.

Наявність розробників фронтенду та резервного сервісу на одній функції збільшує швидкість роботи та якість І це заохочує співпрацю. Але я стурбований тим, що два інженери працюють над однією функцією, що може погано використовувати ресурси, оскільки 1 інженер може бути розміщений на іншій функції, над якою працювати.

Яка загальна / найкраща практика розподілу ресурсів резервного / фронтального інженерії при невеликому запуску на ранньому етапі? А потім як воно зміниться в міру зростання?

Відповіді:


29

Ось моя мудрість із 14-річного досвіду:

  • якщо у вас стартап, не призначайте ролей. Сподіваюся, що ви зібрали хорошу команду самоорганізації. Якщо всі знають один одного, всі знають, хто робить що найкраще. Керівник проекту буде стояти лише на шляху.
  • пізніше відмінність між передньою та задньою частинами має сенс. На задньому рівні якість є пріоритетною. Код повинен бути надійним, безпечним та безпечним для транзакцій. Зрештою, час реалізації має значення. І ви повинні вміти розраховувати на хороший бек-енд. Різні цілі передньої та задньої частини не працюють добре разом.
  • задній кінець повинен існувати до того, як передній кодер почне працювати. В іншому випадку передній кодер буде занадто сповільнений.
  • бекенд повинен бути в змозі швидко реагувати на вимоги переднього плану, щоб не уповільнити їх

7
+1 заif you have a startup, don't assign roles. Better hope that you assembled a good self organizing team. If everybody knows each other, everybody knows who does what the best.
Qwerky

7
Якість настільки ж важлива і на передній частині.
Флоріан Маргайн

2
Так, якість також важлива в передній частині, але помилка не матиме таких самих наслідків, як помилка в задній частині. Приклад: у бек-енді ви маєте бути безпечними для транзакцій, у передньому кінці ви (сподіваємось) використовуєте безпечний бекенд для транзакцій :-)
rdmueller

4
@Ralf, і якщо 40% ваших користувачів не можуть ініціювати транзакцію через те, що інтерфейс вимикається, то не має значення, чи була б ця транзакція безпечною чи ні. Якість так само важлива на передньому кінці, як і в задньому.
Рахіт

1
@Racheet: можливо, я мав би це висловити по-іншому. Я здогадуюсь, що я хотів сказати, що аспект якості відрізняється. Запуск повинен захищати передній план від певних проблем, таких як безпека транзакцій. Якщо все зроблено правильно, вам просто потрібно піклуватися про трансакції у передній частині, але ви все одно повинні дбати про функціональність, зручність використання, дизайн і т.д. -)
rdmueller

26

Найкраща відповідь - від @Shark, але лише остання частина "Це залежить". На моєму досвіді ~ 16 років або близько того я бачив обидва варіанти, спробувавшись у різних конфігураціях. Будучи самим розробником стеків, ось що я дізнався:

* (BE = Задній кінець, FE = Передній кінець)

Загальні застереження щодо розбиття стека:

  1. Агільна практика розробки (загальна стратегія сьогодні) рекомендує розробку функцій, де ця функція є єдиним цінним патроном функціональності з погляду замовника. З цього погляду ви повинні мати свого розробника впровадити і те, і інше.

  2. Розбиття стека вздовж кордону сервера створює точку інтеграції між двома розробниками. Якщо вони не спілкуються ефективно і не працюють добре, це спричинить велику кількість помилок, коли обидві функції зберуться.

  3. Застосуйте правило n (n-1) / 2 для спілкування з Міфічного чоловіка-місяця, і ви побачите, що функції розділення на дві частини між двома людьми збільшать ваше загальне навантаження. Зазначене правило застосовується і до функцій, але розбиття стека подвоює кількість зв'язку.

  4. Дизайнер вирішить проблеми розробників BE не в змозі виробляти привабливі інтерфейси з нуля. Це передбачає, що вони принаймні знають html & css і можуть створити інтерфейс, який відповідає скріншотам, створеним дизайнером.

  5. Функції - це як правило, окремі компоненти, які дуже мало взаємодіють з іншими функціями. Це не завжди так, але зазвичай точка взаємодії знаходиться на низькому рівні, як база даних або файлова система. Тож не дуже перешкоджає розробник повного стека реалізувати їх функцію. Але якщо розробнику ПЕ доводиться чекати, коли розробник BE завершить завдання, це додасть ще більше затримок поверх втрат продуктивності в пункті 3.

  6. Web2.0 ще більше розмиває різницю між FE & BE. Оскільки рамки MVC і цілі додатки будуються на стороні клієнта, для впровадження захищених та ефективних додатків FE потрібна велика кількість знань BE.

  7. Моя найбільша перевага до цієї практики полягає в тому, що вона обмежує можливості всіх, хто бере участь у проекті. Хоча це було звичайною практикою на початку 2000-х, це було зроблено з необхідності, тому що знайти розробників, які могли би зробити і те, і інше, було досить складно (суто через нове, а не через деякі внутрішні труднощі в навчанні обох.) Що залишається від практики через десять років у нас все ще є "веб-розробники", які не знають CSS.

  8. Моя друга найбільша переконання полягає в тому, що вона може легко сегментувати команду розвитку. Розробник FE створює помилку після зміни коду BE і команда голосує за обмеження розробки крос-стека оптом. Тоді як огляди коду та освіта можуть вирішити проблему, люди натомість стають територіальними.

Переваги / випадки використання розробленого стека:

  1. API RESTful ідеально підходять для цього розмежування, оскільки немає FE. Часто компанія спочатку працює над API RESTful, а потім розробляє свої веб-додатки. У цьому випадку є вагомий випадок для того, щоб команда BE була зосереджена на наступній великій версії, поки ЗЕ закінчує заявку. Але небезпека виникнення пошкодження все ще існує - особливо якщо нова інформація, виявлена ​​у фазі розробки FE, вимагає нетривіальних модифікацій API API.

  2. Незбалансоване навантаження між FE & BE - це також хороший випадок для створення команди, що займається лише FE. Знову ж таки, це дуже ситуативно, коли, можливо, основна розробка робиться через настільний додаток, і компанія намагається розробити «легкий» веб-інтерфейс.

  3. Навчання нових / молодших розробників. Якщо ви наймаєте стажиста чи молодшого розробника і переймаєтесь тим, як кинути їх у поглиблення, це хороший варіант вкласти частину тієї вартості комунікації / інтеграції в систему розвитку однолітків.

Побоювання щодо прийнятої відповіді @ Ralf на цій сторінці:

  1. Перший пункт досить сміливий - він швидко провалиться, якщо у вас не буде однієї з тих "хороших самоорганізуючих команд". Навіть якщо у вас є ця команда, вам потрібно просунути свої межі у ваших інтересах. І хороші команди, що самоорганізуються, не завжди мотивують це.

  2. Ваш другий пункт просто неправильний. Сучасна веб-розробка вимагає коду FE, який є надійним, захищеним, асинхронним, безпечним, захищеним від XSS, крос-браузером та швидко розвивається. Цілі просто не конкурують з BE, вони фактично рівні.

  3. Третій момент також є поганим припущенням - розробка FE може починатися з чистого html / css / js без будь-якої роботи з фундаментом BE. Звідси лише тривіальне зусилля, щоб розбити його на шаблони для візуалізації BE. Найчастіше частіше всього починати з роботи ЗІ, оскільки це дасть зацікавленим сторонам тепле та нечітке відчуття, щоб побачити візуальний прогрес вперед.

Висновок:

Якщо ви стартап, і у вас не трапляється багато часу або грошей, тоді не наймайте FE або BE лише розробників. Наймайте веб-розробників вищого рівня та хорошого ux / дизайнера, і вони якнайшвидше зроблять вашу заявку з місця. Вони коштують дорожче, але вони набагато продуктивніші, і вам буде потрібно менше.


5

Я думаю, що питання неправильне.

Усі стартапи, в яких я брав участь, не мали архітектури FE-BE.

Більшість стартапів, яких я знаю:

  • Core - фактичний продукт, який відкриває інтерфейс
  • UI - BE та FE. BE використовує API Core.

API є без громадянства і легко знущаються - навіть без потреби розробника Core. Пекло, якби мені довелося запускати проект з нуля, я можу почати з цілого інтерфейсу, який працює виключно на макетах - що буде чудово для презентацій. Більшість відгуків відбувається через інтерфейс користувача. Клієнти відзначають, що більше - (залежить від вашої цільової аудиторії.)

Наприклад, у пошуку Google є компонент Core, який сканує Інтернет, індексує його тощо., А інтерфейс Google - це зовсім інший світ. Це ядро ​​може легко підтримувати не WWW-пошуки, тоді як інтерфейс не може.

Таким чином, ваш інтерфейс користувача "підключається", і у вас є проблеми.

Ви посилалися на знання з розробки, однак ви не помічаєте аспектів управління проектами. У той час як основній команді може знадобитися тривалість спринту на 2 тижні, команда інтерфейсу використовуватиме CI - все завантажується постійно. Команді Core потрібна буде зворотна сумісність, тоді як інтерфейс користувача не буде.

Мова відрізняється. Напевно, ви хочете розробників C для компонента Core - і ви будете добре, якщо він працює на одній ОС, де як інтерфейс буде записаний мовою Cross OS.

Тести відрізняються. Світ тестів на користувальницький інтерфейс - один із найскладніших, які я знаю у розробці програмного забезпечення. Більшість стартапів нехтують нею і згодом шкодують про це рішення. Ви не можете розділяти BE та FE під час тестування. Це повинен бути єдиний блок, який обробляє його.

Інтерфейс з відкритим кодом - одна з найбільших переваг їх розділення - це те, що ви можете відкрити вихідний інтерфейс. Проект UI потребує підтримки з відкритим кодом.

Я не можу уявити розробника інтерфейсу, який не може зрозуміти всю session функцію. Ви знаєте - де ви входите та залишаєтесь увійти між різними запитами. Щоправда, вони можуть знати PHP, а не Java .. але концепція BE повинна бути чіткою (наприклад, використовувати зашифроване cookie). Конкретний мовний бар'єр невірний - кожен розробник повинен бути готовий працювати будь-якою мовою. Хто б міг подумати, що вони напишуть BE в JavaScript пару років тому?

Якщо у вас три команди: Core, BE та FE, це марно витрачаючи ресурси. Що з БД? ви повинні мати DBA? Чому розробник BE повинен знати DB, а розробник FE не повинен знати BE та DB? Межі немає.

Якщо вам потрібні фахівці, і ви, їх аутсорсинг працює досить добре. Зазвичай вони доставляють якісний код і роблять це досить швидко. Ви не обов'язково хочете, щоб вони були вдома, тому що ви загубитесь, якщо вони поїдуть. Крім того, сьогодні ви можете отримати чудові поради онлайн. Передові речі можуть вимагати іншого підходу.

Таким чином, результат - це дуже тонкий BE в інтерфейсі, який може розробляти кожен розробник ЗП. Якщо у інтерфейсі у вас є товстий BE, швидше за все, у Core є певна функціональність API.

Завжди є хоча б один розробник, який виділяється з решти. Враховуючи такий тонкий ЗР, він / вона може керувати наданням (а не розробкою) інших розробників у коді BE. На мою думку, цей розробник перебуває у дуже хорошому становищі і його слід присвоювати належним чином (не заробітною платою, а щось іншим). Я також вірю, що вони зможуть справлятися з процесами збирання та належним чином будувати.

Ця модель дає велику гнучкість щодо розвитку BE. Світ БЕ знав кілька поворотів за останні пару років, тому я не рекомендую занадто сильно покладатися на стабільність BE. Core - це інша історія.

Все ще залишається питання - чи повинні FE та BE бути одним і тим же проектом ? Слід зазначити наступне

  • Статичні ресурси найкраще обслуговуються з переднього сервера. Оскільки сервери Front-End (наприклад, nginx) дуже потужні і оскільки ви можете використовувати кеш для статичних ресурсів, ви можете керувати за допомогою одного розгортання своїх статичних ресурсів (у якому має бути весь вміст HTML, JS, CSS, зображення).
  • Резервний код не має однакової розкоші, тому у вас повинна бути розподілена система - якою також керує фронт-сервер.
  • FE-код сильно використовувати для використання нових технологій, що підтримують JavaScript. Тепер ви можете писати настільні та мобільні програми за допомогою JavaScript.
  • Процес збирання зовсім інший - він може включати навіть доставку патчів, оновлення, встановлення тощо.

Я можу продовжувати, але сподіваюся, що зрозуміло, що я думаю, що BE та FE повинні бути однією командою, але, можливо, різні проекти.


0

Я думаю, що успішна реалізація може бути декількома речами. Якщо є єдиний розробник, який має потужну програму, але також має гідне розуміння користувальницького інтерфейсу та всіх "передніх" частин, то це, ймовірно, може бути успішним. Це, як правило, не так (на моєму особистому досвіді). Наприклад, я вважаю себе бек-розробником. Але я працюю над багатьма проектами самостійно. Чи я працюю над презентацією та на стороні клієнта? Звичайно. Вони виглядають так добре, як справжній талановитий дизайнер та розробник на стороні клієнта? Абсолютно не.

Це все дають і беруть. Але не дозволяйте співпраці двох розробників змусити вас вагатися. Існують перевірені і справжні способи максимізації виробництва між розробником та дизайнером.

Іншими словами ... Це залежить

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.