Backend-developer – это боец невидимого фронта, разработчик на стороне сервера. Он разрабатывает логику веб-сайтов и приложений: обработка поступающей от клиента информации, организация её хранения, авторизация пользователей, распределение прав доступа, настройка работы сервера, интеграция с другими приложениями. Работа над серверной частью онлайн-приложений определяет функциональность, скорость, возможности их масштабируемости.

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

 

Изучаем основы

Дорожная карта backend-developer охватывает десяток областей знаний в сфере информационных технологий. Кроме языков программирования и фреймворков для бэкенда разработчику следует знать базы данных (БД), принципы работы операционных систем, веб-серверов, сетевые технологии, безопасность, API, кэширование. Для ряда проектов нужно знать виртуализацию, основы DevOps, контейнеризацию, развёртывание и интеграция (CI/CD).

Перечень типичных задач бэкендера:

  • Разработка концепции функционирования веб-приложений.
  • Написание кода, его оптимизация, устранение ошибок.
  • Масштабирование проекта.
  • Поддержка жизненного цикла приложения – его обновление.
  • Настройка сервера.
  • Работа с инструментами автоматизации.
  • Проверка информации перед отправкой на хранение в БД.
  • Разработка документации по работе с приложением.

Работа интернета

Для погружения в backend-разработку нужен прочный фундамент в области информационных технологий. В первую очередь – принципы работы глобальной сети: модель OSI, сетевые протоколы IP, TCP, HTTP / HTTPS. Разберитесь с URL, DNS, принципом работы браузеров, отличиями между ними. Также освойте веб-серверы NGINX или Apache.

Фронтенд

Программисту, даже если он будет заниматься исключительно серверной разработкой, нужно знать основы HTML, CSS и JS – технологий, на которых строят сайты и веб-приложения.

Язык программирования

Перед выбором или в процессе изучения ЯП освойте принципы объектно-ориентированного программирования. Выучите алгоритмизацию, ознакомьтесь с типами данных, циклами, структурами, переменными, подпрограммами.

Язык программирования – инструмент для реализации замыслов программиста по ТЗ заказчика. Выбор лингвистического средства зависит от подготовки, амбиций, направления деятельности разработчика.

  • Если знаете фронтенд, выбирайте JavaScript – ЯП хоть и применяется преимущественно для фронтенда, но его фреймворк Node.js позволяет запускать код на стороне сервера. Библиотека Express.js полезна при реализации масштабируемых проектов.
  • Java с фреймворками Spring или Hibernate стоит изучать, если у вас планы с продолжительной перспективой – уверены, что справитесь с освоением профессии и серьёзно займётесь backend’ом.
  • Python – универсальный ЯП, в совокупности с фреймворками Django – наиболее безопасный и быстрый, Web2py или микрофреймворком Flask (рекомендуем для новичков) – отличный инструмент для разработки веб-приложений и функциональных сайтов. На Tornado реализуют масштабные проекты.
  • PHP – быстрый ЯП для веб-разработки. Его фреймворк Laravel применяют при создании веб-приложений. Он упрощает проработку внутренней логической структуры сервисов, их сборку.

Также для бэкенда используют C-подобные языки, ASP.NET, Ruby, но освоить их сложнее.

Веб-безопасность

Интернет – миллионы потенциальных угроз и уязвимостей, которые поджидают онлайн-приложения, сайты и информацию, которой они обмениваются с пользователем. Программисту нужны знания в области кибербезопасности: 

  • шифрование;
  • методы аутентификации (RSA, SHA, MD5), авторизации;
  • безопасное кодирование;
  • распределение доступа;
  • проверка, обеспечение целостности данных;
  • сканирование сайта / приложения на наличие вредоносного кода;
  • предотвращение кибератак, противодействие им, устранение последствий;
  • автоматическое резервное копирование, восстановление информации.

Система контроля версий

Инструмент любого программиста, помогающий обрабатывать и вносить изменения в проект, отслеживать их. Рекомендуем остановиться на бесплатных средствах Git или GitHub – предоставляют репозитарий для поддержания кода, совместной работы.

 Базы данных

БД – организованная структура, концепция хранения больших объёмов информации. Основные используемые бэкендером базы данных:

  • Реляционные – имеют табличную структуру (MySQL, Oracle).
  • NoSQL – применяются для реализации крупных проектов, где хранится неструктурированная информация (MongoDB).
  • Объектно-ориентированные – каждая ячейка с информацией – объект.
  • Графовые – нужны для хранения сложных структур.

