1С-Битрикс corporate blog
July 2011 6

Технологии кластеризации — повышаем надежность и производительность веб-проекта

Добрый день, коллеги!

Сегодня хочу рассказать о технологиях кластеризации, которые появились в 10-й версии платформы 1С-Битрикс. Также разберем, какие важные задачи они позволят решить Вам, как руководителю веб-проекта и как эффективно использовать данные технологии, если Вы — разработчик. В конце статьи рассмотрим конкретные архитектуры работающих веб-кластеров на платформе 1С-Битрикс, в т.ч. ресурса www.1c-bitrix.ru.

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

Разработка веб-проекта «с нуля»


Казалось бы, процесс разработки веб-проекта «с нуля» выглядит относительно простым и ведущим к успеху:
  1. Проектируем и оцениваем объем работ
  2. Набираем команду веб-разработчиков, верстальщиков (возможно, дизайнеров)
  3. Программируем, верстаем, тестируем
  4. Наполняем веб-проект контентом
  5. Запускаемся
  6. Поддерживаем и развиваем веб-проект

Но… на практике:
  1. Вам потребуются квалифицированные системные аналитики и технические эксперты для проектирования и оценки объема работ, которых на рынке мало, а стоят они дорого
  2. Нужно набрать команду квалифицированных веб-разработчиков, которых на рынке мало, а стоят они дорого
  3. Нужно выбрать и настроить эффективный процесс разработки, в т.ч. снабдить команду инструментами типа трекера, среды разработки, системы контроля версий и т.п.
  4. Чтобы быстро наполнить веб-проект контентом нужно… разработать «админку» для всех видов контента, а это дополнительное время и деньги
  5. Потребуется тесное взаимодействие с квалифицированными системными администраторами для настройки серверов и софта, организации резервного копирования и мониторинга, аудита безопасности
  6. Нужно выбрать и внедрить инструменты для «передачи» доработок веб-проекта от команды разработки в «прямой эфир» — для этого используют, например, системы контроля версий и/или инструменты непрерывной интеграции

К сожалению, нередко после запуска веб-проекта в эксплуатацию оказывается, что созданный командой разработки код веб-решения — низкого качества (пишут разные люди, разной квалификации, в разное время, никто не проверяет их работу и т.п., а если используется «принуждение к труду» то вообще пиши пропало :-) ). Для Вас это означает, что вносить изменения/улучшения в веб-проект будет все дороже и дольше (попытка поставить бетонные стены на глиняный фундамент), а система будет работать все медленнее и медленнее при увеличении посещаемости веб-сайта. Периодически, чтобы хоть как-то двигаться дальше и развивать веб-проект, вам потребуется скорее всего полностью переписывать отдельные его части — что может быть чревато нарушением функциональности и стабильности других частей (что чревато потоком жалоб со стороны посетителей сайта, потерей заказов, исчезновением финансовых транзакций и т.п.).

А при значительном увеличении посещаемости веб-ресурса, например, до миллионов хитов в сутки, может оказаться — что веб-решение вообще не создавалось для подобных нагрузок и должно быть «срочно» переписано заново.

Разработка веб-проекта на базе фреймворка


Выбирая фреймворк, Вы, в теории, сокращаете риски и сроки разработки. Действительно, ведь я использую что-то типа каркаса/фундамента, на который «нанизываю» нужный мне функционал веб-сайта. Но многие риски, к сожалению, остаются:
  • Теперь вам нужны «особые» эксперты, хорошо знающие фреймворк, для проектирования и оценки трудозатрат. При разработке на базе BitrixFramework можно довольно просто «прокачать» сотрудников — путем их бесплатной сертификации по нашим курсам, после чего они смогут, в принципе, достаточно точно оценить объем, сложность работ и определить, что нужно писать «с нуля», а какие решение можно использовать в готовом виде.
  • Фреймворки обладают разным уровнем вхождения, поэтому для работы c популярными «академичными» фреймворками, типа ZendFramework,Symfony, Yii — Вам потребуются программисты более высокой стоимости и квалификации, чем, например, для работы с BitrixFramework (на базе которого работают продукты и решения 1С-Битрикс), использующим простые архитектурные концепции и паттерны, понятные большинству разработчиков начальной и средней квалификации. Для ускорения ввода разработчиков BitrixFramework в строй, поможет прохождение курса «Быстрый старт разработчика».
  • Технологический процесс разработки веб-проекта на базе фреймворка, как правило, мало чем отличается от разработки «с нуля». Однако, некоторые фреймворки, например BitrixFramework, предоставляют удобные инструменты аудита и мониторинга качества разработки: монитор производительности, SEO-аудит, средства отладки.

