Рейтинги и обзоры
digital-рынка
Рейтинги фреймворков 2016 Рейтинги фреймворков 2016

Рейтинги фреймворков 2016

Frontend и backend-инструменты для разработки

12 апреля 2016

Рейтинг backend-фреймворков для разработки сайта

# Название Год Языки Базы данных
1
+1
Yii
2008
PHP
MySQL, PostgreSQL, MS SQL, SQLite, Oracle, MariaDB, CUBRID
2
−1
2012
PHP
MySQL, PostgreSQL, MS SQL, SQLite, Oracle, IBM DB2
$ Directual 2016 Low-code платформа — фреймворк для быстрой разработки
3
0
2005
PHP
MySQL, PostgreSQL, MS SQL, SQLite, Oracle и др.
4
new
2009
JavaScript
MySQL, PostgreSQL, SQLite, MongoDB, CouchDB и др.
5
−1
2005
Ruby
MySQL, PostgreSQL, MS SQL, SQLite, Oracle, Firebird, DB2
6
1
2003
Python
MySQL, PostgreSQL, SQLite, Oracle
7
−1
2002
C#
MS SQL
8
−2
2001
PHP
MySQL, MariaDB, SQLite
9
new
2011
PHP
MySQL, PostgreSQL, MS SQL, SQLite
10
−5
2006
PHP
MySQL, PostgreSQL, MS SQL, SQLite, Oracle
10
−2
2007
PHP
MySQL, PostgreSQL, MS SQL
11
−4
2005
PHP
PostgreSQL, MySQL, SQLite

Среди других backend-фреймворков при обработке данных респондентов рассматривались: Express и ASP.NET MVC.

Рейтинг frontend-фреймворков для разработки сайта

# Название Год Языки
1
0
2006
JavaScript
2
0
2011
HTML, CSS, JavaScript
$ Directual 2016 Low-code платформа — фреймворк для быстрой разработки
3
4
2009
JavaScript
4
3
2010
JavaScript
5
−2
2005
JavaScript
6
new
2013
JavaScript
7
−3
2006
JavaScript
8
−3
2010
JavaScript
9
new
2010
JavaScript
10
new
2009
JavaScript
11
new
2011
JavaScript
11
new
2012
JavaScript
12
new
2012
JavaScript

Среди других frontend-фреймворков при обработке данных респондентов рассматривались: Dojo Toolkit и Foundation.

Комментарии экспертов

Александр Макарчук
qb, Генеральный директор
Алексей Зубань
Wow, Технический директор
Александр Макаров
Yii, Член основной команды разработки; Stay.com, Инженер
Алексей Персианов
ADV, Директор
Александр Смирнов
Greensight, Ведущий разработчик
Алексей Федоров
«Одноклассники», Технический евангелист; Организатор конференций по Java (JPoint, Joker, JBreak) и .NET (DotNext)

1. За последние несколько лет количество фреймворков в мире веб-разработки резко выросло, причем за каждым из них стоит большое количество людей, которые убеждают, что это лучший инструмент в своей области. Как выбрать правильный и подходящий фреймворк или набор фреймворков на проект?

Александр Макарчук, qb
У каждого фреймворка есть огромное количество поклонников и противников. При выборе фреймворка необходимо учитывать несколько факторов. Во-первых, фреймворк должен иметь ровно столько возможностей, сколько необходимо проекту. Излишний функционал не нужен, но при этом никогда не должно возникать ограничений при доработке проекта. Во-вторых, время разработки сайта не должно увеличиваться за счет выбора того или иного фреймворка. В-третьих, фреймворк должен быть достаточно распространен, для того чтобы проект можно было передать другому разработчику. Наконец, безопасность фреймворка — один из важнейших показателей. Все фреймворки хороши, если находятся в правильных руках.

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

Александр Макаров, Yii
Нужно проанализировать задачу, понять, что нужно от фреймворка, выбрать топ-5 подходящих, написать на них небольшое приложение и оставить тот, что показал себя лучше остальных.

Алексей Персианов, Михаил Парфенюк, ADV
Надо оценивать степень соответствия функционала «из коробки» требованиям проекта, а также горизонт применения данного решения (как скоро закончится готовый функционал). При этом необходимо оценивать экспертизу команды и наличие на рынке специалистов, которые работают с данным фреймворком. Обязательно надо обратить внимание, поддерживает ли решение обратную совместимость, если создатели фреймворка меняют от версии к версии все API тогда использовать его точно не стоит.

