Веб-разработка давно стала многоуровневым процессом с иерархическим разделением на две части: front-end и back-end. Front-end — это исполняемый в браузере код, который отвечает за отображение сайта или веб-приложения, работоспособность всех элементов на разных устройствах, то есть на клиентской стороне. Back-end — это серверная сторона, или программно-аппаратная часть. Термины появились в результате разделения ответственности между внешним представлением и внутренней реализацией.
Прежде всего это код, выполняемый на сервере, откуда загружается сайт или веб-приложение. Также это базы данных регулярно наполняемых сайтов, например:
А ещё это алгоритмы работы мощных онлайн-платформ, например:
Бэкенд может быть двухуровневым: с собственным фронтендом и нижестоящим уровнем бэкенда. Например, для читателей блога на WordPress его движок выступает бэкендом. Но для владельца-администратора и авторов, имеющих права добавлять, изменять, удалять контент, бэкенд-движок состоит из фронтенда — удобной панели управления движком или только контентом, и ещё одного бэкенда — плагинов, системных файлов на PHP, базы данных на MySQL. Посмотрим издалека: сервер, где размещается сайт или веб-приложение — это бэкенд; панель управления хостингом — это фронтенд бэкенда; Linux без GUI — это бэкенд бэкенда.
В общем, бэкенд — это сотни невидимых процессов, которые потом передают результат уже через фронтенд. То есть всё, что скрыто от посетителей/пользователей и работает само по себе, и есть бэкенд. Только сначала надо найти backend-разработчиков, которые его создадут.
Эти специалисты разрабатывают и развёртывают серверную часть веб-ресурсов. Они способны с нуля создать базовую логику и спроектировать архитектуру будущего веб-приложения, а потом написать алгоритмы его функционирования. От рациональности их работы зависит производительность, масштабируемость и безопасность серверного кода.
Бэкенд-разработчики умело обращаются с СУБД, так что без труда связывают код с базой данных, пишут обработчики запросов к ней. Они отлично разбираются в веб-серверах, которые принимают http-запросы от фронтенда и выдают http-ответы, а значит, могут написать приложение с учётом их конфигурации и возможностей. Равно как и в серверах приложений, если дело касается высоконагруженных или мобильных приложений.
Бэкенд не ограничивается самим сайтом или веб-приложением. К нему также относятся веб-сервисы (веб-службы), которые связываются с другими сайтами, приложениями, сервисами. Например: пингбеки и трекбеки в блогосфере, шеринг в социальных сетях, подключённая reCAPTCHA, внедрённая онлайн-оплата. Бэкенд-разработчики могут как наладить взаимодействие со сторонними программными интерфейсами приложений (API), так и создать собственный, к которому будут обращаться другие ресурсы.
Несмотря на то, что прямая обязанность разработчиков — анализ и спецификация требований, проектирование и программирование, на них часто возлагают тестирование, отладку и оптимизацию кода. В крупных компаниях этим занимаются тестировщики и отдельные программисты. В маленьких стартапах, где есть только 2 веб-разработчика (фронтендер и бэкендер), код проверяет и дорабатывает тот, кто его написал. Хотя разумнее передавать такие задачи отдельной команде, потому что заметить ошибки или предложить улучшения может только другой исполнитель со свежим взглядом.
Для каждой конкретной задачи подбирается подходящий язык программирования, на котором будет писаться исходный код. При создании бэкенда сайтов чаще всего используется 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, конвертируются в определённый формат. Бэкенд-разработчики, регулярно настраивающие или поддерживающие 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. Затем рассматривать заявки и резюме backend-программистов с опытом. А можно устроить хедхантинг на тех же порталах или на LinkedIn. Дальше нужно провести собеседование, где кандидат расскажет подробнее о себе и узнает больше о своей роли бэкенд-разработчика в компании. В общем, типичное трудоустройство со всеми нюансами офлайна.
Преимущества:
Недостатки:
Это среднее между первыми двумя способами. Привлекая к проекту сформированную команду backend-разработчиков удалённо, вы получаете в распоряжение штат из временных фрилансеров. Причём необязательно всех сразу, а только необходимый в данный момент состав, с возможностью в дальнейшем подключить того, кто на первых этапах был не нужен. В сторонней команде бэкенд-разработчики уже проверены тимлидом, у них есть совместный опыт, так что они не саботируют коллег, а трудятся слаженно.
Преимущества:
Недостаток: если сравнивать с фрилансерами-одиночками, то услуги команды бэкенд-разработки обойдутся дороже, хотя всё равно не настолько дорого, как содержать штатных сотрудников.
На фриланс-биржах бэкендеры указывают минимальный размер сдельной оплаты backend-разработки, от которого они отталкиваются: от 800 ₽, 9 € или 10 $. В этом случае заказчикам трудно ориентироваться в стоимости услуг создания бэкенда, потому что за такие деньги исполнители могут сделать только что-нибудь несущественное, например, предварительно проконсультировать или составить план.
Рассчитываться с внештатными удалёнными бэкенд-разработчиками намного легче, когда оплата почасовая. Здесь стоимость часа работы backend-разработчиков фиксированная и на протяжении года не меняется, например: 4000 ₽, 45 € или 50 $.
Для полноты картины нанимателям следует знать зарплаты, которые другие компании готовы платить штатным сотрудникам. Они существенно разнятся в зависимости от требуемого опыта или уровня. Рекрутеры делят кандидатов по старинке — по опыту работы, измеряемому в годах. Сами разработчики предпочитают делиться на junior, middle, senior, lead — условные уровни, которым соответствует набор умений и навыков, стек технологий, а также самостоятельность. Если эти подходы попытаться совместить, то получится примерно так:
На российском рынке труда ИТ-сферы присутствует значительная разница между зарплатами в Москве и в других регионах. Мы собрали вакансии для 3 уровней квалификации на superjob.ru и zarplata.ru, рассортировали по ним и по городам (Москва | остальные города). Затем высчитали среднюю зарплату внутри каждой из 6 групп. Вот сколько российские компании готовы ежемесячно платить бэкенд-разработчику (данные за март 2022):
Уровень квалификации | Средняя ежемесячная з/п в Москве | Средняя ежемесячная з/п в других городах |
---|---|---|
Джуниор | 100 000 RUB | 72 000 RUB |
Мидл | 163 000 RUB | 135 000 RUB |
Сеньор | 225 000 RUB | 208 000 RUB |
На британском рынке труда тоже присутствует разница между зарплатами в Лондоне и в других регионах, округах и графствах. Мы собрали вакансии для 3 уровней квалификации на reed.co.uk и indeed.co.uk, рассортировали по ним и по городам (Лондон | остальные города). Затем высчитали среднюю зарплату внутри каждой из 6 групп. Вот сколько британские компании готовы ежегодно платить бэкенд-разработчику (данные за март 2022):
Уровень квалификации | Средняя годовая з/п в Лондоне | Средняя годовая з/п в других городах |
---|---|---|
Junior | 30 000 GBP | 29 000 GBP |
Middle | 66 000 GBP | 53 000 GBP |
Senior | 71 000 GBP | 63 000 GBP |