image
image
Средства отладки платформы 1С-Битрикс: некачественная разработка на фреймворке — не пройдет :-)
  • Для быстрого и удобного наполнения веб-проекта контентом некоторые фреймворки предлагают средства автоматизированного создания «админок» (полуфабрикат, на базе которого можно, в принципе, ускорить создание некоторых типов административных страниц). В BitrixFramework имеется встроенный функциональный и довольно удобный административный интерфейс, допускающий кастомизацию под нужды проекта. Например, можно сделать свою «админку» по добавлению новостей или обработке заказов.
  • Для нагрузочного тестирования веб-проекта перед запуском фреймворки иногда предоставляют технические инструменты создания нагрузки и аудита. В BitrixFramework имеются эффективные и популярные среди клиентов встроенные подсистемы аудита аппаратно-программной конфигурации и создания нагрузки.

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

Расширение возможностей — благословение или проклятье?

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

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

Тем не менее, иногда все же может оказаться, что задачу на фреймворке реализовать сложнее и дольше, чем написать «с нуля», и Вы об этом узнаете уже в процессе разработки :-). В этом случае фреймворки, как правило, предоставляют возможность модульного расширения. В BitrixFramework вам нужно будет создать модуль, реализующий нестандартную логику. Писать модуль обычно дольше, чем создавать обработчик события, но при этом достигается максимальная гибкость. Написать модуль относительно просто, но возможно такой модуль уже написан — поэтому стоит предварительно «порыться» в marketplace.

Разработка веб-проекта на базе коробочного решения


Данный подход скорее всего максимально сократит время и риски разработки веб-проекта, если ваши требования «близки» к функционалу коробки. Например, для создания и запуска типичного интернет-магазина с мультивалютным каталогом, авторизацией, скидками, персональным разделом, поиском и поддержкой многочисленных платежных систем скорее всего подойдет коробочное решение «1С-Битрикс: Управление сайтом» (редакция «Малый бизнес»).

Дополнительно, коробочное решение, являясь как бы «историей успеха» и «книгой рецептов», помогает Вам, как заказчику проекта, «пощупать» практические примеры реализации бизнес-задач. А разработчикам коробка позволяет изучить «исходники» решения, чтобы продублировать его, либо сделать лучше :-). Частый кейс при использовании коробки: «Сделайте также как тут и тут, чтобы в админке управлялось аналогично как там».

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

Для каких типов веб-проектов окажутся полезными технологии кластеризации платформы 1С-Битрикс?


Если Вы уже используете или планируете вести разработку на фреймворке/коробке 1С-Битрик то, скорее всего:
  • Ваш проект имеет сложную бизнес-логику и объемный функционал, который хорошо ложится на возможности платформы 1С-Битрикс
  • Вы хотите снизить риски и увеличить скорость разработки, за счет использования промышленного фреймворка BitrixFramework
  • Вас волнует устойчивость веб-проекта к высоким нагрузкам (миллионы хитов в сутки) и простой веб-сайта в течении часа просто недопустим, т.к. грозит серьезными убытками и ударом по репутации

Именно для обеспечения высокой доступности и производительности веб-проекта на платформе 1С-Битрикс в 10 версии появилась возможность задействовать в продукте популярные и эффективные технологии кластеризации:

1) Вертикальный шардинг (вынесение модулей системы на отдельные серверы MySQL). Теперь можно вынести интенсивно используемые модули «Поиск» и «Веб-аналитика» на собственное «железо».
image
image

2) Репликация MySQL и балансирование нагрузки между серверами. Теперь можно распределить нагрузку на СУБД веб-проекта на группу серверов, добавляя их при необходимости. Технические подробности можно почитать тут.
image
image

3) Распределенный кеш данных (memcached). Надежное и масштабируемое кэширование критически важно для высоконагруженных проектов. Технические подробности тут.
image

4) Кластеризация сессий между веб-серверами. Эта необходимо при работе группы веб-серверов за балансировщиком. Почему мы храним сессии не в memcached — об этом напишем отдельно :-).
image

