С 2004 года мы успели поработать с очень разными платформами и технологиями. И первые 9 лет существования нашей компании мы занимались  разработкой проектов только в экосистеме PHP. Это дало нам много опыта и хорошее понимание внутреннего устройства многих из перечисленных ниже технологий и платформ.

А в 2013 году мы приняли решение обновить наш технологический стек для разработки новых проектов. Цель была достаточно простая — нам нужны были технологии, которые были бы более перспективными с точки зрения возможностей и качества разработки. В результате мы остановились на Ruby для веб-разработки, на Python для анализа данных и машинного обучения, а также на Go для наиболее нагруженных API и веб-сервисов.

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

Собственно поэтому мы продолжаем работать с этими технологиями, хоть и не столь активно, как ранее.

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

Если подходить к выбору платформ и систем с позиции логики и здравого смысла, то стоит начать с того, что у каждого инструмента есть своя область применения и очень редко бывает так, что эта самая область применения достаточно широкая. Обычно за универсальность и быстрый старт приходится расплачиваться производительностью, усложнением сопровождения и наличием более низкого «потолка» по функциональным возможностям. И наоборот: за высокую производительность, сопровождаемость и безопасность тоже приходится платить, но уже большей сложностью, порогом вхождения и затратами ресурсов.

Грамотный выбор любых технологий основывается на критериях, которые будут важны в рамках вашего горизонта планирования:

  • Нужен простой сайт «вчера» и планов на развитие почти нет — делайте его на SaaS, не тратьте время и ресурсы на заказную разработку, а сэкономленные деньги лучше потратьте на маркетинг. Или используйте бесплатную CMS и минимизируйте затраты на разработку.
  • Нужен средний по сложности сайт без серьёзных планов по развитию и без жестких требований к производительности, нагрузкам и безопасности — берите CMS, обычно это экономически наиболее целесообразно. 
  • С ростом сложности проекта, при его существенных отличиях от типового или при наличии высоких требований к качеству ПО, CMS обычно начинают уступать веб-фреймворкам по стоимости разработки и уровню достижимого качества.

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

Мы по-прежнему работаем со многими технологиями и платформами, которые больше не используем для создания новых проектов. В основном, это проекты из экосистемы языка программирования PHP.

Legacy-технологии

PHP
Система управления сайтами 1С-Битрикс
Система управления сайтами UMI.CMS
Yii
Symfony
Laravel
Zend Framework
CodeIgniter
WordPress
Реляционная СУБД MySQL
Реляционная СУБД MariaDB
Веб-сервер Apache
Bootstrap
jQuery
Хранилище Memcached
MongoDB

Статьи по теме:

О технологиях в веб-разработке
04.03.2014  |  Статьи  —  веб-разработка
В веб-разработке используется много различных технологий и готовых продуктов: это языки программирования и разметки в «чистом» виде, базы данных и другие хранилища информации, программные продукты для упрощения разработки (фреймворки и системы управления сайтами), а также серверное программное обеспечение.
CMS — коробочные системы управления сайтами
Система управления сайтом — это программный продукт, который создан для упрощения создания основных видов сайтов. Как правило, системы управления достаточно универсальны, то есть на них можно собрать что угодно: от информационного сайта до интернет-магазина или портала.
Фреймворки в веб-разработке
Фреймворки — это программные продукты, которые упрощают создание и поддержку технически сложных или нагруженных проектов. Фреймворк, как правило, содержит только базовые программные модули, а все специфичные для проекта компоненты реализуются разработчиком на их основе. Тем самым достигается не только высокая скорость разработки, но и большая производительность и надёжность решений.
Выбор между CMS и фреймворком
​Технически любой функционал может быть реализован как на CMS, так и на фреймворке. Однако некоторые проекты проще сделать на CMS, а некоторые — на фреймворке.
Рекомендации по выбору CMS и фреймворков
При выборе конкретной платформы для разработки часто возникают сложности. Бывает непросто принять взвешенное решение, в этом случае будет полезен формализованный алгоритм выбора.
Серверные языки программирования
Серверные языки программирования нужны для реализации бизнес-логики, то есть разработчик при помощи языка программирования описывает возможные сценарии использования сайта или приложения.
Реляционные базы данных и NoSQL-хранилища
13.03.2019  |  Статьи  —  СУБД  /  хранение данных  /  SQL  /  NoSQL  /  серверное ПО
Базы данных служат для хранения и обработки данных. Бывают реляционные (SQL) и нереляционные (NoSQL) системы управления базами данных.