Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

MediaWiki

Глава 12 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: MediaWiki
Автор: Sumana Harihareswara, Guillaume Paumier
Перевод: А.Панин

12.1. Исторический обзор

Фаза I: UseModWiki

Проект Wikipedia был начат в январе 2001 года. В этот момент он был в большей степени экспериментом, проводимым с целью проверки возможности ускоренной генерации содержимого для проекта Numpedia, энциклопедии с бесплатными, но оцениваемыми пользователями данными, созданной Jimmy Wales. Так как проект был экспериментом, энциклопедия Wikipedia изначально работала под управлением UseModWiki, существующей в тот момент системы wiki, разработанной с использованием языка Perl и компонента CamelCase, хранящей все страницы в виде отдельных текстовых файлов без записи истории сделанных изменений и распространявшейся в соответствии с условиями лицензии GPL.

Позднее стало ясно, что компонент CamelCase не подходит для именования статей энциклопедии. В конце января 2001 года разработчик UseModWiki и участник проекта Wikipedia Clifford Adams добавил новую возможность в UseModWiki: свободные ссылки; т.е., возможность связывания страниц с использованием специальных синтаксических конструкций (двойных квадратных скобок) вместо автоматических ссылок, создаваемых CamelCase. Спустя несколько недель, проект Wikipedia перешел к использованию новой версии системы UseModWiki с поддержкой свободных ссылок и включил эту возможность.

Хотя эта начальная фаза развития и не относится к процессу создания системы MediaWiki, она описывает контекст развития и показывает, что даже перед созданием приложения MediaWiki, проект Wikipedia развивал возможности используемого программного обеспечения в соответствии со своими требованиями. Приложение UseModWiki также повлияло на некоторые возможности приложения MediaWiki; например, на его язык разметки. Страница ностальгии проекта Wikipedia содержит полную копию базы данных Wikipedia на декабрь 2001 года, когда проект Wikipedia все еще использовал приложение UseMediaWiki.

Фаза II: Сценарий PHP

В 2001 году вебсайт Wikipedia не находился в первой десятке популярных вебсайтов; это был малоизвестный проект, расположенный в неизвестной области сети, не посещаемый большинством поисковых машин и работающий на единственном сервере. При этом производительность уже была проблемой, в первую очередь из-за того, что приложение UseModWiki хранило свои данные в базе данных, представленной в виде обычных файлов. В это время участники проекта Wikipedia опасались того, что вебсайт не выдержит трафика, аналогичного генерируемому при просмотре статей на таких ресурсах, как New York Times, Slashdot и Wired.

Поэтому летом 2001 года участник проекта Wikipedia Magnus Manske (который стал впоследствии студентом университета) начал работу над отдельной системой управления содержимым вебсайта для проекта Wikipedia в свое свободное время. Он решил улучшить производительность программного обеспечения проекта Wikipedia путем использования работающего с базой данных приложения, а также добавить в него специфические для проекта Wikipedia возможности, не предоставляемые "стандартной" системой wiki. Разработанное с использованием языка PHP и базы данных MySQL новое приложение было названо просто "сценарий PHP", "PHP wiki", "программное обеспечение Wikipedia" или "фаза II".

Этот сценарий на языке PHP стал доступен в августе 2001 года, был размещен на сайте SourceForge в сентябре и тестировался до конца 2001 года. Так как проект Wikipedia испытывал сложности из-за повторяющихся проблем с производительностью в условиях растущего трафика, англоязычный раздел энциклопедии Wikipedia в конечном итоге перешел от использования приложения UseModWiki к использованию данного сценария на языке PHP в январе 2002 года. Разделы для других языков, также созданные в 2001 году, также медленно мигрировали, причем некоторые из них использовали приложение UseModWiki до 2004 года.

Так как программное обеспечение, разработанное с использованием языка PHP, работает с базой данных MySQL, сценарий на языке PHP был первым вариантом программного обеспечения, которое впоследствии стало известно под названием MediaWiki. В рамках данного сценария были впервые реализованы такие критические возможности, используемые и сегодня, как пространства имен для организации содержимого (включая страницы обсуждений), оболочки и специальные страницы (включая страницы отчетов об обслуживании, страницы со списком внесенных изменений и списком пользователей).

Фаза III: MediaWiki

Несмотря на улучшения, внесенные благодаря использованию нового сценария на языке PHP с базой данных, комбинация возрастающего объема трафика, ресурсоемких функций и ограниченных аппаратных ресурсов приводила к проблемам с производительностью вебсайта проекта Wikipedia. В 2002 году Lee Daniel Crocker снова переписал код, назвав новое программное обеспечение "Фаза III" (http://article.gmane.org/gmane.science.linguistics.wikipedia.technical/2794). Так как работа сайта периодически нарушалась из-за сложностей, Lee решил, что "времени на основательное проектирование и разработку решения просто нет", поэтому он "просто реорганизовал существующую архитектуру с целью улучшения производительности и переработал весь код". В код были добавлены функции профилирования для отслеживания медленно выполняющихся функций.

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

Другие функции были добавлены в течение 2002 года и включали новые страницы обслуживания, а также возможность редактирования с помощью двойного клика. При этом проблемы с производительностью снова начали проявляться. Например, в ноябре 2002 года администраторам пришлось временно отключить функцию записи статистики количества просмотров и сайта, которая приводила к выполнению двух операций записи информации в базу данных при каждом просмотре страницы. Они также временами переводили сайт в режим "только для чтения" для поддержания возможности чтения статей и отключения ресурсоемких страниц обслуживания в течение периодов высокой загрузки сайта из-за проблем с блокировкой таблиц.

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

В июне 2003 года администраторы добавили второй сервер, являющийся первым сервером базы данных, отделенным от веб-сервера. (Новая машина также являлась веб-сервером для не англоязычных сайтов проекта Wikipedia.) Балансировка нагрузки между двумя серверами должна была быть настроена позднее в течение текущего года. Администраторы также активировали новую систему кэширования страниц, которая использовала файловую систему для хранения сформированных, готовых к отправке страниц для анонимных пользователей.

Также в июне 2003 года Jimmy Wales создал некоммерческую организацию Wikimedia Foundation для поддержки проекта Wikipedia и управления его инфраструктурой, а также выполнения повседневных операций. Программное обеспечение проекта Wikipedia в июле приобрело официальное название "MediaWiki", полученное в результате игры со словами из названия организации Wikimedia Foundation. В то время считалось, что сложные названия могут смутить пользователей и разработчиков.

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


Далее: Кодовая база и практика разработки приложения MediaWiki