Во всем и во всех есть две стороны: черная и белая.
Важно лишь то, какую сторону выбрал ты.
Это определяет все. © Гарри Поттер — Кубок Огня.
Вы наверняка уже слышали эти модные в сфере программирования слова «фронтенд» и «бэкенд», но что за ними стоит? КЭП сообщает, что фронтенд и бэкенд чаще употребляются в сфере веб-приложений, но это далеко не всегда так. Предлагаю в этом разобраться.
Давайте начнем с определений.
Фронтенд — все, что браузер может читать, выводить на экран и/или запускать. Что касается веб-приложений, то это HTML, CSS, JavaScript и фреймворки на их основе.
Сфера ответственности фронтенд-разработчика охватывает создание пользовательского интерфейса, что в свою очередь подразумевает некоторую иерархию. Это дизайн макета, верстка, адаптация. Важной частью разработки веб-приложения является UI/UX дизайн — то, что в наибольшей степени влияет на первое впечатление пользователя. В эпоху современных веб-приложений, в подавляющем большинстве реализующих некоторую бизнес-логику, их поведение не менее важно, чем внешний вид.
Как фронтенд-разработчик смотрит на бэкенд 🙂
Конечно же, кроме веб-приложений, фронтенд есть и в мобильных приложениях и десктопных.
Бэкенд — все, что работает на сервере, то есть «не в браузере» или «на компьютере, подсоединенном к сети, который отвечает на сообщения от других компьютеров». Бэкенд — это серверная логика веб-приложения. Здесь реализуется работа с хранилищем данных, поэтому человек, занимающийся разработкой серверной логики, должен иметь навыки работы с базами данных. Именно от бэкенд-разработчика зависит производительность серверного кода, его масштабируемость, безопасность и рациональность.
Бэкенд отвечает на запросы
Помимо серверной логики в сферу ответственности бэкенд-разработчика входит отладка и прототипирование с использованием клиентской части приложения. Это влечет за собой необходимость понимания работы стека протоколов TCP/IP, HTTP, REST/SOAP, принципов взаимодействия браузера с веб-приложением.
Для бэкенда неважно, откуда пришел запрос — от браузера, мобильного приложения или любого другого устройства, главное — соответствие интерфейсу и протоколу. Если эти условия соблюдаются, что то запрос будет обработан и выдан результат.
Для бэкенда вы можете использовать любые инструменты, доступные на вашем сервере. Это означает, что вы можете использовать любой универсальный язык программирования: Java, PHP, Ruby, Python, JavaScript/Node, bash и т.д. Это также означает, что вы можете использовать любые системы управления базами данных, такие как Oracle, MySQL, PostgreSQL, MongoDB, Cassandra, Redis, Memcached и т.д.
Настоящий программист способен разобраться в любой технологии при наличии достаточного времени, но важно выбрать специализацию.
п.с. Выше я не зря упомянул JavaScript/Node. Когда появились NoSQL базы данных, стала стираться граница между фронтенд- и бэкенд- разработчиками. Стало необязательно учить SQL и верстальщик веб-страниц вполне может тащить данные непосредственно из БД и реализовывать бизнес логику на клиентской части.