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

Что такое стек технологий?

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

  • внешний интерфейс, который вращается вокруг всего, что отображается на экранах пользователей,
  • серверная часть, которая остается невидимой для пользователей, но фактически формирует основу веб-приложения и «питает» клиентскую часть. Наиболее распространенными внутренними языками являются Python, Ruby или PHP, но для создания веб-приложения вам также потребуется выбрать базу данных для хранения данных, а также сервер для обработки запросов.

Наиболее распространенные компоненты внешнего интерфейса:

  • HTML (язык гипертекстовой разметки), определяющий структуру информации, представляемой в браузере,
  • CSS (каскадные таблицы стилей), которые определяют стиль приложения, включая цвета и шрифты,
  • JavaScript, объектно-ориентированный язык программирования, обеспечивающий интерактивность на веб-сайте, и его фреймворки, такие как Angular, React и Vue.js. Самым популярным фреймворком для HTML и CSS является Bootstrap.

Средняя часть обычно более сложная и разнообразная — вы можете выбирать из множества:

  • языки программирования (Ruby, Python, PHP, Java),
  • базы данных (MySQL, PostgreSQL, MongoDB),
  • фреймворки (Django, Ruby on Rails, Laravel),
  • среды выполнения (Node.js),
  • сервера (Apache, Nginx) и
  • операционные системы (Linux, Windows, macOS, Android, iOS).

Как выбрать стек технологий?

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

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

Выбор правильного стека технологий может быть особенно сложным для малых предприятий и стартапов, которые обычно работают с ограниченными ресурсами, а последствия неправильного решения могут быть даже более серьезными, чем в более крупной организации. С другой стороны, у корпораций со сложившимися отделами разработки программного обеспечения для ИТ может возникнуть соблазн использовать технологии, с которыми у них уже есть опыт, вместо того, чтобы выбирать те, которые идеально подходят для нужд конкретного проекта. Что нужно учитывать, чтобы сделать это с умом?

  • Начните с размера и сложности проекта. Простые приложения, жесткие сроки и ограниченный бюджет потребуют менее сложных решений. Однако когда дело доходит до более крупных проектов, скорее всего, потребуется использование более передовых технологий.
  • В то же время тип продукта, который вы разрабатываете, может легко повлиять на стек технологий. Например, если вы работаете над стартапом или быстрым MVP, вы, вероятно, выберете Ruby, хотя Python здесь тоже может быть отличным выбором. Если говорить о Python, то он определенно предпочтительнее в приложениях, использующих машинное обучение и большие данные.
  • Даже если вы не рассматриваете это в данный момент, через некоторое время вы, возможно, захотите масштабировать свое приложение, потому что большинство предпринимателей хотят, чтобы их продукты росли. Эту возможность лучше осознать в самом начале, так как это важный фактор при выборе стека технологий. Когда приложение растет, ему приходится обрабатывать больше запросов в минуту. Когда рост экспоненциальный, а приложение не готово к этому, его производительность может значительно упасть, что приводит к разгневанным пользователям, которые оставляют плохие отзывы и рассматривают возможность использования других сервисов. Масштабирование (вверх или вниз, но давайте пока сосредоточимся на масштабировании) может показаться простой вещью, но реальность далека от этого, поскольку затрагивает каждую часть стека — некоторые технологии более гибкие, чем другие, некоторые специально разработаны для MVP и небольших проектов, в то время как некоторые или лучше подходят для больших корпоративных приложений. Возможно, сейчас вам нужен простой MVP, но что произойдет, если он станет колоссальным успехом? Такую возможность нельзя предсказать, но и игнорировать нельзя.
  • Навыки и доступность команды разработчиков программного обеспечения также будут иметь значение. Даже если вы выберете предпочтительную технологию, может оказаться, что найти опытных разработчиков, которые специализируются на ней, на самом деле сложно, и в конце концов вы будете вынуждены согласиться на что-то другое. Если это так, выберите надежного поставщика программного обеспечения для сотрудничества, а не создавайте собственную команду.
  • Мы также считаем, чтовыбор технологий с открытым исходным кодом полезен для бизнеса, и речь идет не только о сокращении расходов. Конечно, инструменты с открытым исходным кодом бесплатны или стоят очень дешево, но список преимуществ с открытым исходным кодом длинный. Начнем с юридической свободы, которую они дают разработчикам — проприетарные инструменты обычно имеют некоторые ограничения в своих лицензиях, в то время как open-source можно редактировать как угодно. Открытый исходный код также поставляется с кучей документации и других ресурсов, таких как вики-сайты, форумы, блоги и контент, созданный сообществом. Это огромная помощь, если вы застряли, нашли ошибку или не знаете, как лучше всего решить проблему. Говоря о сообществе — это может быть самым большим преимуществом открытого исходного кода. Каждая технология имеет обширное и активно вовлеченное сообщество разработчиков, мотивированных признанием коллег и необходимостью сделать что-то великое вместе.

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

***
Первоначально опубликовано Future Mind.