Александр Смирнов, Greensight
Выбрать из известного набора фреймворков несложно, так как при проектировании сразу видна потребность в тех или иных технологиях. Далее стоит вопрос увеличения известных фреймворков, но тут уже каждый по-своему подходит. Мне кажется, что стоит в первую очередь изучить фреймворки, которые охватывают разные технологии и наиболее отличаются друг от друга. Например, какой-нибудь классический MVC фреймворк и что-нибудь с другим подходом.

Алексей Федоров, «Одноклассники»
Как и с любыми инструментами, ответ сильно зависит от сроков проекта. Если проект короткий, берите или то, с чем можно быстро стартовать (например, Bootstrap), или то, что хотите изучить и с чем вы хотите «поковыряться». Если проект длинный, лучше собирать собственную библиотеку компонентов.

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

Александр Макарчук, qb
Зачастую встроенный готовый функционал позволяет собрать достаточно неплохую «коробку». При каком-либо отклонении приходится либо «костылить», либо «перепиливать» функционал. Тенденция будет усиливаться, так как время разработки — очень важный показатель. Но это приведет к тому, что в интернете будет появляться все больше и больше «кривых» сайтов.

Единственный плюс готового функционала — он часто помогает избежать рутинного программирования.

Александр Макаров, Yii
Да, продолжится. Риски, главным образом, в найме специализирующихся на одном фреймворке сотрудников. Как только задачи выйдут за рамки фреймворка или возникнет необходимость в использовании другого фреймворка, такой сотрудник может показать себя плохо.

Алексей Персианов, Михаил Парфенюк, ADV
Если сегментация технических решений будет углубляться, то так и будет. Но в данный момент большинство фреймворков поддерживают схожий функционал, и сегментация не слишком высока. Специфичные решения есть только для самых массовых видов задач.

Александр Смирнов, Greensight
Да, выбор технологического решения напрямую зависит от потребностей проекта, изученного техническим руководителем инструментария и его способности сопоставить одно с другим. Выбор языка — это скорее вопрос ресурсов: насколько легко найти разработчика в команду, если будет потребность ее расширения и т.п.

Алексей Федоров, «Одноклассники»
Языки и фреймворки, особенно на поздних стадиях развития, это ортогональные вещи. В развитых экосистемах фреймворки, как правило, имеют API для работы с несколькими языками и наоборот: языки с большой экосистемой имеют множество фреймворков, готовых для использования.

В современных условиях при старте проекта с нуля выбор фреймворка действительно часто стоит на первом месте, еще до выбора языка. Если же вам достался legacy-проект, то, как правило, большого выбора у вас нет и язык вам достается «в наследство».

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

3. Какие факторы дают гарантию надежности и стабильности фреймворка? Что позволит смело использовать инструмент на продакшне?

Александр Макарчук, qb
Гарантия надежности фреймворка — его отказоустойчивость. Правильная разработка, оптимизация запросов, хорошее кеширование — вот залог успеха. Можно ли выпускать сайт в продакшн, расскажет нагрузочное тестирование.

Александр Макаров, Yii
Наличие стабильных релизов, большое количество пользователей, наличие автоматизированных тестов, наличие активности, open source.

Алексей Персианов, Михаил Парфенюк, ADV
Поддержка фреймворка, его совместимость с предыдущими версиями и комьюнити.

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

Алексей Федоров, «Одноклассники»
Во-первых, это open source, то есть открытый код. Это некоторая гарантия того, что если у вас что-то сломается в продакшне, вы сможете починить это своими руками. Во-вторых, вендор. Вендор языка или фреймворка может давать вам те или иные гарантии, часто подкрепленные контрактом. В-третьих, обратная совместимость. На практике это выливается в использование правильных версий языков и библиотек. Не стоит тащить в ваш продакшн библиотеку версии 0.7: как правило, если у языка или фреймворка версия ниже, чем 1.0, то нет никаких гарантий обратной совместимости.

4. Каково направление развития фреймворков, как они будут изменяться в дальнейшем?

Александр Макарчук, qb
Как ни прескорбно, но, на мой взгляд, фреймворки будут двигаться по пути «облегчения» разработки. Типовые решения, готовые модули и прочее — все для того, чтобы неподготовленный человек смог развернуть сайт.

