Найти тему

Станьте Backend разработчиком

Оглавление

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

До сегодняшнего дня "дорожная карта" Backend представляла собой простую рекомендацию технологий, не содержащую четких указаний относительно порядка, в котором она должна была выполняться.

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

https://pixabay.com/ru/photos/%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80-1839500/
https://pixabay.com/ru/photos/%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80-1839500/

Шаг 1 - Изучение языка

Когда речь заходит о выборе языка, существует множество вариантов. Я разбил их на категории, чтобы вам было проще принимать решения. Для новичков, которые только начинают заниматься разработкой Backend, я бы порекомендовал выбрать любой из языков сценариев, так как он пользуется большим спросом и позволяет быстро вникнуть в курс дела. Если у вас есть кое-какие знания, вы можете найти Node.js намного проще, плюс для этого есть большой рынок труда.

Если вы уже занимались разработкой Backend и знаете какой-то язык сценариев, я бы рекомендовал вам не выбирать другой язык сценариев и выбирать что-то в разделе "Functional" или "Multiparadigm". Например, если вы уже работали с PHP или Node.js, не используйте Python или Ruby, а попробуйте Erlang или Golang. Это определенно поможет расширить ваше мышление и открыть свой ум для новых горизонтов.

Шаг 2 - Практикуйте то, что вы узнали

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

  • Реализуйте некоторые команды, которые вы используете в bash, например, попробуйте реализовать функциональность ls.
  • Напишите команду, которая берет и сохраняет красные сообщения в /r/программировании в виде JSON-файла.
  • Напишите команду, которая даст вам структуру директории в формате JSON, например, jsonify dir-name, чтобы дать вам JSON файл со структурой внутри dir-name.
  • Напишите команду, которая считывает JSON с вышеприведенного шага и создает структуру директории.
  • Подумайте о некоторых задачах, которые вы выполняете каждый день, и попытайтесь автоматизировать их.

Шаг 3 - Изучите менеджер пакетов

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

Если вы выбрали PHP, вам придется изучать Composer, Node.js имеет NPM или Yarn, Python имеет Pip, а Ruby имеет RubyGems. Каким бы ни был ваш выбор, изучите использование менеджера пакетов.

Шаг 4 - Стандарты и лучшие практики

У каждого языка есть свои стандарты и лучшие практики ведения дел. Изучите их для вашего выбранного языка. Например, PHP имеет PHP-FIG и PSR. С Node.js есть много разных руководств для сообщества и то же самое для других языков.

Шаг 5 - Безопасность

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

Шаг 6 - Практика

Теперь, когда вы знаете основы языка, стандартов и передовой практики, безопасности и использования менеджеров пакетов, создайте пакет и распространяйте его среди других пользователей, следуйте стандартам и передовой практике, которые вы изучили на данный момент. Например, если вы выбрали PHP, вы будете выпускать его на Packagist, если вы выбрали Node.js, то вы будете выпускать его в реестре Npm и так далее.

После того, как вы закончите с этим, найдите некоторые проекты на Github и откройте некоторые запросы в некоторых проектах. Некоторые идеи для этого:

  • Рефакторинг и внедрение лучших практик, которые вы узнали
  • Посмотрите на открытые вопросы и попробуйте решить
  • Добавьте любую дополнительную функциональность

Шаг 7 - Узнайте о тестировании

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

Шаг 8 - Практика

Для практики, продолжайте писать юнит-тесты для практических заданий, которые вы выполнили до сих пор, особенно то, что вы сделали в Шаге 6.

Также изучите и рассчитайте покрытие для тестов, которые вы написали.

Шаг 9 - Узнайте о реляционных базах данных

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

Здесь есть несколько вариантов. Однако, если вы изучите один, дальше будет легче. Те, которые вам необходимо изучить, это MySQL, MariaDB (который в основном такой же и является форком MySQL) и PostgreSQL. Выберите MySQL для начала.

Шаг 10 - Практическое время

Пришло время, чтобы использовать все, что вы узнали.

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

  • Учетные записи пользователей - Регистрация и логин
  • Зарегистрированный пользователь может создавать записи в блоге
  • Пользователь должен иметь возможность просматривать все записи в блоге, которые он создал.
  • Они должны иметь возможность удалять свои записи в блоге.
  • Убедитесь, что пользователь может видеть только свои личные записи в блоге, а не от других пользователей.
  • Напишите юнит-тесты/интеграционные тесты для приложения
  • К запросам следует применять индексы. Проанализируйте запросы, чтобы удостовериться, что используются индексы.

Шаг 11 - Изучите основы

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

Если вы выбрали PHP, я бы порекомендовал вам использовать Laravel или Symfony, а для микро-фреймворков - Lumen или Slim. Если вы выбрали Node.js, есть несколько разных вариантов, но наиболее известным является Express.js.

Шаг 12 - Практическое время

Для практического применения этого шага преобразуйте приложение, созданное на шаге 10, в выбранную вами среду. Также не забудьте портировать все, включая тесты.

Шаг 13 - Изучите базу данных NoSQL

Сначала поймите, чем они отличаются от реляционных баз данных и зачем они нужны. Есть несколько разных вариантов, исследуйте немного, посмотрите и сравните их на предмет особенностей и отличий. Некоторые из распространенных опций, которые вы можете выбрать, это MongoDB, Cassandra, RethinkDB и Couchbase.

Шаг 14 - Кэширование

Узнайте, как реализовать кэширование на уровне приложений в своих приложениях. Узнайте, как использовать Redis или Memcached и реализовать кэширование в приложении, которое вы создали на шаге 12.

Шаг 15 - Узнайте о различных методах аутентификации

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

  • OAuth - открытая аутентификация
  • Базовая аутентификация
  • Проверка подлинности токена
  • JWT - JSON Web Tokens
  • OpenID

Шаг 16 - Брокеры сообщений

Узнайте о брокерах сообщений и понять, когда и зачем их использовать. Есть несколько вариантов, но наиболее известными являются RabbitMQ и Kafka.

Шаг 17 - Поисковые системы

По мере роста приложения простые запросы к вашей реляционной базе данных или базе данных NoSQL не будут обрезаны, и вам придется прибегнуть к поисковой системе. Есть несколько вариантов, каждый из которых имеет свои отличия.

Шаг 18 - Узнайте, как использовать Docker

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

Шаг 19 - Знание веб-серверов

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

Шаг 20 - Изучите GraphQL

Узнайте, как создавать API с помощью GraphQL. Понять, как он отличается от REST и почему его называют REST 2.0.

Шаг 21 - Изучите базы данных графиков

Графовые модели представляют собой очень гибкий способ обработки отношений в ваших данных, а графические базы данных обеспечивают быстрое и эффективное хранение, поиск и запросы для них. Узнайте, как использовать Neo4j или OrientDB.

Шаг 22- Продолжай исследовать

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

И помните, что главное - тренироваться как можно дольше. Сначала это будет выглядеть страшно, и вы можете почувствовать, что ничего не понимаете, но это нормально, и со временем вы почувствуете, что становитесь опытнее.