No Image

Что легче frontend или backend

СОДЕРЖАНИЕ
4 просмотров
22 января 2020
  • Переводы, 13 апреля 2017 в 19:58
  • Мая Устинова

Вы наверняка уже слышали эти модные в сфере программирования слова «фронтенд» и «бэкенд», но что за ними стоит? Предлагаю в этом разобраться.

Давайте начнем с определений.

Фронтенд — все, что браузер может читать, выводить на экран и / или запускать. То есть это HTML, CSS и JavaScript.

HTML (HyperText Markup Language) говорит браузеру, каково содержание страницы, например, «заголовок», «параграф», «список», «элемент списка».

CSS (Cascading Style Sheets) говорит браузеру, как отображать элементы, например, «после первого параграфа отступ в 20 пикселей» или «весь текст в элементе body должен быть темно-серым и написан шрифтом Verdana».

19 ноября 2019 – 10 января 2020, Гусев и онлайн, беcплатно

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

Бэкенд — все, что работает на сервере, то есть «не в браузере» или «на компьютере, подсоединенном к сети (обычно к Интернету), который отвечает на сообщения от других компьютеров».

Для бэкенда вы можете использовать любые инструменты, доступные на вашем сервере (который, по сути, является просто компьютером, настроенным для ответов на сообщения). Это означает, что вы можете использовать любой универсальный язык программирования: Ruby, PHP, Python, Java, JavaScript / Node, bash. Это также означает, что вы можете использовать системы управления базами данных, такие как MySQL, PostgreSQL, MongoDB, Cassandra, Redis, Memcached.

Структура взаимодействия бэкенда и фронтенда

Сегодня существует несколько основных архитектур, определяющих, как будут взаимодействовать ваши бэкенд и фронтенд.

Серверные приложения

В этом случае HTTP-запросы отправляются напрямую на сервер приложения, а сервер отвечает HTML-страницей.

Между получением запроса и ответом сервер обычно ищет по запросу информацию в базе данных и встраивает ее в шаблон (ERB, Blade, EJS, Handlebars).

Когда страница загружена в браузере, HTML определяет, что будет показано, CSS — как это будет выглядеть, а JS — всякие особые взаимодействия.

Связь с использованием AJAX

Другой тип архитектуры использует для связи AJAX (Asynchronous JavaScript and XML). Это означает, что JavaScript, загруженный в браузере, отправляет HTTP-запрос (XHR, XML HTTP Request) изнутри страницы и (так сложилось исторически) получает XML-ответ. Сейчас для ответов также можно использовать формат JSON.

Это значит, что у вашего сервера должна быть конечная точка, которая отвечает на запросы JSON- или XML-кодом. Два примера протоколов, используемых для этого — REST и SOAP.

Клиентские (одностраничные) приложения

AJAX позволяет вам загружать данные без обновления страницы. Больше всего это используется в таких фреймворках, как Angular и Ember. После сборки такие приложения отправляются в браузер, и любой последующий рендеринг выполняется на стороне клиента (в браузере).

Такой фронтенд общается с бэкендом через HTTP, используя JSON- или XML-ответы.

Универсальные/изоморфные приложения

Некоторые библиотеки и фреймворки, например, React и Ember, позволяют вам исполнять приложения как на сервере, так и в клиенте.

В этом случае для связи фронтенда с бэкендом приложение использует и AJAX, и обрабатываемый на сервере HTML.

Вне фронтенда и бэкенда

Автономный фронтенд

Веб-приложениям, которые вы собираетесь создавать, подключение к Сети будет требоваться всё меньше и меньше.

Прогрессивные веб-приложения загружаются лишь один раз и работают (почти) всегда. Вы можете хранить базу данных в браузере. В некоторых случаях вашим приложениям нужен бэкенд только при первой загрузке, а затем лишь для синхронизации / защиты данных. Такой уровень постоянства означает, что большая часть логики приложения находится непосредственно в клиенте.

Легкий бэкенд

Бэкенд, в свою очередь, становится легче и легче. Такие технологии, как хранилища документов и графовые базы данных, приводят к сокращению количества обращений к бэкенду для повторного агрегирования данных. Задача клиента — уточнить, какие данные ему нужны (базы данных графов), или извлечь все различные фрагменты данных, которые ему нужны (REST API).

Сейчас можно создавать бэкенд-сервисы, которые работают не постоянно, а только тогда, когда они нужны, благодаря бессерверным архитектурам, таким как AWS Lambda.

Размытые границы

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

