Технический стек Backend-разработчика
Исходный пост:
Tech Stack — это набор инструментов, фреймворков и языков программирования, которые можно использовать для создания приложений. Правильный технологический стек может иметь решающее значение с точки зрения скорости, масштабируемости и удобства обслуживания. В этом сообщении блога мы обсудим некоторые из различных компонентов технологического стека, которые, как ожидается, должны быть в арсенале эффективного бэкэнд-разработчика.
Язык программирования является основой технологического стека, и все остальные фреймворки и библиотеки интегрируются с его помощью. Ожидается, что один из них будет владеть хотя бы одним из основных языков на основе ООП. Вы найдете множество статей, в которых сравниваются плюсы и минусы различных языков, но правда в том, что если вы хороши в любом из них, вы, вероятно, в конечном итоге получите достойную работу.
Несмотря на то, что обычно достаточно одного языка программирования, как только вы начнете работать с большими приложениями корпоративного уровня, требующими масштабируемости и производительности, вы можете обнаружить, что используете инструменты, которые не поддерживаются вашим основным языком. В таких ситуациях один обычно заканчивает изучением второго.
Нечто подобное произошло со мной, когда нам нужно было использовать Airflow для наших аналитических нужд, что потребовало от меня изучения Python вместе с моим основным C#.
Ожидается еще один набор навыков по умолчанию, поскольку всем приложениям потребуется хранить и извлекать данные. Знание традиционных реляционных баз данных обязательно. Однако в наши дни большинство приложений, как правило, распределяют некоторые из своих данных в зависимости от вариантов использования, и вам в конечном итоге потребуется знать одну из популярных баз данных документов NoSQL, таких как Mongo, Couchbase и т. д.
Другой аналогичный стек Elasticsearch
. Хотя это не совсем база данных, а аналитическая или поисковая система для данных, позволяющая выполнять операции быстрого чтения и поиска.
Веб-фреймворк — это инструмент, который помогает создавать веб-приложения, предоставляя набор библиотек и инструментов для решения общих задач. В зависимости от вашего основного языка программирования вы должны знать о соответствующих веб-фреймворках, таких как Spring Boot для Java, Django для Python, .Net Core API для C#, ExpressJs для Node.js и т. д.
В наши дни API-интерфейсы являются наиболее распространенной коммуникационной платформой между различными частями приложения. Большинство бэкенд-разработчиков в конечном итоге работают с API, а REST является стандартом. В последнее время GraphQL набирает популярность, но вы можете легко выжить, не зная об этом, поскольку адаптация все еще очень мала по сравнению с REST.
Recommendation:
Создание Restful API с помощью HarperDB и .Net Core
По мере роста размера вашего приложения асинхронное программирование играет жизненно важную роль в повышении производительности, масштабируемости и, что наиболее важно, надежности. Традиционно у нас были такие технологии, как очереди обмена сообщениями Windows, которые использовались для чего-то похожего, но теперь есть множество сервисов, таких как RabbitMQ, Azure Storage Queue, Service Bus, Apache Kafka и т. д. Ожидается знакомство хотя бы с одним из них, поскольку он создает основу, позволяющую использовать любую альтернативу.
Большинство приложений в настоящее время разрабатываются или перемещаются к одному из известных облачных провайдеров. Как разработчик, вам, возможно, придется создавать приложения, используя различные услуги, предлагаемые этими провайдерами, поэтому базовые знания о них очень полезны.
Никто не должен обладать всеми знаниями на уровне администратора или devops, но умение создавать и использовать сервисы в наши дни очень удобно.
Опять же, это не обязательный навык, но в конечном итоге все разработчики должны будут иметь некоторое базовое представление о том, как интегрировать свои приложения с использованием некоторых искомых методов контейнеризации. Даже если приложения не контейнеризированы, Docker может быть мощным инструментом для разработчиков для настройки песочницы на локальных машинах, позволяя им быстро запускать различные серверы.
Recommendation:
Docker Compose для настройки тестовой среды разработки
Кэширование — это метод, используемый для повышения производительности вашего приложения за счет сохранения часто используемых данных в памяти. Наиболее производительные приложения в наши дни имеют такие предложения кэширования, как Редис интегрируются тем или иным образом в свою систему, тем самым уменьшая количество обращений к своим первичным серверам баз данных.
Опять же, не для всех кодовых баз написаны модульные тесты, но они есть в правильно спроектированных системах, и умение писать код в шаблоне TDD — хороший навык. Для каждого языка существует несколько фреймворков, например, я использую монахиня для моей кодовой базы С#.
Есть и другие популярные инструменты и порталы, которые так или иначе необходимо использовать большинству бэкэнд-разработчиков. И поскольку я не был уверен, попадают ли они в категорию технологического стека, я решил перечислить их отдельно в этом разделе.
Клиенты для вызовов API — Postman, SoapUI и т. д.
Кодовые и текстовые редакторы, в частности Visual Studio Code
Терминал или командная строка
Контроль версий — Git и Git CLI
Подводя итог, бэкенд-разработчику нужно больше, чем просто знание базы данных и языка программирования. Для создания масштабируемого и удобного в сопровождении приложения требуется сочетание технического стека, включающего язык программирования, веб-фреймворк, базу данных, решение для кэширования, фреймворк API, инструмент контейнеризации и поставщика облачной инфраструктуры.
Пожалуйста, не стесняйтесь добавлять больше, если вы используете что-то очень часто в своих повседневных задачах разработки бэкэнда.