История развития веб-технологий и существующие проблемы

В 1991 году британский учёный, изобретатель Тим Бернерс-Ли создал первую веб-страницу. Несмотря на то, что интернет, как таковой существовал ещё с 60-х годов 20-го века, именно появление WWW (Всемирной паутины) послужило огромным толчком для развития веб-технологий и появления взаимодействия пользователя с веб-браузером [1].

На ранних этапах развития веб-технологий исходный код веб-страницы представлял собой простой набор html-тегов, а для просмотра таких страниц существовал единственный браузер «WorldWideWeb», позже переименованный в «Nexus». С 1994г. по 1996г. произошло несколько важных событий:

• Создание консорциума Всемирной паутины (1994г.)

• Выпуск браузеров Netscape Navigator (1994г.) и Internet Explorer (1995г.)

• Появление языка программирования PHP (1995г.)

• Появление языка программирования JavaScript (1995г.)

• Появление языка разметки CSS (1996г.)

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

В период с 2000г. по настоящее время в сети возникло огромное количество социальных сетей, поисковиков, развлекательных сервисов, интернет-магазинов и т. д.

По состоянию на 15 марта 2017-го всемирная паутина насчитывает свыше 1150млн. сайтов, а также 3500млн. Интернет-пользователей [2].

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

• Нагрузки на сервер. Обусловлены популярностью сайта и высокой посещаемостью. Владельцу веб-ресурса приходится заботиться об оптимизации ресурсов и обеспечивать высокую производительность сервера.

• Небезопасность. Веб-приложения подвергаются хакерским атакам с целью заполучения конфиденциальных данных. Необходимо защищать сервер от различных видов атак. От простого перебора пароля до масштабных DDOS-атак.

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

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

• Выбор оптимальных для решения конкретной задачи языков программирования, разметки, IDE, системы управления базами данных, шаблонизаторов и т. д. Для каждого конкретного проекта оптимальными являются различные технологии. Необходимо учитывать его масштабность, область применения, планируемые нагрузки, квалификацию разработчиков и т. д. И с учётом всех факторов выбирать именно те, или иные средства разработки.

• Оптимизация кода с целью получения наилучшего быстродействия. Не только удобочитаемость кода и использование единых подходов должны учитываться при написании кода. Необходимо его постоянная оптимизация (отказ от запросов к БД в цикле, минификация стилей и скриптов, создания механизма кеширования и т. д.)

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

• Отладка кода. В процессе разработки приложения часто становится необходимым анализировать входные/выходные данные, определять причину некорректности этих данных и с этой целью использовать механизмы отладки кода.

• Использование сторонних библиотек и зависимостей. При разработке проекта часто появляются задачи, которые уже были реализованы в той, или иной степени сторонними разработчиками и оформленными ими в виде библиотек (компонентов, модулей). Необходимо обеспечивать возможность использование таких библиотек и удобное подключение их в разрабатываемому проекту.

• Тестирование. Данная проблема связана с проблемой обеспечения поддержки проекта. Чем больше кода было покрыто тестами, тем меньше непредвиденных багов возникнет в процессе функционирования приложения.

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

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

• Проектирование и создание удобного и интуитивно-понятного пользовательского интерфейса. Так как в конечном счёте с любым веб-приложением будет взаимодействовать пользователь, необходимо обеспечить для него удобное и простое взаимодействие с приложением.

Наши рекомендации