Битрикс HighLoad Опыт разработки, мониторинга и эксплуатации высоконагруженных проектов на 1С-Битрикс

Содержание

Слайд 2

На платформе «1С-Битрикс» можно и нужно разрабатывать крупные проекты

На платформе «1С-Битрикс» можно и нужно разрабатывать крупные проекты

Слайд 3

Удобная масштабируемая платформа разработки
Компетенция и опыт разработки проектов и консультации:
специализированные семинары и

Удобная масштабируемая платформа разработки Компетенция и опыт разработки проектов и консультации: специализированные
вебинары
публикации (dev.1c-bitrix.ru, habrahabr.ru и т.п.)
личные консультации партнеров
услуга «Экспертиза»

«1С-Битрикс» - это…

Слайд 4

Даже если вы никогда не делали крупных проектов, не бойтесь слова «HighLoad».

Даже если вы никогда не делали крупных проектов, не бойтесь слова «HighLoad».
Определите вместе с заказчиком, что именно ему нужно.

Слайд 5

Ваш проект – Highload?
Определяют требования заказчика

Что такое Highload?

Количество хитов в сутки
Скорость загрузки

Ваш проект – Highload? Определяют требования заказчика Что такое Highload? Количество хитов
главной страницы при указанном количестве хитов
Среднее время загрузки всех страниц в сутки
Процент страниц с временем загрузки более n сек.
Допустимый процент ошибок
Допустимое время простоя
...

Повышенные требования к производительности и отказоустойчивости.

Слайд 6

На старте проекта заказчик и разработчик могут не знать, каким он станет,

На старте проекта заказчик и разработчик могут не знать, каким он станет, будет ли нагруженным…
будет ли нагруженным…

Слайд 7

HighLoad – это…

Немного больше … системности
Немного больше … ответственности
Кластерные редакции «1С-Битрикс: Управление

HighLoad – это… Немного больше … системности Немного больше … ответственности Кластерные
сайтом»
Анализ и управление рисками!

Слайд 8

Структура рисков HighLoad проекта

Сбора и анализа требований
Проектирования
Разработки
Тестирования
Эксплуатации

Риски…

Структура рисков HighLoad проекта Сбора и анализа требований Проектирования Разработки Тестирования Эксплуатации Риски…

Слайд 9

Проектирование

Делаем краткое ТЗ на «стандарт»
Делаем подробное ТЗ на «нестандарт»
Прототипы интерфейсов в Axure
Сценарии

Проектирование Делаем краткое ТЗ на «стандарт» Делаем подробное ТЗ на «нестандарт» Прототипы
использования: UserStories, UseCases

Риск: «Огромное ТЗ»

Делаем UML Class, State, Activity Diagrams
Делаем Глоссарий

Риск: «Запутаться в структуре данных»

Слайд 10

Проектирование

Храним описания в wiki
Храним артефакты в SVN

Риск: «Большие сроки – от 6

Проектирование Храним описания в wiki Храним артефакты в SVN Риск: «Большие сроки
до 18 мес.»

Проектируем инфоблоки, компоненты, страницы

Риск: «Запутаться в Битрикс»

ООП
Система контроля версий

Риск: «Запутаться в коде»

Слайд 11

Как видим, ничего сложного ☺

Стандартный компонент

Тщательно проработанное кэширование, оптимизированный код

Кастомный модуль

Кастомные обработчики

Как видим, ничего сложного ☺ Стандартный компонент Тщательно проработанное кэширование, оптимизированный код
событий

Компоненты

Стандартный компонент

Стандартный компонент

Стандартный компонент

Кастомный компонент

Кастомный компонент

Кастомный компонент

Кастомный компонент

Кастомный компонент

Модули

Стандартный модуль

Стандартный модуль

Стандартный модуль

Стандартный модуль

Кастомный модуль

Кастомный модуль

Свои таблицы в СУБД

Админка

Стандартная страница/раздел

Стандартная страница/раздел

Стандартная страница/раздел

Кастомная страница/раздел

Кастомная страница/раздел

Кастомная форма инфоблока

Кастомная форма элемента инфоблока

Кастомные типы свойств

Кастомный инфоблок

Кастомный инфоблок

Многочисленные настройки и объекты проекта

Страница /раздел проекта

Публичная часть

Страница /раздел проекта

Контроллеры ajax

Веб-сервисы

Слайд 12

Разработка

Сертифицируем программистов по курсам Битрикс
Используем единый CodeStyle
Используем ветки контроля версий
Тщательно кэшируем компоненты

Риск:

Разработка Сертифицируем программистов по курсам Битрикс Используем единый CodeStyle Используем ветки контроля
«Неоптимальный код»

Слайд 13

Процесс разработки

Ветка 1

Разработчик 1

Разработчик 2

Разработчик 3

Ветка 2

Ветка 3

Ветка DEV

Изменения в ветки DEV/TESTING

Процесс разработки Ветка 1 Разработчик 1 Разработчик 2 Разработчик 3 Ветка 2
переносит опытный разработчик

Вед. разработчик

Серверы разработки

Ветка TESTING

Ветка PRODUCTION

Серверы тестирования

