Викия

ru-Викия

коммент.3

Представляем сервис-ориентированную архитектуру — новый подход в разработке программного обеспечения

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

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

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

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

Ответом на наш вопрос стала сервис-ориентированная архитектура (SOA, англ. service-oriented architecture), и сегодня я расскажу о том, что незаметно для участников происходит в области разработки программного обеспечения Викия.

Терминология

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

MediaWiki: MediaWiki является основным движком Викия с момента нашего основания в 2006 году. MediaWiki — неотъемлемая база википроектов. Движок характеризуется лёгкостью редактирования и публикации статей, простой структурой групп участников и возможностью отслеживания истории правок.

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

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

Почему это важно?

City (Civ3).png

Сервис-ориентированная архитектура как город, где каждый гражданин занимается одним делом... Ну или мне просто захотелось вспомнить игру «Цивилизация», шестая часть которой выходит через полтора месяца.

Чтобы понять преимущества модели SOA над моделью MediaWiki, представим себе, что монолитная система MediaWiki — это город. Каждый житель этого города отвечает за выполнение всех видов работ в городе, от строительства домов до поддержания порядка и занятия торговлей. Изо дня в день горожане хорошо справляются со своими задачами, но если бы в городе возник пожар, то трудно себе представить, что тушить его стали бы продавцы, полицейские или строители, а не пожарные, чьей профессией это является.

Теперь сравним с городом, который основан на модели SOA. В таком городе каждый житель занимается только своим делом: строительством, охраной порядка или бизнесом. Каждый выполняет только одну задачу. Если в городе пожар, то на помощь приедут пожарные. Не знаю как вы, но если бы загорелся мой дом, то я бы чувствовал себя гораздо спокойнее, если бы первыми на место пожара прибыли пожарные, а не кондитеры. Хотя... тушить пожар глазурью было бы довольно забавно.

Эта аналогия хорошо объясняет, почему Викия теперь предпочитает модель сервис-ориентированную архитектуру. Преимущества SOA над MediaWiki следующие:

  • Простота. Инженеру программного обеспечения намного проще понять, исправить и улучшить часть обеспечения, если она имеет малые масштабы и находится только в одном месте.
  • Эффективность. SOA позволяет нам применять языки программирования как Java или Python, которые выполняют определённые задачи более эффективно, нежели PHP.
  • Гибкость. В силу гигантских размеров MediaWiki релизы обновлений проходят медленно, и мы зачастую отстаём в плане новых расширений, например в разработке мобильных приложений. Но ведь Интернет-технологии меняются стремительно быстро!

Что изменилось?

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

Один из примеров — наша система входа в аккаунт, которая была переделана в прошлом году. Система аутентификации MediaWiki имеет недостатки при обработке обширной базы данных участников Викия и при добавлении дополнительных «примочек», например привязки к аккаунту на Facebook. В прошлом году мы начали разрабатывать систему под названием Helios, которая упрощает процесс регистрации и входа в систему. Helios работает отдельно от MediaWiki и конвертирует данные участников посредством простого интерфейса прикладного программирования (API, англ. application programming interface).

Кроме того, мы создали сервисы, которые обрабатывают только группы пользователей и личные настройки. Большая часть этих разработок произошла в области мобильных приложений и мобильного Интернета. Helios используется для аутентификации пользователей при входе в учётную запись на мобильных устройствах и через мобильные приложения, что гораздо легче, чем подключение системы входа MediaWiki к мобильным сервисам.

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

Викия-сеть

Случайная вики