Для работы с базами данных нужно знать SQL.

API

API –  посредники, интерфейсы для взаимодействия приложений между собой. Они облегчают реализацию, стандартизируют обмен данными между сервисами, согласовывают работу серверной и интерфейсной (пользовательской) частей приложений.

Обратный API или Webhook – способ изменения поведения веб-приложений или страниц посредством обратных вызовов.

Кэширование

Кэширование – хранение часто используемых фрагментов данных в высокоскоростной памяти для быстрого доступа к ним. Процесс повышает производительность приложений, снижает нагрузку на сервер. Из инструментов это CDN, Server Side, Redis.

Тестирование

Специалист должен уметь тестировать программное обеспечение, в том числе в автоматическом режиме, писать модульные тесты. Для этого нужны инструменты вроде Selenium – для веб- или Appium – мобильных приложений.

Анализ кода

Инструменты для поиска уязвимостей, ошибок и оптимизации кода. Автоматизируют процессы, обнаруживают проблемные места, которые сложно заметить при ручном тестировании. Из универсальных анализаторов рекомендуем JUnit, SonarQube, Jenkins, ESLint.

Дополнительные знания

Разработчик должен иметь широкий кругозор. Дополнительно ему потребуются знания:

  • Архитектурных шаблонов – распространённых решений часто встречающихся задач. Как варианты: Singleton, Factory.
  • Веб-перехватчиков – способов отправки данных приложениями на сервер.
  • Английского языка для работы с документацией, чтения тематической литературы, общения с иностранными заказчиками и коллегами на форумах, в чатах.
  • Операционных систем семейства Linux: управление памятью, параллелизм, потоки, принципы работы сети.
  • Контейнеризации – процесс упаковки кода для изоляции сервисов, например, Docker.
  • Развёртывания – внедрение кода в «живую среду», где он будет функционировать.
  • Брокер сообщения – средство для взаимодействия служб и приложений между собой, переводит сообщения между форматами протоколов отправителя и получателя: Kafka, RabbitMQ.

Иногда требуется опыт работы с облачными сервисами AWS, Azure и прочими. Также для backend-разработчика важны личностные качества:

  • умение находить общий язык с коллегами, заказчиком;
  • гибкость в условиях постоянной смены обстановки;
  • ответственность, умение выполнять работу в срок;
  • алгоритмическое мышление;
  •  навыки командной работы.

Начинающий программист должен постоянно и много учиться, практиковаться, адекватно реагировать на критику.

Будущее бэкендера

Профессия backend-программист остаётся востребованной второе десятилетие, её популярность только растёт. Путь разработчика может быть следующим:

  • Стандартная работа миддлом или повышение навыков до сениора.
  • Переход в иную сферу: мобильная, веб-разработку, фуллстек, нейросети.
  • Переквалификация в десктоп-разработчика.
  • Переход в Data Science, DevOps.
  • Фрилансер, желательно владеющий frontend’ом.

Обучение на backend-developer

Бэкенд-разработчик применяет инструменты, которые доступны на сервере. Он может выбрать любой из универсальных языков программирования — например, Ruby, PHP, Python или Java. Всё зависит от конкретного проекта и задачи заказчика.

Полезные ссылки 

Универсальных учебников для backend-разработчиков нет. Вам придётся постепенно изучать десятки технологий, инструментов, приложений для разработчиков и языков программирования.

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

 

Книги.

  • Бек Кент – Экстремальное программирование. Разработка через тестирование.
  • Дж. Спольски – Джоэл о программировании.
  • Р. Мартин – Чистый код.
  • С. Макконнелл – Совершенный код.
  • М. Фаулер – «Шаблоны корпоративных приложений».

Backend Development – крупнейшее хранилище материалов для бэкендера, упорядоченных по группам.

FAQ

Какой язык для backend-разработки самый простой?

Многое зависит от человека, его опыта, подготовки. Рекомендуем начинать с Python – универсальный несложный в освоении язык программирования с массой фреймворков или JavaScript + Node.js.

Нужен ли SQL, если я знаю Python, C++ или Java?

SQL – не самодостаточный ЯП, это лингвистическое средство структурированных запросов. SQL позволяет приложениям взаимодействовать с базами данных.

Backend-разработка сложнее frontend?

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

Обязательно ли знать всё, указанное в дорожной карте?

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