Вед. разработчик

Тестировщик 1

Тестировщик 2

Серверы в production

Сисадмин

На «бой» протестированные изменения выкладывает сисадмин.

Слайд 14

Тестирование

Не нужно все покрывать Unit-тестами
Не нужно для всего писать Mock-объекты
Ручное тестирование –

Тестирование Не нужно все покрывать Unit-тестами Не нужно для всего писать Mock-объекты
необходимо и полезно

Риск: «Перетестировать»

Unit-тесты создаем для сложного функционала
Части публички и админки – отдать Selenium
Пишем и актуализируем TestCases

Риск: «Недотестировать»

Слайд 15

Нагрузочное тестирование

Нагрузочное тестирование - обязательный этап сдачи проекта.
Нагрузочное тестирование является важнейшей процедурой

Нагрузочное тестирование Нагрузочное тестирование - обязательный этап сдачи проекта. Нагрузочное тестирование является
подготовки крупного проекта к открытию.
Нагрузочное тестирование позволяет определить предел работоспособности созданного проекта именно на выбранном оборудовании.

Зачастую, простые корректировки конфигурации могут ускорить проект в 5-10 раз и сделать его устойчивым к стрессовым нагрузкам.

Слайд 16

Нагрузочное тестирование

Проводите нагрузочное тестирование на реальных данных с «боевых серверов»
Используйте монитор производительности
Эмулируйте

Нагрузочное тестирование Проводите нагрузочное тестирование на реальных данных с «боевых серверов» Используйте
действия Пользователей на проекте
Эмулируйте импорты/экспорты/веб-сервисы

Риск: «Нагрузка далека от реальности»

Jmeter

WAPT

httperf

ab

Слайд 17

Управление проектом

Попробуйте Agile/Scrum/XP/Канбан
Повесьте доски, уберите стены, посадите людей вместе
Социальные инструменты для работы

Риск:

Управление проектом Попробуйте Agile/Scrum/XP/Канбан Повесьте доски, уберите стены, посадите людей вместе Социальные
«Усложнить управление»

Проходите все тесты «Монитора качества»
Создавайте и используйте свои чеклисты

Риск: «Упустить контроль»

Слайд 18

Выбираем удобный инструментарий!

MediaWiki

Excel

Redmine

Track

Confluence

Раб. группа: Битрикс24/Корппортал

Управление требованиями

Redmine

Confluence

Раб. группа: Битрикс24/Корппортал

Track

TrackStudio

Управление временем, задачами, рисками, документами,

Выбираем удобный инструментарий! MediaWiki Excel Redmine Track Confluence Раб. группа: Битрикс24/Корппортал Управление
проектом

Mantis

SVN

Mercurial

Git

Bazaar

Управление версиями кода

Слайд 19

Эксплуатация: выбор инфраструктуры

