Веб-разработка сегодня полностью отличается от того, что было несколько лет назад; есть много разных вещей, которые могут легко сбить с толку любого, кто вступает в веб-разработку. Это была одна из причин, по которой мы решили сделать эти пошаговые визуальные руководства, демонстрирующие общую картину и дать каждому четкое представление о том, чему он должен следовать, чтобы быть в определенных ролях в веб-разработке.
Около недели назад у нас был пост под названием Modern Front end Developer in 2018 , в котором мы обещали выпустить обновленные дорожные карты для Backend и DevOps. Придерживаясь этого обещания, эта статья посвящена современному бэкенд-разработчику. Если вы еще не проверили дорожную карту front end developer, продолжайте и взгляните на нее.
До сегодняшнего дня бэкенд-дорожная карта была просто плоской рекомендацией технологий без четких указаний порядка, в котором ей следовало следовать. Мы перерисовали его так же, как передний конец, с пошаговыми руководствами, чтобы дать вам лучшее представление.
Мы все еще работаем над DevOps и, надеюсь, выпустим его на следующей неделе. Мы также опубликуем статью об этом, но вот ссылка на репозиторий для вас, чтобы посмотреть обновления.
Случайное изображение для миниатюры статьи — Пожалуйста, игнорируйте 🙉
Без лишних слов, давайте начнем. Вы можете найти подробную дорожную карту на изображении ниже, однако я также собираюсь объяснить каждый шаг в описании ниже.
Давайте разберем его и объясним каждый шаг в следующем разделе.
Прежде чем мы начнем, хотя мы не перечислили знания HTML/CSS в дорожных картах выше, рекомендуется, чтобы вы получили хотя бы некоторое понимание и знали, как писать некоторые базовые HTML/CSS.
Шаг 1– Выучите язык
Есть мириады вариантов, когда дело доходит до выбора языка. Я разбил их на категории, чтобы вам было легче принять решение. Для новичков, которые только приступают к разработке бэкэнда, я бы порекомендовал вам выбрать любой из скриптовых языков, потому что они очень востребованы, и это позволит вам быстро освоиться. Если у вас есть некоторые знания переднего плана, вы можете найти Node.js быть совсем проще, плюс для этого есть большой рынок труда.
Если вы уже занимались бэкенд-разработкой и знаете какой-то скриптовый язык, я бы рекомендовал вам не выбирать другой скриптовый язык, а выбрать что-то из раздела “Функционал” или “Мультипарадигма”. Например, если вы занимались PHP или Node.js уже сейчас не беритесь за Python или Ruby, а попробуйте Erlang или Golang. Это определенно поможет вам расширить свое мышление и открыть свой ум для новых горизонтов.
Шаг 2 — Практикуйте то, что у вас есть Выученный
Нет лучшего способа учиться, чем практика. Как только вы выбрали свой язык и получили базовое понимание понятий, используйте их. Сделайте как можно больше небольших приложений. Вот лишь несколько идей для начала
- Реализуйте какую-нибудь команду, которую вы используете в bash, например, попробуйте реализовать функциональность
ls
- Напишите команду, которая извлекает и сохраняет сообщения reddit на
/r/programming
в виде JSON-файла - Напишите команду, которая дает вам структуру каталогов в формате JSON, например
jsonify dirname
, чтобы дать вам файл JSON со структурой внутриdir-name
- Напишите команду, которая считывает JSON из вышеприведенного шага и создает структуру каталогов
- Подумайте о какой-нибудь задаче, которую вы делаете каждый день, и попробуйте автоматизировать ее
Шаг 3 — Изучите Менеджер пакетов
После того, как вы поняли основы языка и сделали несколько примеров приложений, узнайте, как использовать менеджер пакетов для выбранного вами языка. Менеджеры пакетов помогают вам использовать внешние библиотеки в ваших приложениях и распространять ваши библиотеки для использования другими.
Если вы выбрали PHP, вам придется изучать Composer, Node.js и NPM или Yarn, Python имеет Pip, а Ruby-RubyGems. Каким бы ни был ваш выбор, идите вперед и узнайте, как использовать его менеджер пакетов.
Шаг 4 — Стандарты и лучшие практики
Каждый из языков имеет свои собственные стандарты и лучшие практики ведения дел. Изучите их для выбранного вами языка. Например, PHP имеет PHP-FIG и PSRs. С Node.js существует много различных руководств, основанных на сообществе, и то же самое для других языков.
Шаг 5 — Безопасность
Обязательно прочтите о лучших практиках обеспечения безопасности. Прочтите рекомендации OWASP и разберитесь в различных проблемах безопасности и в том, как их избежать на выбранном вами языке.
Шаг 6 — Практика
Теперь, когда вы знаете основы языка, стандарты и лучшие практики, безопасность и как использовать менеджер пакетов. Теперь идите вперед и создайте пакет и распространите его для других, чтобы использовать, и убедитесь, что вы следуете стандартам и лучшим практикам, которые вы изучили до сих пор. Например, если вы выбрали PHP, вы будете выпускать его на Packagist, если вы выбрали Node.js вы будете выпускать его в реестре Npm и так далее.
Как только вы закончите с этим, найдите некоторые проекты на Github и откройте некоторые pull-запросы в некоторых проектах. Некоторые идеи для этого:
- Рефакторинг и внедрение лучших практик, которые вы изучили
- Посмотрите на открытые проблемы и попытайтесь их решить
- Добавьте любую дополнительную функциональность
Шаг 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. Если вам нужно выбрать один из них, пойдите с MongoDB.
Шаг 14 — Кэширование
Узнайте, как реализовать кэширование на уровне приложений в ваших приложениях. Поймите, как использовать Redis или Memcached и реализовать кэширование в приложении, которое вы построили в Шаг 12.
Шаг 15 — Создание RESTful API
Поймите REST и узнайте, как создавать RESTful API, а также обязательно прочтите часть о REST из оригинальной статьи Roy Fielding . И убедитесь, что вы можете бороться с кем-то, если они говорят, что REST предназначен только для HTTP API.
Шаг 16 — Узнайте о различных методах аутентификации
Узнайте о различных методологиях аутентификации и авторизации. Вы должны знать, что это такое, чем они отличаются и когда следует предпочесть одно другому
- OAuth — Открытая аутентификация
- Базовая Аутентификация
- Аутентификация токенов
- Веб — токены JWT-JSON
- OpenID
Шаг 17 — Брокеры сообщений
Узнайте о брокерах сообщений и поймите, когда и зачем их использовать. Существует несколько вариантов, но наиболее заметными из них являются RabbitMQ и Kafka . Узнайте, как использовать RabbitMQ сейчас, если вы хотите выбрать один из них.
Шаг 18 — Поисковые системы
По мере роста приложения простые запросы к вашей реляционной базе данных или базе данных NoSQL не будут сокращать ее, и вам придется прибегнуть к поисковой системе. Существует множество вариантов, каждый из которых имеет свои отличия.
Шаг 19 — Узнайте, как использовать Docker
Docker может значительно облегчить вам разработку, будь то репликация той же среды, что и производство, поддержание чистоты вашей ОС или ускорение кодирования, тестирования или развертывания. Я собираюсь оставить ответ на вопрос “как это поможет мне” для вас, чтобы вы искали. На этом этапе вы узнаете, как использовать Docker.
Шаг 20 — Знание веб-серверов
Если вы зашли так далеко, то вам, вероятно, уже приходилось сталкиваться с серверами на предыдущих этапах. Этот шаг в основном связан с выяснением различий между различными веб-серверами, знанием ограничений и различных доступных параметров конфигурации, а также с тем, как писать приложения, наилучшим образом использующие эти ограничения.
Шаг 21 — Узнайте, как использовать веб-сокеты
Хотя это и не обязательно, полезно иметь эти знания в своем поясе инструментов. Узнайте, как писать веб-приложения в реальном времени с помощью websockets и сделать с ними несколько примеров приложений. Вы можете использовать его в приложении блога, которое вы сделали выше, чтобы реализовать обновления в режиме реального времени в списке сообщений блога.
Шаг 22 — Изучите GraphQL
Узнайте, как создавать API с помощью GraphQL. Поймите, чем он отличается от REST и почему его называют REST 2.0.
Шаг 23 — Посмотрите на графические базы данных
Графовые модели представляют собой очень гибкий способ обработки взаимосвязей в ваших данных, а графовые базы данных обеспечивают быстрое и эффективное хранение, извлечение и запрос данных. Узнайте, как использовать Neo4j или OrientDB.
Шаг 24 — Продолжайте Исследовать
Как только вы начнете учиться и практиковать, вы обязательно столкнетесь с вещами, которые мы не рассматривали в этой дорожной карте. Просто сохраняйте непредвзятость и здоровый аппетит к познанию нового.
И помните, что главное-практиковать как можно больше. Вначале это будет выглядеть страшнее, и вы можете почувствовать, что ничего не схватываете, но это нормально, и со временем вы почувствуете, что становитесь лучше.
И на этом этот пост заканчивается. Не стесняйтесь подружиться со мной в twitter или поздороваться по электронной почте . Также не забудьте следить за репозиторием для будущих обновлений. Оставайтесь с нами!