Сегодня мы сделаем обзор на очень обширную тему, касающуюся понятий front-end и back-end, которые относятся к современному корпоративному программированию. В этой статье, по традиции, мы не будем глубоко углубляться в технические составляющие данных понятий, но постараемся получить четкое понимание назначения каждого из них и зону его ответственности.
Итак, каждое веб-приложение можно условно разделить на front-end и back-end составляющую или, иначе говоря, на клиентский и серверный код. В настоящее время в интернете существует достаточно большое количество разнообразных статей на эту тему, поэтому я постараюсь описать только существенную информацию и не буду размышлять о целесообразности применения той или иной платформы, как, например Java или PHP для создания приложения.

Для начала стоит вернуться к началу создания World Wide Web или, другими словами, к прототипу современного интернета. На заре оного, в начале 90-хх годов, веб-приложения были достаточно примитивными, они использовали только статическую разметку гипертекста, то есть текста, который содержит внутри себя ссылки на другие ресурсы и страницы, а также графические файлы, а позже простые звуковые и видео-файлы, которые могли быть встраиваемы посредством таких устаревших технологий, как ActiveX-компоненты. Разметка, в то время, также позволяла создавать графику, и, даже бегущие строки без использования современного подхода, который предполагает использование JavaScript для программирования любого функционала клиентской части. Надо также заметить, что в то время серверная и клиентская часть приложения было понятием весьма условным, так как тогда вставки серверного кода можно было встретить прямо в статической разметке гипертекста HTML, что делало подобные приложения, как сейчас говорят «монолитами».
Более четко понятие разделения клиентской и серверной логики восходит к появлению принципа Ajax (Асинхронный JavaScript) и дальнейшее построение RESTfull-сервисов. Как раз в середине 2000-хх годов широкое распространение получило вынесение HTML и JavaScript кода, который собственно и является клиентским, в отдельные репозитории и сервисы. Это стало возможным с происходящей тогда быстрой популяризацией вышеупомянутых концепций.
Таким образом код, который исполняется на стороне сервера можно назвать back-end-ом приложения. Для выполнения back-end кода требуется интерпретатор или компилятор — программное окружение, устанавливаемое на стороне сервера, которое позволяет преобразовывать исходные коды приложения в выполняемые. В отличие от back-end-а, клиентский, или front-end код, может выполнятся любым современным браузером, поскольку в каждом из них уже содержится встроенный JavaScript-интерпретатор.

Результат выполнения клиентского кода (если мы говорим о веб-приложениях) мы всегда можем увидеть в браузере в виде конечной HTML-разметки, в то время как серверный код, который нередко оперирует личными и секретными ценными данными, такими как пароли, платежные реквизиты и прочее, скрыт от глаз обычного пользователя. Существуют также технологии, которые позволяют шифровать серверный код, что было бы особенно полезно в случае его случайной или преднамеренной утечки.
Почему же существует только один язык для создания front-end-а — JavaScript, в то время как back-end может быть создан на множестве различных платформ. Что же, ответ частично кроется в том, что front-end, в его широком понятие, представляет из себя веб-интерфейс, поэтому когда говорят о front-end специалистах предполагают программистов, которые являются экспертами в JavaScript. Тем не менее front-end может представлять из себя мобильное приложение, которое может обращаться к некоему серверному API. В таком случае front-end может быть написан на отличной технологии. В конечном итоге мы должны понять, что front-end это часть приложения, которая предоставляет пользователю совокупность интерфейсов, механизмы взаимодействия с back-end-ом посредством API и других подходов, таких, например, как Web-сокеты.
Современные разработчики специализируются только на одном из направлений, поскольку они используют разные шаблоны проектирования приложения и требуют разных предметных знаний. Может ли считаться HTML-верстальщик front-end разработчиком? Обычно HTML-верстальщики имеют только базовые знания JavaScript, которые, обычно, не дают решить значительную часть задач, возложенных на front-end разработчика. Создание как современного back-end-а, так и front-end-а требует глубоких фундаментальных знаний и большого практического опыта. Всегда будет дешевле не допустить ту или иную ошибку в процессе разработки, чем исправить ее в дальнейшем, что может повлечь изменение значительной части приложения.
Специалисты Creative Lab имеют опыт решения самых разнообразных задач и помогут вам в создание приложений любого уровня сложности. Больше информации о нас можно получить на главной странице.