Алексей Зубань, Wow
Для многих популярных платформ период наращивания функциональности прошел. Сейчас развитие сфокусировано на увеличении быстродействия. Это справедливо и для frontend-, и для backend-фреймворков. В качестве частного решения может служить разбивка фреймворка на логические модули. Для проекта должен собираться комплект библиотек, решающих только необходимые задачи. А также ожидаю решений, все плотнее связывающих клиентскую и серверную часть, фреймворков с единым синтаксисом и логикой работы с контентом.

Алексей Персианов, Михаил Парфенюк, ADV
Я не вижу явного тренда, кроме того, что востребованные функциональные ниши заполняются решениями. К сожалению, очень медленно.

Александр Смирнов, Greensight
Каждый фреймворк развивается по-своему, но основные изменения касаются закрытия его слабых мест и упрощения процесса разработки и поддержки.

Алексей Федоров, «Одноклассники»
Упрощение или, говоря более строго, коммодитизация. Фреймворки становятся все сложнее и навороченнее внутри, но все проще для пользователя. Такое упрощение — отличный способ для авторов снизить порог входа в их разработку с тем, чтобы увлечь своим языком или фреймворком как можно больше пользователей.

5. Какие еще фреймворки могут появиться? Какие области еще не закрыты и ждут появления своего удобного инструмента?

Александр Макаров, Yii
Абсолютно любые. Всегда можно сделать лучше.

Алексей Персианов, Михаил Парфенюк, ADV
Не хочу «суфлировать» разработчикам готового ПО. Таких областей масса, но надо оценивать их емкость. Очевидно, емкие ниши уже протаптываются, а остальные пока потенциальных поставщиков не привлекают.

Александр Смирнов, Greensight
Развитие фреймворков зависит от потребностей рынка и возможностей браузеров и пользовательских девайсов. Развитие фреймворков напрямую зависит от развития и появления новых платформ: Canvas, WebGL, Node.js — как только появлялись эти технологии, в скором времени появлялись и фреймворки по работе с ними. Как только появляется новая технология, она сразу обрастает соответствующими фреймворками.

Алексей Федоров, «Одноклассники»
Сейчас идут активные разработки вокруг контейнеризации. Подобные продукты еще очень далеки от идеала, с ними много проблем, поэтому многие большие проекты разрабатывают собственные решения в этой области для работы с большими инфраструктурами.

6. Сейчас фреймворками называют довольно широкий набор решений и библиотек. Может ли это измениться, появится ли более конкретная терминология? В рейтинге мы разделили фреймворки на frontend и backend. Как еще можно типизировать все это множество фреймворков?

Александр Макарчук, qb
Можно, но необходимости в этом не вижу.

Александр Макаров, Yii
Терминология есть и давно. API-фреймворки, REST-фреймворки, фреймворки-грабберы, фреймворки для мобильной разработки, модульные сетки, адаптивные фреймворки, фреймворки для модульной верстки. Перечислять можно бесконечно.

Алексей Персианов, Михаил Парфенюк, ADV
Да, фреймворками называют как «монстров», так и маленькие библиотеки с единственной функцией. В ближайшее время придет понимание, что такое фреймворк и библиотека, и появится четкое разделение. Что касается типизации, то на данный момент как раз и есть две ветки.

Алексей Федоров, «Одноклассники»
Типизировать можно кучей способов. Есть фреймворки для связи с базами данных, есть фреймвоки для связывания компонент, есть фреймворки для работы с сетью и еще для сотни-другой задач. Поэтому я бы не говорил о каком-либо строгом разделении.

7. Использование фреймворков в работе — временная мода или необходимость? Какие существуют доводы «за» и «против» использования фреймворков?

Александр Макарчук, qb
Безусловно, необходимость. Писать с нуля то, что написано во фреймворке и потом «латать дыры» — это наступать на чужие «грабли».

Алексей Зубань, Wow
Фреймворки, не навязанные извне технологии. Большинство из них создается коллективно заинтересованным сообществом разработчиков. И они вполне успешно решают актуальные проблемы, стоящие перед разработчиками. Фреймворки — добро. Другое дело, если инструмент используется неправильно или в неподходящих условиях, но это не минус технологии, это вопрос образования разработчиков.

Александр Макаров, Yii
Необходимость. Достичь той же скорости и качества без популярных решений сейчас трудно. На разработку с нуля аналога того же качества уйдут годы.

