Что такое технологический стек?
Под стеком технологий понимается совокупность технологических принципов, компетенций и решений, используемых в разработке продукта (веб-сайта, программы для ПК, мобильногоприложения) и обеспечивающих эффективное его использование на практике. Основным критерием качества может быть завершенность продукта как пользовательского решения с конкурентоспособным функционалом. Без применения возможностей технологического стека в полном объеме создать завершенный продукт и наделить его необходимыми функциями не получится.
Эффективность применения технологических принципов, компетенций и решений для создания готового продукта зависит от накопленных в компании-разработчике знаний, умений и навыков, в числе которых:
- знание определенных языков программирования;
- знание иностранных языков (для прочтения технической документации по использованию в разработке зарубежных решений);
- умение работать с интерфейсами сред разработки;
- навыки разработки дизайна приложений.
Стеки технологий могут быть типовыми или специальными. При этом существуют типичные для определенного рыночного сегмента (стадии развития рынка) требования к составу компетенций разработчиков. Например, требования к знанию языков программирования или навыкам управления интерфейсами. Соответственно, при отсутствии таковых, разработчик не сможет воспользоваться всеми возможностями стека технологий для создания приложений или сервисов, востребованных в конкретном сегменте рынка.
В IT-индустрии термин «IT-стек» используется для обозначения определенно устойчивого, стандартизованного, доказавшего свою эффективность стека технологий. На практике IT-стек может быть представлен сложной структурой.
Выделяют при этом различные уровни IT-стека в рамках различных классификаций технологического стека.
Уровни IT-стека и виды стеков технологий
Другое основание для классификации стеков – степень стандартизации состава компонентов (технологий). Она может быть довольно строгой, и отклонения от стандартов приведут к нарушению функционирования всего стека. По степени стандартизации выделяют:
- корпоративные стеки – с самой строгой стандартизацией компонентов, которые во многих случаях нельзя видоизменить или исключить в силу закрытости кода интерфейса, используемого при реализации стека;
- стеки сегмента open source – с наименее строгой стандартизацией, степень которой может варьироваться в зависимости от конкретного вида open source;
- стеки смешанного типа, в которых могут быть использованы как технологии open source, так и элементы с закрытым кодом.
В связи со сложностью классификации технологических стеков и отсутствием единообразных подходов к ее пониманию разработчики приложений могут испытывать трудности в выборе подходящего стека. Рассмотрим основные критерии такого выбора, актуального для двух крупнейших сегментов IT-рынка – разработки веб-приложений и создания мобильных приложений.
Другое основание для классификации стеков – степень стандартизации состава компонентов (технологий). Она может быть довольно строгой, и отклонения от стандартов приведут к нарушению функционирования всего стека. По степени стандартизации выделяют:
- корпоративные стеки – с самой строгой стандартизацией компонентов, которые во многих случаях нельзя видоизменить или исключить в силу закрытости кода интерфейса, используемого при реализации стека;
- стеки сегмента open source – с наименее строгой стандартизацией, степень которой может варьироваться в зависимости от конкретного вида open source;
- стеки смешанного типа, в которых могут быть использованы как технологии open source, так и элементы с закрытым кодом.
В связи со сложностью классификации технологических стеков и отсутствием единообразных подходов к ее пониманию разработчики приложений могут испытывать трудности в выборе подходящего стека. Рассмотрим основные критерии такого выбора, актуального для двух крупнейших сегментов IT-рынка – разработки веб-приложений и создания мобильных приложений.
Как выбрать стек технологий?
Для разработки веб-приложений
Специфика разработки веб-приложения заключается в необходимости ее реализации на двух уровнях: клиентском и серверном.
Таким образом, формируются две основные совокупности технологий, включаемых в состав стека. На клиентском уровне будут задействованы:
- языки программирования, типичные для веб-разработки браузерных продуктов (HTML, JavaScript, Python и иные);
- интерфейс платформы, используемой для веб-разработки указанных продуктов (Yii, Django, Express.js, при этом конкретное решение, как правило, выбирается под определенный язык программирования).
В свою очередь, на серверном уровне будут применены:
- языки программирования бэкенд-части приложения (например, Java, PHP);
- языки систем управления базами данных (DDL, DML).
Выбор конкретного решения в рамках технологического стека зависит от масштабов проекта и финансовых возможностей компании, ведущей разработку приложения. Решения могут отличаться по цене и функционалу.
Для разработки мобильных приложений
Если речь идет о создании мобильных приложений на Android, то типичная структура технологического стека будет представлена:
- языками Java, Kotlin;
- интерфейсами Android Studio, Jetpack Compose.
Для создания приложений iOS чаще используются другие языки – Objective-C, Swift, C++, а также иные среды разработки – такие, как Xcode.
На практике технологии могут быть представлены в значительно более широком перечне, определяемом, опять же, с учетом масштабов проекта и ресурсов разработчика.
Современный стек технологий – тренды
Подходы к конфигурированию стеков меняются с течением времени. Это обусловлено развитием технологий и изменениями предпочтений целевых пользователей разрабатываемых приложений. Эксперты выделяют следующие тренды, влияющие на формирование структуры стеков:
1. Унификация и одновременное упрощение требований к составу компетенций для разработки продуктов.
Традиционно IT-разработчик – высококвалифицированный, высокооплачиваемый специалист, который обязательно привлекается к проектам любых масштабов. Но на современном IT-рынке появляются технологии, которые позволяют разрабатывать полноценные приложения без участия профессиональных программистов. Типичным носителем компетенций здесь становится специалист уровня citizen developer – обеспеченный необходимыми инструментами, он может показать высокую производительность и эффективность разработки.
2. Все более активное внедрение принципов blockchain для обеспечения доступа широкого круга пользователей к устойчивым, безопасным и высокопроизводительным технологиям разработки проектов и решений.
Разработчики будут стремиться к тому, чтобы не зависеть от политики поставщиков классического технологического инструментария, используемого в рамках стека. При этом можно ожидать постоянного проявления инициативы разработчиков, направленной на улучшение blockchain-инструментария: качество и интенсивность обратной связи с администраторами blockchain-ресурсов могут быть несопоставимо выше в сравнении с работой традиционных поставщиков.
3. Ускорение, более высокий уровень безопасности и надежности процессов внедрения и тестирования новых технологий, обеспечивающих рост конкурентоспособности разработчиков.
Консервативный подход к разработке веб-приложения или мобильного решения уступит место инновационному, в основе которого, в значительной степени, те же возможности blockchain. Разработчики будут заинтересованы в постоянном повышении производительности используемого инструментария.
4. Рост популярности стеков, приспособленных к оперативному изменению структуры.
На первые места выйдут проекты, которые можно адаптировать к меняющимся условиям IT-рынка, новым запросам потребителей и изменениям законодательства. Следовательно, постоянно будет расти в потребность в применении технологических стеков соответствующего типа.