Веб-разработка давно стала многоуровневым процессом с иерархическим разделением на две части: front-end и back-end. Front-end — это исполняемый в браузере код, который отвечает за отображение сайта или веб-приложения, работоспособность всех элементов на разных устройствах, то есть на клиентской стороне. Back-end — это серверная сторона, или программно-аппаратная часть.
Прежде всего это код, выполняемый на сервере, откуда загружается сайт или веб-приложение. Также это базы данных регулярно наполняемых сайтов, например:
А ещё это алгоритмы работы мощных онлайн-платформ, например:
Бэкенд может быть двухуровневым: с собственным фронтендом и нижестоящим уровнем бэкенда. Например, CMS WordPress является бэкендом сайта, но для владельца-администратора, редакторов и авторов система состоит из: фронтенда — удобной панели управления движком или только контентом, и ещё одного бэкенда — плагинов, системных файлов на PHP, базы данных на MySQL. Посмотрим издалека: сервер, на котором размещается сайт или веб-приложение, — это бэкенд, панель управления хостингом — это фронтенд бэкенда, а Linux без GUI — это бэкенд бэкенда.
В общем, бэкенд — это сотни и тысячи невидимых процессов, которые потом передают результат уже через фронтенд. То есть всё, что скрыто от посетителей/пользователей и работает само по себе, и есть бэкенд. Только сначала надо найти backend-разработчиков, которые его создадут и настроят.
Эти специалисты разрабатывают и развёртывают серверную часть веб-ресурсов. Они способны с нуля создать базовую логику и спроектировать архитектуру будущего веб-приложения, а потом написать алгоритмы его функционирования. От рациональности их работы зависит производительность, масштабируемость и безопасность серверного кода.
Бэкенд-разработчики умело обращаются с СУБД, так что без труда связывают код с базой данных, пишут обработчики запросов к ней. Они отлично разбираются в веб-серверах, которые принимают http-запросы от фронтенда и выдают http-ответы, а значит, могут написать приложение с учётом их конфигурации и возможностей. Равно как и в серверах приложений, если дело касается высоконагруженных или мобильных приложений.
Бэкенд не ограничивается самим сайтом или веб-приложением. К нему также относятся веб-сервисы (веб-службы), которые связываются с другими сайтами, приложениями и сервисами. Знакомые всем примеры: пингбеки и трекбеки в блогосфере, шеринг в социальных сетях, подключённая reCAPTCHA, внедрённая онлайн-оплата. Бэкенд-разработчики могут как наладить взаимодействие со сторонними API, так и создать собственный, к которому будут обращаться другие ресурсы.
Несмотря на то, что прямая обязанность разработчиков — анализ и спецификация требований, проектирование и программирование, на них часто возлагают тестирование, отладку и оптимизацию кода. В больших командах и ИТ-компаниях этим занимаются тестировщики и отдельные программисты. В маленьких стартапах, где есть только два веб-разработчика (фронтендер и бэкендер), код проверяет и дорабатывает тот, кто его написал. Хотя разумнее передавать такие задачи отдельной команде, потому что заметить ошибки или предложить улучшения может только другой исполнитель со свежим взглядом.
Для каждой конкретной задачи подбирается свой язык программирования, на котором будет писаться исходный код. При создании бэкенда сайтов чаще всего используется PHP, а веб-приложения разрабатываются как на нём же, так и на других языках:
Вот какие языки программирования и системы управления базами данных используются на серверной стороне самых популярных сайтов:
Сайт | Посетителей в месяц | Серверные языки | СУБД |
---|---|---|---|
1,6 миллиарда | C, C++, Go, Java, Python | Bigtable, MariaDB | |
1,1 миллиарда | C++, D, Erlang, Hack, Haskell, Java, PHP (HHVM), Python, XHP | Cassandra, HBase, MariaDB, MySQL | |
YouTube | 1,1 миллиарда | C, C++, Go, Java, Python | BigTable, MariaDB, Vitess |
Yahoo | 750 миллионов | PHP | Cassandra, HBase, MongoDB, PostgreSQL |
Amazon | 500 миллионов | C++, Java, Perl | PostgreSQL, RDS, RDS Aurora |
Wikipedia | 475 миллионов | PHP | MariaDB |
290 миллионов | C++, Java, Ruby, Scala | MySQL |
Разработчик бэкенда не всегда владеет большинством распространённых языков. Но что отличает талантливого специалиста, так это способность быстро освоить новый язык программирования и с лёгкостью решить задачи, в которых он необходим. Отчасти в этом помогают универсальные среды разработки (Geany, IntelliJ IDEA, KDevelop и другие) и облачные среды разработки (AWS Cloud9 IDE, Codeanywhere, Repl.it и другие).
Разработку облегчают и ускоряют вспомогательные средства: шаблоны проектирования и программирования, фреймворки и библиотеки для каждого языка. Поэтому любой разработчик использует как минимум один набор инструментов. С их помощью он сдаёт работу вовремя, не задерживая остальных членов команды.
Профессионалы, часто работающие с реляционными СУБД, владеют языком структурированных запросов (SQL). Даже те, кто имеет дело с СУБД типа NoSQL, вынуждены знать его, потому что этот язык запросов там тоже поддерживается. А уставшие от вездесущего SQL освоили и применяют методику объектно-реляционного отображения (ORM).
Данные, предоставляемые программному интерфейсу приложений, конвертируются в определённый формат. Бэкенд-разработчики, регулярно настраивающие или поддерживающие API, подружились с расширяемым языком разметки (XML), форматом обмена данными JSON, архитектурным стилем REST, протоколом SOAP.
В работе с веб-серверами не обойтись без серверного ПО, так что каждый бэкендер разобрался в Apache HTTP Server, Lighttpd, Nginx. В общих чертах о них знают даже пытливые интернет-сёрферы, которые встречали разные ошибки с кодами 5xx на неработающих сайтах и выясняли причину. А для работы с серверами приложений профессионалы освоили такое ПО, как Google App Engine, IBM WebSphere, Java EE, Zend Server.
Когда надо проверить работоспособность веб-продукта на локальной машине, то в зависимости от имеющейся ОС бэкендеры используют пакеты серверного ПО, такие как WAMP, LAMP, MAMP, XAMPP. По роду своей деятельности они также сталкиваются с виртуальными и выделенными серверами, поэтому у них как-то само собой получается изучить панели управления хостингом, виртуализацию, контейнеризацию, Линуксы. Но лучше не заставлять их администрировать серверы ради экономии на услугах хостера.
То же самое можно было бы сказать о фронтенде, но тогда в сфере вебдева не возникла бы квалификация full-stack. Фуллстек-разработчики — это бэкендеры, которые умеют разрабатывать ещё и фронтенд. Иногда наоборот.
Нанять бэкенд-разработчика с опытом не так-то просто. Одни работодатели ищут его на биржах фриланса, другие подбирают на HR-порталах, а кому-то проще поручить бэкенд-разработку команде веб-студии. Какой вариант лучше — однозначно сложно сказать, поэтому рассмотрим каждый.
Заказчик должен сначала найти незанятых бэкендеров на биржах услуг, таких как Fiverr, Freelance.Habr, Freelancehunt, Upwork, Weblancer. Потом изучить портфолио backend-разработчиков с отзывами. Дальше нужно обсудить предстоящую работу, чётко обозначить задачи (желательно в подробном ТЗ), оговорить сроки сдачи. После этого уже можно оформить официальный заказ через биржу, дополнив его оговорёнными условиями и требованиями. Но можно и сразу создать заказ, а потом обрабатывать поступающие заявки по тому же принципу.
Преимущества:
Недостатки:
Работодатель должен открыть вакансию на порталах для поиска и подбора персонала, таких как Career.Habr, HeadHunter, Indeed, Monster, SuperJob. Потом рассматривать заявки и изучать резюме профессиональных бэкендеров. А можно устроить хедхантинг на тех же порталах или на LinkedIn. Дальше нужно провести собеседование, где кандидат расскажет подробнее о себе и узнает больше о роли backend-разработчика в компании. В общем, типичное трудоустройство со всеми нюансами офлайна.
Преимущества:
Недостатки:
Этот способ является чем-то средним между первыми двумя. Привлекая к разработке проекта сформированную удалённую команду, заказчик получает в распоряжение штат из временных фрилансеров. Причём необязательно всех целиком, а только необходимый в данный момент состав, с возможностью в дальнейшем подключить того, кто на первых этапах был не нужен. В сторонней команде бэкенд-разработчиков люди уже проверены тимлидом, у них есть совместный опыт, так что они не саботируют коллег, а трудятся слаженно.
Преимущества:
Недостаток один: если сравнивать с фрилансерами-одиночками, то стоимость услуг backend-разработчиков в команде выходит дороже. Но всё равно не настолько дорого, как содержать штатных сотрудников.
Бэкендеры на фриланс-биржах указывают минимальный размер сдельной оплаты труда, от которого они отталкиваются: от 500 руб., от 9 €, от 10 $. Заказчикам в этом случае трудно ориентироваться в стоимости их услуг, потому что за такие деньги исполнители могут сделать только что-нибудь несущественное, например, предварительно проконсультировать или посмотреть состояние проекта.
Оценить услуги нанятых через аутсорсинг внештатных работников с почасовой оплатой намного легче. Стоимость часа работы удалённых backend-разработчиков редко меняется: 3000 руб., 45 €, 50 $.
Чуть сложнее равняться на зарплаты штатных сотрудников, которые готовы платить работодатели. Здесь всё зависит от требуемого опыта или уровня квалификации. Рекрутеры делят кандидатов как привыкли — по опыту работы, измеряемому в годах (так проще). Сами разработчики предпочитают делиться на junior, middle, senior, lead — условные уровни, которым соответствует набор умений и навыков, стек технологий, а также самостоятельность. Если эти подходы попытаться совместить, то получится примерно следующее:
На российском рынке труда ИТ-сферы присутствует значительная разница между зарплатами в Москве и зарплатами в других регионах. Мы собрали вакансии для трёх уровней квалификации на агрегаторе rabota.yandex.ru, рассортировали по ним и по городам (Москва или остальные города). Потом высчитали среднюю зарплату внутри каждой из 6 групп. Вот сколько российские компании готовы ежемесячно платить бэкенд-разработчику (данные марта 2020 года):
Уровень квалификации | Средняя ежемесячная з/п в Москве | Средняя ежемесячная з/п в других городах |
---|---|---|
Джуниор | 60 000 RUB | 34 000 RUB |
Мидл | 143 000 RUB | 92 000 RUB |
Сеньор | 194 000 RUB | 144 000 RUB |
На британском рынке труда тоже присутствует разница между зарплатами в Лондоне и зарплатами в других регионах, округах и графствах. Мы собрали вакансии для трёх уровней квалификации на reed.co.uk и indeed.co.uk, рассортировали по ним и по городам (Лондон или остальные города). Потом высчитали среднюю зарплату внутри каждой из 6 групп. Вот сколько британские компании готовы ежегодно платить бэкенд-разработчику (данные марта 2020 года):
Уровень квалификации | Средняя годовая з/п в Лондоне | Средняя годовая з/п в других городах |
---|---|---|
Junior | 33 000 GBP | 21 000 GBP |
Middle | 60 000 GBP | 38 000 GBP |
Senior | 63 000 GBP | 48 000 GBP |