До 2012 года в компании 1С-Битрикс были два коробочных продукта: CMS «1С-Битрикс: Управление сайтом» и «Корпоративный портал» (коробочный вариант Битрикс24). В 2012 году в компании появился новый продукт – SaaS сервис Битрикс24, который требовал сложной сетевой инфраструктуры.nnБыли поставлены задачи, которые по большому счету друг другу противоречили. Первые испытания продукта проходили внутри компании 1С-Битрикс. Сотрудники воспринимали Битрикс24 негативно, так как нужно было осваивать сервис по указу руководства. Было понятно, что такой продукт будет сложно продвигать даже в лояльной компании. Появилась задача сделать продукт, который сам себя продает и внедряет. Первый тариф стал бесплатным, но достаточно функциональным. Он и сейчас поддерживает до 12ти человек. Это подразумевало, что клиентов будет много. От сервиса будет зависеть бизнес и прибыль клиентов, а значит всё, что только можно, должно быть зарезервировано. [3]n
Выбор хостинга
Выбор типа хостинга должен был удовлетворить следующие факторы:n
- Глобальность – сервис доступен для всех стран мира.
- Модернизация и сопровождение сервиса – речь идет о процессе разворачивания нового кода и исправлении рабочего.
- Надежность и отказоустойчивость – это бизнес проект и от него будет зависеть прибыль клиентов.
- Возможность быстрого горизонтального масштабирования по нагрузке – возможен как быстрый рост сервиса, так и колебания нагрузки в течение дней, недель, месяцев[2].
- Расходы на эксплуатацию сервиса – тип хостинга влияет на архитектуру сервиса.
- Финансовые риски – продукт новый, есть риски провала.
Минусы размещение на физическом сервере:
- Высокая стоимость при запуске проекта.
- Сложности с масштабированием.
- Сложности с администрированием серверов в удаленных дата-центрах.
- Отсутствие готовых сервисов.
Преимущества облачного сервиса Amazon Web Services:
- Наличие опыта работы с Amazon – сайт 1С-Битрикс уже хостился в Amazon Web Services.
- Дата-центры размещены в разных странах.
- Наличие готовых сервисов – готовые сервисы у Amazon Web Services появляются постоянно, дают возможность быстро экспериментировать и запускать. При успешном использовании можно доработать сервис. Если у Amazon Web Services открыть список доступных сервисов, то можно собрать полную инфраструктуру без необходимости внедрять свои сервисы. [2]
- Торговый знак Amazon – известен во всем мире, ему доверяют. На сегодняшний день это преимущество проверенно 1С-Битрикс.
Взвесив все факторы на старте проекта, компания для Битрикс24 выбрала облачный хостинг.n
Масштабирование в Amazon Web Services
Динамическое масштабирование сервиса экономит деньги. Для разных проектов есть свои варианты:n
- Нагрузочное – связанное с ростом нагрузки при развитии проекта.
- Сезонное – важно для сервисов испытывающих повышенные нагрузки в праздники, например, или в зимний период.
- Недельное – в зависимости от дня недели, например будние и выходные дни.
- Суточное – вариант, который используется для Битрикс24.
- Комбинированное.
Масштабирование по данным сервера можно привязывать к разным метрикам. Можно использовать latency, но ее рост может быть вызван проблемами с кодом на back-end. И использование latency может привести к лишней трате денег на хостинг.nn1С-Битрикс использует load average. Простой вариант, когда количество машин зависит от нагрузки.n
Архитектура масштабирования
Для суточного масштабирования в начале проекта использовалась связка сервисов Elastic Load Balancing, CloudWatch и Auto Scaling.nnnnElastic Load Balancing – используется для балансировки нагрузки.nnCloudWatch – используется для мониторинга ресурсов (load average).nnAuto Scaling – используется для настройки количества серверов и поддержания стабильной прогнозируемой производительности [1].nnСервера разбиты на две группы: «spot» и «on demand«.nnSpot сервера аукционные, их стоимость может быть до 8-ми раз дешевле обычных. Но в случае, если ваша ставка перекуплена, вы потеряете сервер в течение нескольких минут.nnOn demand – группа сервером по обычной стоимости. Поддерживается на случай, когда большая часть серверов группы spot перекуплена.nnТакая архитектура Битрикс24 обеспечивает быстрое масштабирование в течение суток.nnГрафик масштабирования:nnПри этом использования spot серверов значительно, до 7 раз, уменьшает затраты на хостинг. А группа on demand страхует от недостатка ресурсов.n
Хранение и резервирование данных.
Для Битрикс24 используется база Percona XtraDB (MySQL). Реализован условный вариант master-master репликации – active-passive. При этом данные хранятся в двух дата-центрах, но рабочим для каждого пользователя является только один. Данные из активного дата-центра реплицируются в пассивный. В случае проблем или работ идет автоматическое переключение на другой дата-центр. Связанность между дата-центрами может прерываться на часы без последствий.nnАрхитектура:n
Проблемы хранения данных и их и решения
При аварии одного или нескольких серверов они просто исключаются из балансировки. Auto Scaling восстанавливает ресурсы по конфигурации. Отказоустойчивость высокая.nnПри авариях всего дата-центра или плановых работах с базой весь трафик переключается в один работающий дата-центр. CloudWatch определяет возросшую нагрузку на сервера, а AutoScaling добавляет их в соответствии с конфигурацией. Приостанавливается мастер-мастер репликация. Репликация возобновляется, когда дата-центр восстанавливает свою работу, трафик распределяется на оба дата-центра и Auto Scaling исключает лишние машины.nnn
Развитие Архитектуры
Вначале Битрикс24 хостился в двух дата-центрах, расположенных на территории США.nnОсобенности:n
- В каждом дата-центре запущены 3-4 сущности mysql. Опытным путем выяснилось, что так mysql производительнее.
- S3 – статик хранилище Amazon.
Но со временем требования клиентов выросли. Было выпущено мобильное приложения. Возросли требования к скорости работы, развивался сервис Битрикс24. Диск, начал работу real-time чат. Возникла необходимость хостинга в европейском дата-центре. Вся инфраструктура была продублирована в ирландский дата-центр. Клиенты, которые находились в Европе и ближе к Европе были смигрированы сюда. Архитектура позволила перенести клиентов без down time.nnссылки:1 https://aws.amazon.com/ru/autoscaling/nn2 http://json.tv/ict_video_watchnn3 https://blog.bitrix24.ru/iz-pervykh-ust-1sbitriks-na-puti-k-uspekhu-s-bitriks24/