Алексей Персианов, Михаил Парфенюк, ADV
Использование фреймворков — это необходимость, которая ускоряет, стандартизирует и удешевляет разработку. Доводами «за» и «против» является распространенность фреймворка и его реальная необходимость проекту.

Александр Смирнов, Greensight
Использование фреймворков — это скорее неизбежность. Даже если вы решите писать приложение сложнее «Hello, world» с нуля, в результате все равно получится какой-нибудь фреймворк.

Алексей Федоров, «Одноклассники»
Использование готовых решений, с одной стороны, сильно ускоряет разработку и внедрение, а с другой — вносит в ваш проект чужой legacy-код с кучей своих багов и ограничений. Фреймворки — это слой, на котором работает ваше приложение. Под этим слоем лежит ваш рантайм, под ним — операционная система, а под ним — железо. И все это, заметьте — готовые решения. Я не вижу тренда ухода с готовых процессоров на процессоры собственной разработки или тренда перехода с готовых операционных систем на что-то самописное. И для фреймворков я такого тренда тоже не вижу.

8. Когда при разработке веб-проекта наступает уровень, после которого уже сложно и неперспективно для дальнейшего развития проекта использовать CMS и лучше писать проект на одном из фреймворков?

Александр Макарчук, qb
Выбирать платформу нужно на этапе проектирования, а не в какой-либо другой момент жизненного цикла проекта.

Алексей Зубань, Wow
Понятие CMS и фреймворка не конфликтуют между собой. CMS — это шаблонный интерфейс по управлению приложением. В основе CMS вполне могут быть использованы фреймворки. И решение о необходимости использования или создания такого интерфейса должно опираться на функциональность приложения. Нетиповые вещи сложнее реализовывать в шаблонных рамках. Большая гибкость фреймворков может быть полезна, когда над проектом работает несколько команд и/или необходимо внедрять системы непрерывной интеграции.

Александр Макаров, Yii
Никогда. Есть проекты, которые вписываются в CMS. Есть проекты, которые не вписываются в CMS. Инструмент надо выбирать по задаче, а не задачи подгонять под инструмент.

Алексей Персианов, Михаил Парфенюк, ADV
Когда становится понятно, что в обозримом плане развития проекта слишком много задач приходится писать практически с нуля.

Александр Смирнов, Greensight
Когда CMS не хватает гибкости и приходится ее ломать, чтобы реализовать задачу. Это же касается и фреймворков: при длительном развитии проекта не всегда хватает гибкости и приходится переходить на другое решение или переписывать ключевые его части.

Алексей Федоров, «Одноклассники»
Когда затраты на разработку и поддержку становятся слишком большими.

Статистика
Исследование проводилось с августа 2014 по апрель 2016 года, сформировано на основе анкетирования 430+ digital-компаний и охватывает 12 530+ респондентов. Средний размер штата агентств, принимавших участие в исследовании — 29 человек, в среднем используется 5,5 фреймворков, максимум — 19.
Глоссарий
Фреймворк (или «каркас») — это программная платформа / обеспечение, набор библиотек и инструментов, позволяющий упростить и ускорить решение типовых задач конкретного языка программирования.

Backend — основная программно-аппаратная часть.
Frontend — внешний пользовательский интерфейс.
Важно отметить, что frontend- и backend-фреймворки — это устоявшаяся, но не совсем корректная классификация, более правильным является разделение на client-side и server-side.

В рейтингах представлены не только фреймворки, но и библиотеки. Например, jQuery, Ext JS, Underscore.js и Lodash.
Последние часто путают с фреймворками, но между ними есть существенная разница:
Библиотека — это набор подпрограмм с полезными функциями общего назначения. Она не определяет архитектуру приложения, а просто предоставляет средства, с помощью которых проще решать те или иные задачи.
Фреймворк же создает некие архитектурные ограничения: определяет общую структуру, ее разделение на классы и объекты, их основные функции и методы взаимодействия. Также у них разные направления вызовов: фреймворк вызывает код, а библиотека вызывается кодом.
Стоимость
Все представленные backend- и frontend-фреймворки бесплатны, за исключением Ext JS — продукта компании Sencha. Его стоимость колеблется от $895 до $1 895 (минимум 5 лицензий) в зависимости от версии: стандартная, про и премиум.

Подписаться на релизы и анонсы

Подписаться на релизы и анонсы

Мне это нравится