Каждый из вариантов имеет свои плюсы и минусы. Сервер — среда более стабильная, имеет меньше неизвестных, но ему постоянно нужно подключение к Сети. Некоторые пользователи используют последние версии браузеров, и им выгоднее использовать клиентские приложения, которые и делают большую часть работы, и могут похвастаться красивым интерфейсом, но тогда вы оттолкнёте пользователей, которые не используют новейшие браузеры и высокоскоростное подключение к Интернету.

В любом случае, хорошо, что есть, из чего выбирать. Главное — выбирать именно то, что лучше всего подходит для конкретной задачи. Надеюсь, у вас появилось больше понимания о том, в каком состоянии сегодня находится веб-разработка.

Читайте также:  Фильмы про множественные личности

Рубрика: Технические науки

Дата публикации: 02.10.2016 2016-10-02

Статья просмотрена: 2023 раза

Библиографическое описание:

Когай Г. Д., Амиров А. Ж., Стародубенко Р. В. Кем быть? Front-end? Back-end? Или UX разработчиком? // Молодой ученый. — 2016. — №19. — С. 78-80. — URL https://moluch.ru/archive/123/33937/ (дата обращения: 02.01.2020).

На сегодня веб-разработка развилась и выросла на столько, что программисты давно разделились, на серверных, клиентских, и дизайнеров. Вас наверно интересует вопрос как же так? Раньше все умели делать и дизайн, и клиентскую, и серверную часть — были так сказать универсалами. Но сейчас всё очень сильно поменялось, программисты стали умнее, технологий стало больше, заказчики стали требовательней. Первое и второе как раз вытекает из третьего. Если вы когда-либо разрабатывали веб, не на готовых шаблонизаторах, то вы наверно имели опыт формирования пользовательских страничек на сервере. Да, это проверенных надежный вариант, но он подразумевает перезагрузку страницы полностью. Этим самым лишая страницу всяких вкусностей, связанных с динамичными данными, для глаза. С целью разрешения этой проблемы и были придуманы аякс (ajax) запросы. Но это совсем пустяки, так как с разрастанием проекта клиентская часть в итоге превращалась в бесконечные лабиринты кода в которые программисты просто боялись лезть. Но это не самые большие проблемы для наборщика кода, в дополнение к этому программисту необходимо было знать и уметь работать с графикой, чтоб создавать дизайн. Для маленького сайта это не проблема, но для реального проекта, с красивым дизайном и анимацией, это превращалось в проблему.

Далее в этой статье я постараюсь раскрыть основные преимущества, недостатки, интересные моменты работы в этих областях веб разработки.

Разработка веб проектов по системе front-end и back-end подразумевает иерархическое разделение процесса создания ресурса на две части, на разработку пользовательского интерфейса — (Front-end) и его программно-административной части (Back-end).

Разработка клиентской части (Front-end development) — это работа по созданию публичной части сайта, с которой непосредственно контактирует пользователь и функционал который обычно обыгрывается на клиентской стороне (в браузере).

К аспектам фронтэнд разработки можно отнести создание дизайн-макета сайта, верстку страниц и шаблонов, а также привязку к пользовательскому интерфейсу специальных скриптов, отвечающих за визуализацию и web-анимацию.

Клиентская часть сайта отвечает за вывод определенной информации пользователю и по факту совершения, им, каких-либо действий на странице, интерпретацию ее в вид понятный серверной части.

Разработка серверной части (Back-end development) — это процесс программирования той части веб проекта, которая скрыта от прямого доступа, создание ядра проекта, разработка платформы, наполнение его функционалом, который отвечает за такие базовые вещи как проверка на валидность данных, приходящих на сервер и выходящих с него, безопасность, работа с базой данных — это и есть серверная разработка. Разработка сервера так же включает настройку и установку на сервер необходимого программного обеспечения.

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

– программисты, которые занимаются серверной частью, в основном работают с серверными языками, такими как Java, C#, Python, Ruby и т. д., а также скорее всего они работают базой данных и языком типа SQL. Основное удовольствие — это решать интересные не тривиальные задачи, придумывание алгоритмов, которые бы позволили быстро обработать большое количество данных. По своему опыту скажу, что красота и интерес в цифрах, т. е. обработать больше данных, за меньшее время, или построить какой-нибудь обработчик, конвертер, хранилище, искусственный интелект. В каком-то роде искусство в цифрах.

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