Риски:
Взять слишком много и переплатить (не можем заранее спрогнозировать потребление

Эксплуатация: выбор инфраструктуры Риски: Взять слишком много и переплатить (не можем заранее
ресурсов)
Взять слишком мало и «просесть» по производительности
Безопасность (если в штате нет толкового системного администратора)
Надежность (как резервировать доступность на уровне датацентра?)
Сетевая доступность

Слайд 20

Инфраструктура: «Железо» vs. «Облако»

Затраты (время) на обучение сотрудников специфике конкретного сервиса
Ограничения инфраструктуры

Инфраструктура: «Железо» vs. «Облако» Затраты (время) на обучение сотрудников специфике конкретного сервиса
(аппаратная часть, специфичное ПО)
Сложность расчетов «по потреблению»

Экономия за счет возможности планирования ресурсов
Экономия и отсутствие рисков, связанные с вложениями в инфраструктуру
Моментальное вертикальное и горизонтальное масштабирование
Удобство администрирования
Экономия времени
Дополнительные сервисы

Слайд 21

«1С-Битрикс: Виртуальная машина» – это «1С-Битрикс: Веб-окружение Linux» с использованием разных способов

«1С-Битрикс: Виртуальная машина» – это «1С-Битрикс: Веб-окружение Linux» с использованием разных способов
виртуализации.

Виртуальная машина эмулирует работу реального компьютера и включает в себя:
сконфигурированную операционную систему;
веб-сервер;
базу данных;
firewall;
почтовый сервер;
мастер создания кластера, мастер добавления slave-сервера, мастер переключения slave-сервера в режим master;
а также большое число настроек, от которых зависит надежность, производительность и безопасность веб-проекта.

1С-Битрикс: Виртуальная машина

Слайд 22

Масштабирование

Разделение на два сервера: веб-сервер + база данных.
Увеличение мощности оборудования (чем мощнее

Масштабирование Разделение на два сервера: веб-сервер + база данных. Увеличение мощности оборудования
– тем дороже; рост стоимости не пропорционален).
Выделение кеша на один внешний сервер через memcached.
Переход на коммерческие СУБД.
Для большинства клиентов производительности достаточно, но не решены проблемы отказоустойчивости, резервирования, сетевой доступности.

Слайд 23

Сколько стоит 1 час?
Крупный интернет-магазин с годовым оборотом 1.5 млрд. руб.
210 рабочих

Сколько стоит 1 час? Крупный интернет-магазин с годовым оборотом 1.5 млрд. руб.
дней в году по 10 рабочих часов.
Час простоя крупного интернет-проекта может обойтись владельцам в 0,3 - 1 миллион рублей упущенной выручки.

Слайд 24

«1С-Битрикс: Веб-кластер» - это комбинация технологий:
Вертикальный шардинг (вынесение модулей на отдельные серверы

«1С-Битрикс: Веб-кластер» - это комбинация технологий: Вертикальный шардинг (вынесение модулей на отдельные
MySQL)
Репликация MySQL и балансирование нагрузки между серверами
Распределенный кеш данных (memcached)
Непрерывность сессий между веб-серверами (хранение сессий в базе данных)
Кластеризация веб-сервера:
Синхронизация файлов
Балансирование нагрузки между серверами

Слайд 26

«Веб-кластер», ДЦ в России

БД

Веб-нода

«Веб-кластер», ДЦ в Германии

«Веб-кластер», ДЦ в США

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

БД

Веб-нода

Кэш

Асинхронная master-master репликация

«Веб-кластер», ДЦ в России БД Веб-нода «Веб-кластер», ДЦ в Германии «Веб-кластер», ДЦ
для обеспечения работы географически распределенных веб-кластеров.
Потеря связи между ДЦ может составлять часы.

Географический веб-кластер

Слайд 27

Elastic
Load Balancing

MySQL
master
Web 1

HTTP/HTTPS
*.ru

Elastic
Load Balancing

HTTP/HTTPS
*.com
Web 2
Web N


CloudWatch + AutoScaling

CloudWatch

MySQL
master

Elastic Load Balancing MySQL master Web 1 HTTP/HTTPS *.ru Elastic Load Balancing
Web 1
Web 2
Web N


CloudWatch + AutoScaling

CloudWatch

master-master репликация

Отказоустойчивость

S3

HTTP/HTTPS
*.com
*.ru

management, monitoring,
MySQL backup

cache

cache

Слайд 28

CDN

init.php
AddEventHandler("main", "OnEndBufferContent", "ReplaceStatic");
Nginx http_sub_module
nginx_substitutions_filter

location / {
subs_filter '

href="http://cdn.domain.ru/$1.css' gir;
}

Слайд 29

Эксплуатация

Используем средства проактивного мониторинга
Анализируем показатели серверов
Тестируем все что можно

Риск: «Реагировать позже Клиента»

Документируем

Эксплуатация Используем средства проактивного мониторинга Анализируем показатели серверов Тестируем все что можно
все настройки
Используем стабильные дистрибутивы Unix

Риск: «Не обновлять систему»

Слайд 30

Эксплуатация. Чем и как.

Сервер 1

SMS, E-mail

Серверы в production

Сисадмин

Сервер 2

Сервер 3

Аналитика

Munin

Cacti

Мониторинг 24/7

Nagios

Zabbix

Анализ трендов

XDebug

XHProf

Отладка,

Эксплуатация. Чем и как. Сервер 1 SMS, E-mail Серверы в production Сисадмин
поиск узких мест производительности

Pinba

Монитор производительности Битрикс

Слайд 31

Итог?

Невозможно все охватить в получасовом докладе. :) Мы бы хотели детально рассказать…

Организация

Итог? Невозможно все охватить в получасовом докладе. :) Мы бы хотели детально
процесса резервного копирования крупного проекта
Организация среды разработки на БУС + инструментарий
Архитектура крупного проекта с интеграцией БУС с внешними системами
Как проектировать большой проект на БУС
Поиск "узких" мест - где и что тормозит? xdebug, xhprof, pinba
Организация раздачи статики + CDN
Выбор систем мониторинга и аналитики
High Performance MySQL
"Облачная" инфраструктура - когда нужно
Настройка серверов + организация кластеров

Слайд 32

Специализированные семинары «Битрикс Highload»

Детальный разбор тем
Приглашенные спикеры с опытом разработки и эксплуатации крупных

Специализированные семинары «Битрикс Highload» Детальный разбор тем Приглашенные спикеры с опытом разработки
проектов
Публикация материалов

Презентации и видео с последнего семинара:
http://www.1c-bitrix.ru/about/life/seminars/436130/
http://habrahabr.ru/company/bitrix/blog/144808/

Слайд 33

HighLoad – это не страшно!

Крупный высоконагруженный проект не требует ничего сверхъестественного. Только

HighLoad – это не страшно! Крупный высоконагруженный проект не требует ничего сверхъестественного.
чуть больше системности, аккуратности, внимательности.
Даже если проект начинался «обычным», он может «вырасти» позже. «1С-Битрикс» помогает вам:

переход на «Веб-кластер»
привлечение нас к проектам
использование материалов (статьи, презентации, видео, документация)
услуга «Экспертиза» - снижение рисков

Имя файла: Битрикс-HighLoad-Опыт-разработки,-мониторинга-и-эксплуатации-высоконагруженных-проектов-на-1С-Битрикс.pptx
Количество просмотров: 146
Количество скачиваний: 0