5) Кластеризация файлов веб-серверов. Это необходимо для автоматической синхронизации контента между машинами. Технические подробности тут.

Особое внимание хочется обратить на то, что технологии кластеризации используются на уровне ядра платформы 1С-Битрикс и дорабатывать код веб-проекта — не нужно! (каждый раз когда пишу про это, не верю, но… это так и есть на самом деле) Разумеется, при необходимости можно в коде задавать, с каких именно серверов репликации осуществлять чтение/запись — но это необходимо подавляющему меньшинству веб-проектов.

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

Кластерные архитектуры работающих веб-проектов на базе 1С-Битрикс


Самый интересный раздел статьи — рассмотрим, наконец, конкретные примеры действующих веб-кластеров на платформе 1С-Битрикс.

www.kupibonus.ru — бесперебойная доставка услуг

Внедрение веб-кластера провел наш сертифицированный партнер «Linemedia», г. Москва. Редакция платформы – «Бизнес веб-кластер».

Веб-проект ежедневно посещают несколько сотен тысяч пользователей, также дополнительную нагрузку генерируют партнёры проекта, имеющие доступ к проекту через API Kupibonus. Активная двухсторонняя интеграция с бэк-офисом «1С: Предприятие», интенсивные каналы взаимодействия с внешними сервисами.
За счет внедрения веб-кластера обеспечена высокая производительность и отказоустойчивость не только публично части, но и внутренних бизнес-процессов и API. Внедрение прошло в довольно короткие сроки – две недели.
image

www.komos.ru — электронная биржа

Внедрение веб-кластера провел золотой сертифицированный партнер «Профессиональные Интернет-решения», г. Ижевск. Редакция платформы – «Веб-кластер».

Веб-проект является высоконагруженной площадкой для проведения электронных торгов группой компаний — «КОМОС ГРУПП». В состав группы входит 13 крупнейших предприятий, производящих продукты питания в Удмуртии и Пермском крае. Полученная в результате торгов стоимость предложений составила почти 5 млрд. рублей менее чем за год. За счет внедрения веб-кластера обеспечена высокая производительность и отказоустойчивость, легкая масштабируемость электронной торговой площадки.
image

www.1c-bitrix.ru — это мы

Веб-кластер размещен на группе EBS/EC2 машин в облаке Amazon. Достаточно большой объем статического контента. Высокая нагрузка как на публичную часть, так и на интеграционное API (marketplace), а также систему обновлений. За счет перехода на веб-кластер обеспечена высокая производительность и устойчивость, быстрое масштабирование в случае необходимости.

Мы хотели использовать встроенный в облако балансировщик, но пока, по причине его «негибкости», используем для этого отдельную машину. Бэкапы делаем в S3 встроенной в облако удобной технологией снепшотов, для резервного копирования raid10 на базе EBS разместили на нем XFS и, для целостного снепшота, «фризим» ее используя утилиту ec2-consistent-snapshot. Статику постепенно выносим в облако и CDN. Большинство рутинных операций: поднять машину в случае нагрузки, переключение нагрузки, бэкапы и т.п. — заскриптовано на API amazon.
image

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

Наши ближайшие технологические планы в области облаков и кластеризации

На прошедшей недавно партнерской конференции мы анонсировали, что сделаем в ближайшем релизе платформы 10.5, который выйдет осенью, поддержку облачных хранилищ: Amazon/S3, Google Storage, технологий хранения данных в Microsoft Azure.

Также, в версии 10.5, мы хотим предложить нашим клиентам решение, делающее их веб-кластер максимально надежным и… абстрагированным от облачного провайдера — чтобы в случае серьезных проблем в облаке/ДЦ, веб-кластер продолжил бесперебойно обслуживать клиентов в другом регионе облака/на другом континенте:
image

Cluster grid (это пока одно их рабочих названий технологии)

Мы с интересом смотрим на новейшие облачные технологии кластеризации и видим в них немалый потенциал для обеспечения надежности и производительности веб-проектов. Лучшие технологии мы будем продолжать реализовывать в платформе 1С-Битрикс — делая их полезными и доступными для наших многочисленных клиентов.

Желаю всем технологической удачи, оптимизма и до новых встреч в нашем корпоративном блоге!

Ссылки:

Александр Сербул, руководитель направления контроля качества интеграции и внедрений 1С-Битрикс

+26
13.3k 24
Comments 101
Top of the day