– программисты, которые занимаются визуальным оформлением, как стилисты и визажисты, которые делают макияж для модели. Это уже больше художники потому что работают с палитрами цветов, а также с расположением элементов, на странице. Часто в их арсенале графические редакторы, это довольно-таки творческие люди.

Что нужно знать?

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

Возьмем к примеру серверного программиста. Чтобы покрывать большинство задач в этой области требуется как минимум знать один серверный язык (Java, C#, Ruby, Python и т. д.) также язык для работы с базой SQL (StructedQueryLanguage) или NOSql (NotonlySQL). Это достаточно много чтобы начать реально на этом зарабатывать. Плюс на сегодня в продакшене никто не использует язык программирования в чистом виде, а используют фреймворки, на которые тоже нужно уделять внимание, в среднем от месяца, тщательного изучения.

Читайте также:  Японский авто на воде

Программист, который будет заниматься клиентской частью как минимум должен знать JavaScript на хорошем уровне — это плюс, что для написания модели front-end приложения его достаточно. Этим его возможности не ограничиваются, с 2009 года во всю используется серверная имплементация JS — nodejs. Но чаще всего по мимо JS, front-end программист зачастую правит и разметку, и стили, так что к JS автоматом прибавляются требования по HTML и CSS.

Описанные выше должности также требуют изучение различных архитектур и патернов написания приложения.

В отличие от двух предыдущих программистов программист — UXDesigner редко работает с кодом, скорее с дизайном, программами для рисования, photoshop, различные программы — шаблонизаторы. Возможно иногда применяется CSS и HTML. Такие сотрудники должны быть всегда в тренде популярных методов повышения usability (удобство дизайна).

По итогам исследований, каждая позиция достаточно сложна, и требует времени на подготовку кадра, всё зависит от самого кандидата, имеет ли он опыт в аналогичных сферах, занимался ли он чем-то в школе, кружках и т. д. Но даже новичка можно научить, главное, чтоб было кому учить.

Вопрос: Кому учить?

На этот вопрос нельзя ответить — колледж или университет, потому что там, процесс поставлен на формирование человека как саморазвивающуюся личность. Это значит, что студент должен учится сам. По крайней мере это было замечено в Казахстанских ВУЗах.

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

Как вы думаете почему? А все потому что ВУЗы заточены на получение научных теоретиков, а не реальных практиков.

На самом деле быть программистом практиком очень даже прибыльное дело. Т. к. в мире очень ценятся программисты, которые стремятся делать что-то новое. Их зарплата может доходить до 100 тысяч долларов. Чтобы разбавить эту цифру приведу более-менее реальные цифры, например, Россия:

– программирование 1С — около 60 тысяч;

– пишущий приложения С++ — от 60 до 80 тысяч;

– работающий с PHP — от 30 до 100 тысяч;

– программист JAVA — от 120 до 200 тысяч;

– при основной специализации SQL можно рассчитывать на заработок от 150 тысяч;

– программирование автоматизированных систем управления — от 60 до 70 тысяч;

– системный программист — от 60 до 120 тысяч;

– ведущий специалист компании — от 150 до 600 тысяч в месяц;

– разработчик Flash-приложений может получать от 18 тысяч рублей в месяц.

В Казахстане разделите все на 4–5 и получите реальные зарплаты.

Европа примерно похожа на США.

Не маловажную роль еще играет место работы, если это крупная компания, то велик шанс раскрыть себя, но уровень зарплаты будет зависеть от того как себя покажешь. В маленьких з/п выше, но и ответственность соответственно. Это означает что возможно программист будет вынужден становится универсалом. Например — верстальщик, дизайнером, или front-end’щиком, back-end’щик — front-end’щиком и т. д. По итогам это получается универсал, у которого шире выбор, но как правило этот универсал непрофессионал в узком направлении. За исключением Lead/Cheff developer’ов которые выросли в крупных компаниях, те реально могут быть крутыми универсалами.

QA cпециальности (тестировщики) оплачиваются ниже по сравнению с программистами в среднем в 1.5 раза, т. к. уровень начальных вложений по времени и набору опыта довольно не большой, по сравнению с программистами.

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

1. Back-end с опытом фронтенда — это хорошо
2. Back-end оплачивается больше, сама сфера напорядок больше. У нас в компании разница в senior back/front правда небольшая — в 15-20%
3. Все таки это разные вещи, и творчество проявляешь по разному =)
Back-end это более хардкорная разработка) Для серьезных бородатых дядей) Например результат труда ты своего визуально не подкрепишь) Какая нибудь нетривиально анимированная SVGшка не будет радовать твой взор)
Но зато ты имеешь шанс получить кайф от того что написал какую нибудь автоматизированную интеграцию двух больших баз данных, или запилил нереально крутую архитектуру проекта =)

