Добавлен: 15.05.2023
Просмотров: 580
Скачиваний: 5
СОДЕРЖАНИЕ
1. История и проблематика развития веб-технологий
2. Выбор языка программирования, фреймворка, CMS для написания веб-приложения
2.1. Классификация веб-проектов
2.2. Обзор языков программирования для веб-разработки
2.4. Системы управления контентом (CMS)
2.7. Тренды развития веб-технологий
3. Выбор инструментов для разработки веб-приложений
3.1. Интегрированные среды разработки
2. Выбор языка программирования, фреймворка, CMS для написания веб-приложения
Как было показано в предыдущей главе, рынок технологий для разработки веб-приложений складывался достаточно длительное время (более 20 лет), причем этот процесс происходил во многом стихийно. Развитие веб-практик продолжается, причем интенсивность смены парадигм в отрасли остается высокой. Современный веб-разработчик вынужден осваивать новые методики и концепции порой чаще, чем раз в год. Такая интенсивность обуславливает влияние множества случайных факторов при выборе инструментов веб-разработки: мода, предвзятые советы экспертов, уже привыкших к определенному инструментарию и считающих его наилучшим, коммерческие факторы (вознаграждения за использование тех или иных платных платформ) и т.п.
Объективными критериями выбора средств веб-разработки можно считать следующие:
- размер и тип проекта;
- сложность проекта;
- скорость разработки;
- стоимость специалистов;
- доступность специалистов;
- доступные инструменты разработки;
- наличие готовых решений;
- гибкость решения;
- наличие широкого программистского сообщества;
- отказоустойчивость решения;
- перспективы развития;
- наличие подробной документации;
- стоимость поддержки;
- требования к нагрузкам;
- требования к безопасности;
- кроссплатформенность;
- возможности интеграции с другими решениями[17].
2.1. Классификация веб-проектов
Начать разработку веб-приложения следует с определения типа проекта. В зависимости от сложности, их можно разделить на:
- простые, как, например, сайт-визитка, интернет-магазин начального уровня, приложения для несложных задач (выбор цвета изделия, расчет геометрических параметров и т.п; при реализации таких проектов используются готовые (коробочные) решения, шаблоны;
- средние: интернет-магазины со сложной структурой, маркетплейсы, порталы городского, регионального уровня, сервисы (например, для заказа такси), приложения для решения сложных задач (обучение иностранному языку, сложные расчеты и т.п.);
- сложные (масштабные порталы, социальные сети, инновационные и не типовые решения); такие проекты разрабатываются на языке программирования “с нуля”: проектируется уникальное ядро, клиентские и серверные модули, собственные стили и т.п.[18]
Масштабные проекты, за которыми обычно стоят крупные корпорации, могут состоять из множества разнородных элементов: в основе задействован один язык программирования и несколько вспомогательных. Это относится и к базами данных: для одних задач используются реляционные, для других базы типа «ключ/значение» и т.п.
На этапе проектирования продумываются основные блоки будущего сайта. Для масштабных проектов проектированию отводится особая роль и уделяется много времени (до нескольких недель). При этом круг применяемых технологий может быть очень широк. Например, в приложениях социальной сети Instagram, по данным блога Insight IT, задействованы следующие технологии:
- Ubuntu Server 14.04 LTS — основная серверная операционная система;
- Python — основной язык программирования серверной части;
- Django — фреймворк для Python;
- nginx — второй уровень балансировки входящих HTTP-запросов;
- gunicorn — WSGI-сервер;
- HAProxy — балансировка нагрузки внутри системы;
- PostgreSQL — основное хранилище данных;
- postgis — поддержка гео-запросов;
- pgfouine — отчеты на основе логов;
- pgbouncer — создание пула соединений;
- Redis — дополнительное хранилище данных;
- Memcached — кэширование;
- Gearman — очередь задач;
- Solr — гео-поиск;
- munin, statsd, pingdom — мониторинг;
- Fabric — управление кластером;
- xfs — файловая система[19].
Для выбора платформы веб-приложения (ОС, языка, фреймворка), следует учитывать, что в веб-технологиях можно выделить 3 уровня абстракции:
- продукт, написанный на “чистом языке”, т.е. без привлечения сторонних «прослоек»; как уже было сказано, крупные it-компании, такие как Instagram, YouTube, Pinterest, Tumblr, Dropbox, Twitter, Facebook, Amazon, Digg, LinkedIn и др., разрабатывают собственные уникальные решения для своих специфических задач; это обусловлено тем, что они обслуживают миллионы и миллиарды пользователей, и типичные решения, рассчитанные на гораздо меньшие нагрузки, им не подходят; крупнейшие проекты создают новые технологии для себя, так как уже существующие их не устраивают, при этом зачастую они выкладывают свои наработки для всеобщего использования; можно выделить и другую крайность в создании проектов, написанных на “чистом языке”: высококвалифицированному программисту легче решить простую задачу (например, написать специфический веб-калькулятор) без привлечения посторонних средств;
- продукт, написанный на фреимворке; фреймворк - среда разработки с готовыми инструментами, с одной стороны ускоряющая достижение результата, с другой - ограничивающий возможности программиста; фреймворки обеспечивают достаточную производительность для обслуживания проектов средней сложности (до нескольких миллионов посещений в месяц);
- продукт, построенный на базе CMS (Content Management System[20]) - готовые решения, конструктор, из которого помодульно можно собрать требуемый проект. Работа сводится в данном случае не к программированию, а настройке. Ввиду большого количества ограничений, этот метод не всегда подходит для создания веб-приложений с высокой степенью специализации. На CMS делаются простые сайты с посещаемостью до миллиона пользователей в месяц. Примером CMS может служить ПО “Бистрикс” для организации интернет-магазинов[21].
Уровни абстракции взаимно связаны: на “чистом языке” может быть написан фреймворк, а на фреймворке - CMS. Для каждого популярного языка программирования может существовать по несколько фреймворков и CMS.
2.2. Обзор языков программирования для веб-разработки
Сегодня для веб-разработки используется большое количество языков программирования (ЯП). Выбирая ЯП для проекта, следует руководствоваться объективными критериями и задачами проекта. В крупных порталах может использоваться сразу несколько языков программирования. Не следует боятся смеси технологий в большом проекте, хотя и допускать такое целесообразно только когда это действительно необходимо, а также учитывать, что не все разработки совместимы. Примером совместного использования гетерогенных (разнородных) технологий является компания Google. Разные части его серверного хозяйства написаны на C/C++, Java, Python, JS и др. Google создает новые технологии, например популярный фреймворк Angular.
Рассмотрим краткие характеристики популярных языков программирования для веб-разработки:
- PHP (PHP: Hypertext Preprocessor): используется для простых и средних проектов. На нем написано много “коробочных” решений. Программистов, которые пишут на этом языке, довольно много, хотя в последние годы его популярность заметно падает. Задействован в проектах: Facebook, Вконтакте, КиноПоиск. PHP не следует относить к полноценным языкам программирования. Это, скорее, комбинация из синтаксиса html и вставок на языке Си, исполняемых в момент отдачи документа сервером клиенту. Возникнув как персональный проект Расмуса Лердорфа, PHP быстро оброс модулями, библиотеками, средствами разработки и в 2000-х годах стал доминирующей технологией на рынке серверной веб-разработки. На основе PHP создано множество готовых решений, завоевавших большую популярность: Drupal, Joomla, Wordpress и др. Следует также отметить, что концепция PHP повлияла на другие языки программирования. Динамические страницы, содержащие «серверные вставки», появились для Java (jsp), Node.js (exp), .NET (asp)[22].
- Python - современный скриптовый (интерпретируемый) язык для быстрой и при этом качественной разработки. Используется для средних и больших проектов. Задействован в проектах: Instagram, Pinterest, Reddit. Для Pyton характерна высокая производительность, большое количество библиотек для решения всевозможных задач, в том числе связанных с веб-разработкой, многочисленное сообщество программистов, готовых оказать помощь начинающим, высокая скорость разработки, поскольку Python-скрипты не требуют компиляции и сборки[23].
- Ruby: используется для разработки простых и средних проектов (стартапы). Задействован в проектах: 500px, Groupon, Airbnb. Веб-расширения языка Ruby называется Ruby on Rails (RoR). Это фреймворк, реализующий архитектурный шаблон Model-View-Controller для веб-приложений. Он обеспечивает интеграцию с сервером и базой данных. Ruby нацелен на максимальное повторное использование модулей, минимизирующее повторение кода в приложениях[24];
- Java: разработка на этом языке требует больших затрат времени. Его используют для больших проектов со специфическими требованиями, например в банковской сфере. Хорошо подходит для проектов, в которые вовлечено много программистов, т.к. в нем хорошо реализована модульность. Задействован в проектах: Ebay, Amazon, Alibaba. Java — один из старейших языков программирования, присутствующих на рынке. Он разработан в начале 1990-х гг. в корпорации Sun Microsystems (затем передан компании Oracle), причем одной из целей его создания было внедрение так называемых апплетов — дополнительных элементов интерактивности — на веб-страницы, т. е. Java изначально была ориентирована, среди прочего, и на примерение для разработки веб-приложений.. Поэтому проблемы, характерные для веба, решаются на Java достаточно эффективно[25].
- C# - аналог Java для разработок в среде Microsoft Windows. Используют в больших проектах в сфере финансов и т.п. Задействован в проектах: Guru, Stack Overflow, Bank of America. Microsoft с середины 1990-х гг. большое внимание уделяла повышению доли своего влияния в вебе. Ее концепция .NET разрабатывалась как альтернатива Java и содержала эффективные модули для построения веб-приложений[26]
- JavaScript - простой и быстро развивающийся скриптовый язык. Задумывался в начале 1990-х как средство украшения веб-страниц, но к настоящему времени вырос в полноценную среду программирования с большим количеством библиотек, фреймворков, инструментов сборки, утилит, пакетных менеджеров и прочих элементов инфраструктуры. Используется для средних и больших проектов. Его большим достоинством, помимо прочих, является то, что один и тот же синтаксис используется для разработки как клиентской, так и серверной частей проекта. Задействован в проектах: LinkedIn, Walmart, PayPal.[27]

Рисунок 4: Популярность языков программирования на 2018 г.
2.3. Фреймворки и платформы
На каждом языке программирования разработано по несколько фреймворков, представляющих собой наборы готовых настраиваемых компонентов для создания веб-приложений. Среди фреймворков есть универсальные, т.е. подходящие для любых проектов (например, Angular, React, Vue, о которых пойдет речь ниже), так и узкоспециализированные, например Sylius - E-commerce фреймворк на базе Symfony.
На фреймворках можно разрабатывать достаточно большие и сложные веб-приложения с уникальным функционалом. Это требует меньших затрат, чем написание на “чистом языке”. Приложения, разработанные на фреймворках считаются также более безопасными, чем построенные на базе CMS, т.к. полнее позволяют учитывать специфику поведения пользователя, а также содержат сравнительно компактные, изолированные компоненты, которые легче отлаживать, чем громоздкие CMS.
Популярные фреймворки и платформы:
- для PHP: Symfony, Laravel;
- для Python: Django;
- для Ruby: Ruby On Rails;
- для Java: Spring;
- для C#: .NET;
- для JS: AngularJS.
Фреймворки активно развиваются, ежегодно выходят новые версии, одни фреймворки вытесняют с рынка другие. Например, в последние несколько лет стремительно развивается фреймворк для JavaScript Vue. Начатый как проект, реализованный силами единственного разработчика, сейчас он теснит даже Angular и React, за которыми стоят, соответственно, корпорации Google и Facebook.
При выборе фреймворка следует руководствоваться следующими вопросами:
- насколько зрелы рассматриваемые фреймворки/библиотеки?
- будут ли эти они поддерживаться в будущем?
- насколько развиты программистские сообщества вокруг них?
- насколько легко найти разработчиков для этих фреймворков?
- каковы основные идеи, заложенные в эти фреймворки?
- насколько просто задействовать фреймворки в небольших и крупных веб-приложениях?
- какова производительность фреймворков?
- как они устроены на уровне исходного кода?
- сложно ли начать разрабатывать с выбранным фреймворком?
В настоящее время для разработки практически любого веб-приложения используется один из трех наиболее популярных фреймворков, созданных на языке JavaScript: Angular, React и Vue. Рассмотрим историю их появления и особенности.
Фреймворк Angular — это JavaScript-фреймворк, разработанный и поддерживаемый корпорацией Google. В нем синтаксис JavaScript не используется непосредственно. Вместо этого привлечен язык TyprScript с возможностью строгой типизации, а также ряд дополнительных синтаксисов. Это делает порог вхождения в данный фреймворк достаточно высоким (программисту придется осваивать новые языковые конструкции), однако написание веб-приложений на Angular происходит достаточно быстро, на нем легко можно сформировать удобные многократно используемые модули, которые хорошо взаимодействуют друг с другом. Angular используется сайтами Google, Wix, weather.com, healthcare.gov, Forbes и т.д..
Фреймворк React - JavaScript-библиотека, ориентированная на создание пользовательских интерфейсов. Время появления на рынке средств разработки - март 2013-го г. React разработан компанией Facebook, где используются написанные на нем компоненты. Другие сайты, где задействован этот фреймворк - Airbnb, Uber, Netflix, Twitter, Pinterest, Reddit, Udemy, Wix, Paypal, Imgur, Feedly, Stripe, Tumblr, Walmart и др. Facebook планирует выпустить React Fiber — новую реализацию данного фреймворка, которая ускорит компоненты, созданные с помощью React.
Фреймворк Vue позиционируется как интуитивный, быстрый и интегрируемый набор инструментов для создания интерактивных интерфейсов. Он появился на рынке в феврале 2014-го г., разработан бывшим сотрудником Google Эваном Ю. На данный момент проект развивает коллектив из десятков разработчиков и активных участников, поддерживающих сопутствующую инфраструктуру (форумы, документацию, репозитории и т.п.). Vue применяют Alibaba, Baidu, Expedia, Nintendo, GitLab.
В целом рекомендации экспертов по выботу одного из вышеописанных фреймворков таковы:
- если нужна среда с низким порогом вхождения, следует выбирать между Vue и React;
- на Vue легко могут перейти специалисты, знающие как Angular, так и React, поскольку в нем используется html-код, знакомый всем разработчикам;
- для крупных проектов лучше подходит Angular; он характеризуется высокой гибкостью и скоростью рендеринга; React в таких случаях оказывается более объемным, а Vue еще не достаточно долго существует на рынке, поэтому при решении некоторых проблем могут возникнуть задержки, связанные с недостатком документации;
- если планируется привлекать к разработке дополнительных программистов, то Vue окажется лучшим выбором; этот фреймворк прост для изучения, позволяет менять приложение без разрушения его базовой структуры;
- если для разрабатываемого веб-приложения предполагается многоступенчатое обновление, а также расширение функциональности, то лучше задействовать Vue или React: они обладают добротной обратной совместимостью[28].
2.4. Системы управления контентом (CMS)
CMS (Content Management Systems) представляют собой программное обеспечение «из коробки» (т. е. Готовое к употреблению без написания кода), которое следует развернуть в собственном доменном пространстве, настроить и иногда доработать какую-то из частей. Таких решений достаточно много для любого языка программирования, хотя лидерство в этой сфере принадлежит PHP. Причиной этого можно считать то, что скриптов, написанных на этом языке, очень много, и со временем на рынке появились компании, которые аккумулировали их, создавали коллекции, упорядочивая и приводя к единым стандартам.