Если вы начинающий разработчик, то возможно слышали о «стеке технологий» и думали о том, что это такое, какой-то язык программирования или фреймворк. Так что же такое стек технологий?
Стек технологий – это условное обозначение набора различных инструментов, которые использует компания или разработчик. Выбор стека технологий – это важный процесс как для организаций, так и для отдельных разработчиков, создающих свои собственные приложения. Здесь мы рассмотрим, как люди выбирают свой стек технологий, а также некоторые самые популярные стеки.
Что такое стек технологий?
Стек технологий – это набор инструментов и технологий, которые разработчики и компании используют для создания своих продуктов и приложений. Сюда относятся языки, фреймворки и базы данных, которые вместе обеспечивают полноценное функционирование приложений.
Не считая командной строки и утилиты strip, работа большинства современных приложений зависит от нескольких технологий. Иногда стек технологий описывает полный набор инструментов, которые необходимы приложению, - от базы данных до динамических эффектов в браузере. Бывает и так, что приложение разделяется на интерфейсную и серверную части, а набор инструментов, который используется в каждой из них, называется также - стеком технологий.
Выбор стека технологий – это важный момент, так как заменить части работающего приложения, встроенные в кодовую базу, может быть довольно сложно. Кроме того, стек технологий может состоять из нескольких компонентов, и получившееся с его помощью приложение представляет собой их синегрию. Выбор каждого инструмента должен быть взвешенным решением, поэтому очень важно найти инструменты, которые будут соответствовать требованиям проекта.
Стеки технологий для мобильной и веб-разработки
Если вы спросите веб-разработчика и разработчика мобильных приложений о стеке технологий, который они используют, то получите абсолютно разные ответы. Это связано с тем, что, как правило, разные платформы требуют использования разных технологий.
Веб-приложения и большая часть мобильных приложений зависят от Интернета, и вы можете получить к ним доступ через любой браузер.
Код, написанный на одном из многих возможных языков программирования и с помощью одной из многих возможных платформ, выполняется на веб-сервере. Он отправляет данные в ваш браузер для того, чтобы ваше веб-приложение могло функционировать. После чего код JavaScript при посредничестве одной из многих возможных платформ выполняется в браузере. Все эти технологии составляют стек: некоторые относятся к его интерфейсной части, некоторые – к серверной.
Мобильные приложения требуют, чтобы оно было загружено на телефон, то есть они не зависят от браузера. В данном случае стек технологий включает в себя все платформы и языки, которые используются для создания приложения.
Стек технологий для Android всегда будет отличаться от стека технологий для iOS, и они всегда будут использовать разные языки программирования. Помимо этого, правда, существуют кроссплатформенные фреймворки для мобильной разработки, которые позволяют писать код на одном языке программирования, но при этом собирать приложения для обеих платформ. Однако за кадром полученное приложение все равно будет использовать язык, присущий конкретной платформе.
Серверные службы, например, базы данных и API, - это та часть стека технологий, которая может быть одинаковой как для мобильной, так и для веб-разработки. Более того, зачастую мобильные и веб-приложения обращаются к одному и тому же API для того, чтобы извлечь данные.
Типы стеков технологий для веб-разработки
Как мы уже выяснили, стек технологий для веб-разработки можно рассматривать как единое целое, а можно разделить на стеки интерфейсных и серверных технологий.
Стек интерфейсных технологий
Стек интерфейсных технологий – это все те технологии, которые используются для рендеринга веб-страниц в браузере. Минимум, из чего состоит стек интерфейсных технологий, - это HTML. Однако веб-страницы без стилевого оформления и динамических эффектов будут выглядеть довольно скучными, поэтому в большинстве случаев разработчики добавляют в свои сайты CSS и JavaScript.
Сегодня вы крайне редко встретите веб-приложения, которые были сделаны с нуля. Конечно, вы можете создавать стили, используя только CSS, но разработчики создали специальные инструменты, которые делают процесс стилизации проще и избавляют вас от необходимости изобретать велосипед.
Стек интерфейсных технологий может включать в себя следующее:
- Sass, который позволяет вам использовать в ваших стилях функции, вложенность и переменные.
- Bootstrap, который предоставляет вам предварительно стилизованные компоненты и сетки, которые вы можете использовать в своем проекте.
Эти библиотеки могут сократить время разработки и упростить работу. Однако для того, чтобы добавить Sass и Bootstrap в свой стек, вам потребуются разработчики, которые обладают хорошими навыками работы с CSS и могут эффективно использовать эти два инструмента.
«Чистый» JavaScript тоже редко используется в интерфейсной разработке. По большей части разработчики используют интерфейсную среду или библиотеку JavaScript. Кроме того, если разработчикам требуются лишь некоторые динамические функции, они могут добавить в свой стек технологий jQuery и сократить таким образом количество кода.
Если разработчики хотят, чтобы внешний интерфейс работал как приложение и напрямую взаимодействовал с серверными службами, они, как правило, добавляют в свой стек технологий интерфейсную среду. Ниже приведен список некоторых интерфейсных сред, а также ситуации, где они могут быть полезны.
Интерфейсные инструменты
- React. Эта библиотека будет полезна в тех ситуациях, когда вам нужны компоненты многократного использования, и вы хотите выбрать другие библиотеки для других функций, необходимых для вашего приложения, например, для выполнения запросов и обработки данных.
- AngularJS. Эта среда будет полезна в тех случаях, когда вам нужна полноценная интерфейсная среда, которая предоставит вам все необходимое в одном флаконе и обеспечит полностью продуманный подход к написанию приложений.
- Vue.js. Эта среда будет полезна в тех случаях, когда вам нужна простая среда, которая бы предоставила вам большую часть того, что требуется для интерфейсной разработки, и позволяла бы выбирать функции, которые вы будете использовать, и при необходимости подбирать другие библиотеки.
Стек серверных технологий
При интерфейсной разработке вы можете выбирать только библиотеки и среды, с которыми вы будете работать – иначе вы будете вынуждены мириться с тем, что вам придется использовать HTML, CSS и JavaScript. Если же речь идет о серверной разработке, то здесь вы вольны выбирать практически все, начиная с языка. Ниже приведен список языков, которые вы можете выбрать, среды, в которых они работают и причины, почему их стоит включить в стек технологий.
Серверные инструменты:
- JavaScript. Чаще всего используется разработчиками, которые хотят писать и клиентскую, и серверную часть на одном языке. Одной из популярных библиотек JavaScript является Express.js.
- Python. Чаще всего используется новичками, так как его легко изучить, и работать с библиотеками данных Python довольно просто. Самыми популярными фреймворками для Python являются Flask и Django.
- C#. Чаще всего используется для серверов Microsoft Windows или там, где необходим строгий контроль типов.
- PHP. Чаще всего используется для быстрой разработки, на общем хостинге и на популярных платформах CMS.
- Go. Чаще всего используется там, где требуется высокая производительность и возможность параллельного выполнения нескольких процессов.
- Ruby. Используется там, где приоритетом является скорость разработки и развертывания. Для него существует довольно популярный фреймворк – Ruby on Rails.
- Java. Используется в разработке корпоративных приложений и обработке больших данных. Как правило, используется в среде Spring.
- MongoDB. Используется для хранения информации в базах данных NoSQL.
У многих из этих языков есть фреймворки для веб-разработки, которые предназначены для создания полноценной веб-страницы на сервере. Они используют JavaScript только для динамических эффектов. К сожалению, значительная часть веб-разработки не придерживаются такого шаблона.
Большинство веб-приложений используют серверный код только для того, чтобы отправлять данные клиенту, а интерфейсный код уже генерирует веб-страницу, которую вы видите. Эти службы называются API. При использовании API ваш стек серверных технологий также может быть частью стека технологий для мобильной разработки, так как они оба используют одни и те же данные.
Полный стек технологий
Полный стек технологий – это совокупность стеков серверных и интерфейсных технологий. На протяжении многих лет не было особого смысла в том, чтобы рассматривать их по отдельности. По сути, это два разных приложения, которые обмениваются данными через Интернет. Все это изменилось в 2009 году, когда вышла первая версия Node.js. Это означало, что, если вы выберите его как часть вашего стека технологий, то вам не потребуется нанимать две команды разработчиков или разработчиков, которые бы знали больше одного языка программирования.
Типы стеков технологий для мобильной разработки
Одно время существовало три мобильные платформы (iOS, Android и Windows), и для того, чтобы все пользователи могли использовать ваше приложение, приходилось работать со всеми. Windows перестали делать телефоны, но разработчикам все равно приходится учитывать две отдельные операционные системы при выборе стека технологий, применяемых для разработки мобильных приложений. И первый вопрос: разрабатывать нативные или кроссплатформенные приложения?
Стек технологий для разработки нативных мобильных приложений
Вот несколько преимуществ выбора такого стека технологий:
- Производительность вашего приложения повысится
- Приложение станет более устойчивым
- Вы перестанете находиться в сильной зависимости от разработчиков сторонних библиотек
Недостаток здесь заключается в том, что для того, чтобы создать приложение, вам потребуется две команды разработчиков или разработчики, обладающие навыками работы с двумя технологиями.
Если вы захотите воспользоваться стеком нативных технологий для Android, то вам придется принять еще одно решение относительно вашего стека мобильных технологий – будете ли вы писать код на Java или Kotlin. Даже Google, который разработал Android, рекомендует использовать Kotlin. Конечно, разработчики его тоже знают, однако, поскольку Java используется для самых различных задач, вы все же найдете больше разработчиков Java, готовых взяться за эту работу.
Если вы собираетесь использовать нативные технологии в iOS, у вас также есть языки на выбор: Objective-C и Swift. Apple рекомендует Swift, но опять же, ваш выбор зависит от того, какой из них вы лучше знаете.
Стек технологий для разработки кроссплатформенных мобильных приложений
Есть еще один вариант. Вы можете использовать в вашем стеке мобильных технологий фреймворк для кроссплатформенной разработки. Такие фреймворки позволяют писать код на одном языке, а затем компилировать приложения, которые будут работать на всех платформах. К преимуществам здесь можно отнести скорость разработки и то, что многие фрйемворки используют язык программирования, который знаком многим разработчикам, в частности веб-разработчикам.
Одним из самых распространенных языков, используемых для разработки кроссплатформенных приложения, является JavaScript. И вот примеры некоторых платформ, которые используют JavaScript: React Native, Apache Cordova, Ionic и Xamarin.