Читайте также:  Срочно нужно продать ноутбук

В общем на ЗП и условия не смотри — попытайся понять что тебе больше нравится =)
И если нет вариантов работать в текущей компании по интересному тебе направлению, если живешь в достаточно большом городе и выбор есть — то лучше смени место работы)

Это две огромные отрасли и по сути я сейчас стою перед выбором дальнейшего пути! Frontend явно симпатизирует мне больше так как я работаю с этим! По з/п не суть важно, просто хотел узнать большая ли разница! Я просто боюсь ошибиться и потерять время, что в наше время, очень дорогой ресурс!Спасибо за совет.

Как говориться "За двумя зайцами погонишься, ни одного не поймаешь".

Поделюсь интересным наблюдением:
Искали junior разработчиков в количестве 2 штук на саппорт, т.е. нужны люди которые будут развиваться в меру в обоих направлениях (специфика бизнеса).
В анкете был вопрос — что ближе front-end или back-end, в чем хотели бы развиваться больше.
Из порядка 50 рассмотренных кандидатур (заполненных анкет) 48 сказали что им ближе front-end 😀

В большинстве случаев новички всегда предпочитают front-end =)

Всегда не понимал этого разделения на Frontend & Backend. Такое ощущение что php программистам лень изучать js, а хорошие верстальщики научились кодить на js, но им не хочется изучать php (nodejs, java, python, . )

Почему пару лет назад при устройстве в хорошую веб студию ты должен был уметь все!
А теперь как не взглянешь на нового соискателя, так он ни только php толком не знает, но и про html слышал краем уха, не говоря уже об sql.

А по вопросу — оставайтесь в frontend’е. Вашу работу проще показать начальнику, проще похвалиться и попросить повышения зп.

К примеру я ушел на Backend и RESTfull API. В итоге начальник не понимает даже что я делаю. Да, что-то важное. Но мне нечего ему "показать" что бы сказать "вот какой я молодец, дай мне премию или надбавку к зп". Зато JS все счастливые и довольные.

> Такое ощущение что php программистам лень изучать js
За себя отвечу, как раз больше серверный программист. Сам по себе JS не хуже, но и не лучше других языков. Работать на нем приходится мало. Работать на нем можно. Но у меня религия такая — максимально возможно сделать на сервере, прежде чем отдать в браузер. Не люблю зря грузить "клиента". Да и не известно что на нем. На некоторых все будет летать, на других — видно как мееедлено перестраивается DOM. В итоге на JS пишу эпизодически, когда надо сделать то, что не может быть сделано на сервере.

> а хорошие верстальщики научились кодить на js
Увы, не видел таких. Точнее, они думают, что они хорошие. А на деле просто не умеют работать. Единственное что от них требуется — сделать набор статических картин. Оживит их может программист, а серверный это еще и лучше сделать, т.к. не будет заставлять браузер искать по таким селекторам элементы. Когда контролируешь верстку и клиентское программирование становится другим. Не контролируешь сервер — не контролируешь вообще ничего, нет под ногами ничего.

> но им не хочется изучать php (nodejs, java, python, . )
А вот с этим не согласен. Во-первых, вот именно этого вопроса на тостере не было бы. Во-вторых, верстальщики, которых я видел стараются изучать PHP (о других языках просто не спрашивал, моих проектов это не касается). Просто если ты мыслишь визуально, тебе нечего делать в серверном программирование, т.к. на сервере абстракции. Это будет бесполезная ломка своего существа. Большинство людей как раз визуалы. Потому больше программистов на клиентской части, да и начальство понимает (ибо тоже визуалы, абстракции им чужды).

> пару лет назад при устройстве в хорошую веб студию ты должен был уметь все!
на это и сейчас расчитывают

> В итоге начальник не понимает даже что я делаю. Да, что-то важное. Но мне нечего ему "показать" что бы сказать "вот какой я молодец, . "
А вот здесь полностью согласен. Так и есть. И ничего с этим не поделаешь.

> "дай мне премию или надбавку к зп"
А это решаемо. Все равно эту работу надо делать. И там нужна квалификация. Осознание приходит после решения пары сложных в функциональном плане задач. Не приходит — ну его такого заказчика или начальника. Не будет он платить.

Комментировать
4 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев