SlideShare a Scribd company logo
Проектируем облачныйвеб-сервис «по-взрослому» Сергей Рыжиков генеральный директор компании  «1С-Битрикс»
Запускаем новый SaaSпродуктBitrix24 Есть несколько задач на старте и в процессе работы Новый SaaSсервис – как коммерческие, так и «бесплатные» пользователи Минимизация расходов на эксплуатацию и снижение финансовых рисков на старте проекта Масштабирование при росте нагрузки и обратное масштабирование Надежность – обеспечение SLA Работа с разными рынками: США, Европа, Россия Быстрая отдача статического контента
Из «бизнес-требований» появились технические Отказоустойчивость – умение размещаться сразу в нескольких разных территориально распределенных датацентрах (в разных странах) Большой объем базы данных –шардинг – возможность разделить базу данных по территории и группам клиентов MultiTenancyархитектура Полное разделение логики (кода продукта) и данных Пользовательские данные – это большой объем статических файлов и база данных Универсальный API платформы для многолетней разработки Динамическое масштабирование по нагрузке Две итоговые задачи: Выбор технической платформы для инфраструктуры Выбор платформы разработки
Традиционное устройство веб-продуктов Веб-приложение  Кэширование на диск База данных Обычный продут не поддерживает гео веб-кластер, облачные файлы, распределенное кэширование, multitenancy…
Облачная платформа: веб-кластер Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL) Репликация MySQLи балансирование нагрузки между серверами Распределенный кешданных (memcached) Непрерывность сессий между веб-серверами (хранение сессий в базе данных) Кластеризация веб-сервера: Синхронизация файлов (это – проблема для облачного сервиса) Балансирование нагрузки между серверами
1-ый этап реализации Балансировщик (клиентские запросы по HTTP) Веб-сервер 1 Веб-сервер 2 memcached 1 memcached2 MySQL master MySQL slave
2-ой этап – гео веб-кластер Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров. Потеря связи между ДЦ может составлять часы. «Веб-кластер», ДЦ в России «Веб-кластер», ДЦ в США Веб-нода Веб-нода Веб-нода Веб-нода Веб-нода Веб-нода Кэш Кэш Кэш Кэш Кэш Кэш «Веб-кластер», ДЦ в Германии БД БД БД БД БД БД Веб-нода Веб-нода Веб-нода Кэш Кэш Кэш БД БД БД
Облачное хранилище файлов ДЦ в США Посетители Веб-сервер Веб-сервера Веб-серверы ДЦ в России Веб-сервер Веб-сервера Веб-серверы Веб-приложение Облачное хранилище файлов (Amazon S3, Azure, Google Storage, OpenStack Swift) + CDN БД (master) Веб-приложение slave БД (master) slave
Из «бизнес-требований» появились технические Отказоустойчивость – умение размещаться сразу в нескольких разных территориально распределенных датацентрах (в разных странах) Большой объем базы данных –шардинг – возможность разделить базу данных по территории и группам клиентов MultiTenancyархитектура Полное разделение логики (кода продукта) и данных Пользовательские данные – это большой объем статических файлов и база данных Универсальный API платформы для многолетней разработки Динамическое масштабирование по нагрузке
Выбор платформыдля разворачивания инфраструктуры Минусы размещения на собственном оборудовании: Необходимы вложения в инфраструктуру на старте проекта Сложность масштабирования Сложность администрирования (в случае размещения в территориально удаленных датацентрах) Создание всех сопутствующих сервисов с нуля «Когда мы только начинали работу над стартапом (FriendFeed), нам нужно было решить, покупать собственные серверыили же выбрать одного из «облачных» хостинг-провайдеров – таких как Amazon (AWS). Мы выбрали первое – решили приобрести собственные серверы. Оглядываясь назад, я думаю, что это было большой ошибкой» Брет Тейлор технический директор Facebook
Используем AWS: Amazon Web Services У нас есть успешный опыт работы с Amazon (сайт www.1c-bitrix.ruи другие сайты компании). В Amazon много дополнительных сервисов, которые помогают решить наши задачи. Всю архитектуру строим из «кирпичиков» – сервисов AWS.
Используем все возможности масштабирования в Amazon – исходя из экономики проекта.
Статический контент пользователей сервиса Для хранения и отдачи статического контента пользователей сервиса используем Amazon S3 (Simple Storage Service) Любое количество объектов (до 5 Тб каждый) Возможность размещения в разных датацентрах (регионах) Группировка объектов Механизмы авторизации REST и SOAP интерфейсы для работы с объектами Высокая доступность Низкая цена (по сравнению с EBS)
Статический контент пользователей сервиса Какие задачи решаем, используя S3? Снижаем стоимость эксплуатации Можем использовать совместно с CDN для ускорения отдачи контента Снижаем нагрузку на web-узлы Используя централизованное хранилище, решаем задачу синхронизации контента между множественными web-узлами Разделяем пользовательские данные и код
Web Используем связку Elastic Load Balancing + CloudWatch+ Auto Scaling Очень высокая посещаемость Elastic Load Balancing CloudWatch + Auto Scaling Web 1 Web 2 … Web N
Web Используем связку Elastic Load Balancing + CloudWatch+ Auto Scaling Все клиентские запросы (HTTP и HTTPS) поступают на балансировщикAmazon При росте нагрузки (и обратно) используем горизонтальное (а не вертикальное) масштабирование. Для каждой отдельной веб-ноды можем использовать хоть micro instance, а управлять – их количеством. Рост и снижение нагрузки мониторим через CloudWatchдвумя путями – состояние нод (EC2) и балансировщика. Все ноды – абсолютно идентичны. Каждая новая нода поднимается из заранее созданного образа (AMI). Любая веб-нода может обслуживать любого клиента.
  Web Используем связку Elastic Load Balancing + CloudWatch+ Auto Scaling Мы задаем в конфигурации минимально необходимое количество машин. В случае сбоев или аварий машина помечается «плохой», гасится, и поднимается новый instance. Балансировщик умеет распределять нагрузку между разными AZ. Можем держать машины в разных зонах на случай аварии уровня AZ.
Обновления ПО на web-нодах Как ставить обновления на нодах, не допустив рассинхронизации данных (веб и база) Сервер обновлений Новый образ AMI Web 1 Elastic Load Balancing Web 2 Web N
Обновления ПО на web-нодах Как ставить обновления на нодах, не допустив рассинхронизации данных (веб и база) Каждое клиентское приложение работает с собственной базой. Все обновления ставятся на выделенный instance, куда не приходит нагрузка. Из этого инстанса делается новый образ AMI. Последовательно каждая машина помечается «плохой», при этом новые веб-ноды стартуют уже из нового образа. В веб-приложении существует механизм проверки соответствия версии ПО и базы. Если клиентский запрос приходит на ноду с новым ПО, а база еще старая, по первому хиту происходит обновление.
Специфика web-нод На веб-нодах нет пользовательского контента, все ноды абсолютно идентичны. При этом необходимо обеспечить изоляцию пользователей У каждого клиента свой домен Был разработан модуль для PHP: проверяет корректность HTTP_HOST, завершает хит с ошибкой, если имя некорректно устанавливает соединение с нужной базой в зависимости от HTTP_HOST авторизация внутри приложения определяется непосредственно логикой самого приложения
Конфигурация машин с базами MySQL Виртуальная машина (EC2) - High-Memory Extra Large Instance – 17.1 Gb RAM «Узким» местом может оказаться производительность дисковой системы. Решение – из EBS дисков Amazon можно построить software RAID. Выбираем RAID-10, так как он и быстрый, и надежный.
Как определить конфигурацию RAID? Любое решение выбирается, исходя из конкретной поставленной задачи. Для работы MySQL используем InnoDB. Следовательно, необходимо эффективно работать с операциями random read/write на больших файлах (ibdata). Тесты sysbench Работы с одиночным файлом 16 Гб в режиме random read/write. При увеличении количества потоков единичный диск почти сразу достигает «потолка», производительность RAID растет.
Как делать бэкапRAID-10? Для Amazon EC2 есть удобный механизм snapshot’ов. Как сделать целостный бэкапRAID-10 из нескольких дисков? А лучше – всей машины в целом Используем файловую систему, поддерживающую freeze (xfs, утилита xfs_freeze; или на новых ядрах Linux и ext3/ext4 и механизм fsfreeze). Делаем freeze файловой системы (в случае MySQL правильно предварительно сделать FLUSH TABLES WITH READ LOCK). Делаем снэпшоты всех дисков. «Размораживаем» файловую систему. Для бэкапа файлов – достаточно, но если хотим быстро и удобно переезжать между AZ (Availability Zones), используем более высокий уровень абстракции и оперируем образами целых машин – AMI (Amazon Machine Image).
Масштабирование базы Для масштабирования только чтения используем master-slave репликацию Приложение умеет отправлять запросы на запись на master, а запросы на чтение – на slave. После запросов, изменяющих данные, в случае «отставания» slave – некоторое время чтение идет с мастера Веб-нода Балансировка SQL MySQL master MySQL slave
Если требуется масштабирование мастера MySQL Для вертикального масштабирования используем slave, потом переключаем его в master Мониторим состояние master через CloudWatch Есть slave – минимальной конфигурации – работающий в режиме только бэкапа При необходимости масштабирования меняем тип машины у slave (вертикальное масштабирование) Останавливаем master, делаем slave мастером Переключаем IP (Amazon Elastic IP) на машину с новым мастером Веб-ноды не требуют переконфигурирования и продолжают работать без даунтайма Веб-нода Балансировка SQL Elastic IP CloudWatch MySQL slave MySQL master
Шардинг базы данных в рамках региона Аккаунтыa-m База данных MySQL 1 База данных MySQL 1 База данных MySQL База данных MySQL База данных MySQL 2 База данных MySQL 2 Аккаунты n-z Вертикальный шардинг Горизонтальный шардинг
Почему не RDS? У Amazon есть сервис RDS (Relational Database Service).Можно использовать MySQL или Oracle. Почему не стали использовать его? Недостаточно гибкая система (нет полноценного root в базе) Непрозрачно Риск долгого даунтайма (пример попадания молнии в европейский ДЦ в августе) Двойная стоимость машин при использовании Multi-AZ
Общая схема HTTP/HTTPS *.ru HTTP/HTTPS *.com HTTP/HTTPS *.com *.ru Elastic Load Balancing Elastic Load Balancing S3 Web 1 Web 2 Web N CloudWatch + AutoScaling Web 1 Web 2 Web N CloudWatch + AutoScaling … … cache cache cache cache cache cache MySQL master MySQL master CloudWatch CloudWatch MySQL slave MySQL slave master-master репликация management, monitoring
Надежность Один из приоритетов – постоянная доступность сервиса Внутри региона все веб-ноды не зависимы друг от друга, поднимаются в любой AZ (резервирование на случай аварии на уровне AZ) Реплика базы (slave) поднята в другой AZ Между регионами настроена master-master репликация В случае аварии на уровне целого региона: вDNS меняется IP – на балансировщик в другой зоне веб-ноды идентичны для каждого региона требуется поменять только адрес подключения к базе
Следите за нами! twitter.com/1C_Bitrix facebook.com/1CBitrix www.1c-bitrix.ru
Спасибо за внимание! Вопросы?

More Related Content

What's hot

Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQLAndrey Korshikov
 
AZadonsky New Cloud Services
AZadonsky New Cloud ServicesAZadonsky New Cloud Services
AZadonsky New Cloud Services
Vasily Demin
 
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
Ontico
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureAlexander Feschenko
 
(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...
(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...
(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...
ForkConf
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
Natalia Efimtseva
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир Юнев
DrupalCamp MSK
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загорdrupalconf
 
Azure for retails
Azure for retailsAzure for retails
Azure for retails
Alexey Bokov
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
Microsoft
 
Бессерверный бэкенд на базе AWS (РИТ2016)
Бессерверный бэкенд на базе AWS (РИТ2016)Бессерверный бэкенд на базе AWS (РИТ2016)
Бессерверный бэкенд на базе AWS (РИТ2016)
Vasily Sochinsky
 
Как создать гибридное облако. решения De novo для гибридных облачных архитектур
Как создать гибридное облако. решения De novo для гибридных облачных архитектурКак создать гибридное облако. решения De novo для гибридных облачных архитектур
Как создать гибридное облако. решения De novo для гибридных облачных архитектурPlenipotentiary_Iryna
 
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзорCloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
Clouds NN
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusOntico
 
DATA CLUSTER
DATA CLUSTERDATA CLUSTER
DATA CLUSTER
soft-point
 
"Пряники" - система мотивации и Microsoft Azure
"Пряники" - система мотивации и Microsoft  Azure"Пряники" - система мотивации и Microsoft  Azure
"Пряники" - система мотивации и Microsoft Azure
Alexey Lyubko
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
Vladd Ev
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...
Artur Baranok
 
Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"
IT Event
 

What's hot (20)

Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
 
AZadonsky New Cloud Services
AZadonsky New Cloud ServicesAZadonsky New Cloud Services
AZadonsky New Cloud Services
 
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
Реализация бессерверного бэкенда мобильного приложения на базе AWS / Кирилл П...
 
Построение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows AzureПостроение высоконагруженных приложений на базе Windows Azure
Построение высоконагруженных приложений на базе Windows Azure
 
(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...
(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...
(2 часть) 1С-Битрикс. Производительность проекта. Архитектура проекта «Битрик...
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир Юнев
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
 
Azure for retails
Azure for retailsAzure for retails
Azure for retails
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
 
Бессерверный бэкенд на базе AWS (РИТ2016)
Бессерверный бэкенд на базе AWS (РИТ2016)Бессерверный бэкенд на базе AWS (РИТ2016)
Бессерверный бэкенд на базе AWS (РИТ2016)
 
Как создать гибридное облако. решения De novo для гибридных облачных архитектур
Как создать гибридное облако. решения De novo для гибридных облачных архитектурКак создать гибридное облако. решения De novo для гибридных облачных архитектур
Как создать гибридное облако. решения De novo для гибридных облачных архитектур
 
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзорCloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
CloudsNN 2013 Гаджиев Георгий. Windows azure iaas обзор
 
Wonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 RusWonderful World Of Mysql Storage Engines Hl2008 Rus
Wonderful World Of Mysql Storage Engines Hl2008 Rus
 
DATA CLUSTER
DATA CLUSTERDATA CLUSTER
DATA CLUSTER
 
"Пряники" - система мотивации и Microsoft Azure
"Пряники" - система мотивации и Microsoft  Azure"Пряники" - система мотивации и Microsoft  Azure
"Пряники" - система мотивации и Microsoft Azure
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...
 
Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"Ара Исраелян "Как ускорить разработку приложений"
Ара Исраелян "Как ускорить разработку приложений"
 

Similar to Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)

Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Ontico
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Uptime community
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
solit
 
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
jam_team
 
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...CodeFest
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data ServicesMedia Gorod
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
1С-Битрикс
 
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?Clouds NN
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
1С-Битрикс
 
Cisco Content Security FAQ.
Cisco Content Security FAQ.Cisco Content Security FAQ.
Cisco Content Security FAQ.Cisco Russia
 
Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2
Andrew Gusev
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
Alexey Bokov
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Artur Baranok
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
Alexander Demidov
 
Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?
Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?
Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?
ActiveCloud
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
Fwdays
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018
ITEM
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
Alexey Bokov
 
Что нового в 11.0?
Что нового в 11.0?Что нового в 11.0?
Что нового в 11.0?
1С-Битрикс
 
Миграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоМиграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоNatalia Efimtseva
 

Similar to Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков) (20)

Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на при...
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
 
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
[JAM 2.1] Cloud Computing (Dmitry Ivashnev)
 
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
CodeFest 2010. Гаджибалаев Н. — сlass Server::Cloud < Server::Hardware // ...
 
Sql Server Data Services
Sql Server Data ServicesSql Server Data Services
Sql Server Data Services
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
 
Веб-кластер
Веб-кластерВеб-кластер
Веб-кластер
 
Cisco Content Security FAQ.
Cisco Content Security FAQ.Cisco Content Security FAQ.
Cisco Content Security FAQ.
 
Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2
 
Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014Open source technologies in Microsoft cloud - MS SWIT 2014
Open source technologies in Microsoft cloud - MS SWIT 2014
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure Websites
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?
Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?
Облачные технологии и инфраструктура как сервис (IaaS). Зачем это нужно бизнесу?
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
 
Что нового в 11.0?
Что нового в 11.0?Что нового в 11.0?
Что нового в 11.0?
 
Миграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоМиграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облако
 

More from Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico
 

More from Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)

  • 1. Проектируем облачныйвеб-сервис «по-взрослому» Сергей Рыжиков генеральный директор компании «1С-Битрикс»
  • 2. Запускаем новый SaaSпродуктBitrix24 Есть несколько задач на старте и в процессе работы Новый SaaSсервис – как коммерческие, так и «бесплатные» пользователи Минимизация расходов на эксплуатацию и снижение финансовых рисков на старте проекта Масштабирование при росте нагрузки и обратное масштабирование Надежность – обеспечение SLA Работа с разными рынками: США, Европа, Россия Быстрая отдача статического контента
  • 3. Из «бизнес-требований» появились технические Отказоустойчивость – умение размещаться сразу в нескольких разных территориально распределенных датацентрах (в разных странах) Большой объем базы данных –шардинг – возможность разделить базу данных по территории и группам клиентов MultiTenancyархитектура Полное разделение логики (кода продукта) и данных Пользовательские данные – это большой объем статических файлов и база данных Универсальный API платформы для многолетней разработки Динамическое масштабирование по нагрузке Две итоговые задачи: Выбор технической платформы для инфраструктуры Выбор платформы разработки
  • 4. Традиционное устройство веб-продуктов Веб-приложение Кэширование на диск База данных Обычный продут не поддерживает гео веб-кластер, облачные файлы, распределенное кэширование, multitenancy…
  • 5. Облачная платформа: веб-кластер Вертикальный шардинг (вынесение модулей на отдельные серверы MySQL) Репликация MySQLи балансирование нагрузки между серверами Распределенный кешданных (memcached) Непрерывность сессий между веб-серверами (хранение сессий в базе данных) Кластеризация веб-сервера: Синхронизация файлов (это – проблема для облачного сервиса) Балансирование нагрузки между серверами
  • 6. 1-ый этап реализации Балансировщик (клиентские запросы по HTTP) Веб-сервер 1 Веб-сервер 2 memcached 1 memcached2 MySQL master MySQL slave
  • 7. 2-ой этап – гео веб-кластер Асинхронная master-master репликация для обеспечения работы географически распределенных веб-кластеров. Потеря связи между ДЦ может составлять часы. «Веб-кластер», ДЦ в России «Веб-кластер», ДЦ в США Веб-нода Веб-нода Веб-нода Веб-нода Веб-нода Веб-нода Кэш Кэш Кэш Кэш Кэш Кэш «Веб-кластер», ДЦ в Германии БД БД БД БД БД БД Веб-нода Веб-нода Веб-нода Кэш Кэш Кэш БД БД БД
  • 8. Облачное хранилище файлов ДЦ в США Посетители Веб-сервер Веб-сервера Веб-серверы ДЦ в России Веб-сервер Веб-сервера Веб-серверы Веб-приложение Облачное хранилище файлов (Amazon S3, Azure, Google Storage, OpenStack Swift) + CDN БД (master) Веб-приложение slave БД (master) slave
  • 9. Из «бизнес-требований» появились технические Отказоустойчивость – умение размещаться сразу в нескольких разных территориально распределенных датацентрах (в разных странах) Большой объем базы данных –шардинг – возможность разделить базу данных по территории и группам клиентов MultiTenancyархитектура Полное разделение логики (кода продукта) и данных Пользовательские данные – это большой объем статических файлов и база данных Универсальный API платформы для многолетней разработки Динамическое масштабирование по нагрузке
  • 10. Выбор платформыдля разворачивания инфраструктуры Минусы размещения на собственном оборудовании: Необходимы вложения в инфраструктуру на старте проекта Сложность масштабирования Сложность администрирования (в случае размещения в территориально удаленных датацентрах) Создание всех сопутствующих сервисов с нуля «Когда мы только начинали работу над стартапом (FriendFeed), нам нужно было решить, покупать собственные серверыили же выбрать одного из «облачных» хостинг-провайдеров – таких как Amazon (AWS). Мы выбрали первое – решили приобрести собственные серверы. Оглядываясь назад, я думаю, что это было большой ошибкой» Брет Тейлор технический директор Facebook
  • 11. Используем AWS: Amazon Web Services У нас есть успешный опыт работы с Amazon (сайт www.1c-bitrix.ruи другие сайты компании). В Amazon много дополнительных сервисов, которые помогают решить наши задачи. Всю архитектуру строим из «кирпичиков» – сервисов AWS.
  • 12. Используем все возможности масштабирования в Amazon – исходя из экономики проекта.
  • 13. Статический контент пользователей сервиса Для хранения и отдачи статического контента пользователей сервиса используем Amazon S3 (Simple Storage Service) Любое количество объектов (до 5 Тб каждый) Возможность размещения в разных датацентрах (регионах) Группировка объектов Механизмы авторизации REST и SOAP интерфейсы для работы с объектами Высокая доступность Низкая цена (по сравнению с EBS)
  • 14. Статический контент пользователей сервиса Какие задачи решаем, используя S3? Снижаем стоимость эксплуатации Можем использовать совместно с CDN для ускорения отдачи контента Снижаем нагрузку на web-узлы Используя централизованное хранилище, решаем задачу синхронизации контента между множественными web-узлами Разделяем пользовательские данные и код
  • 15. Web Используем связку Elastic Load Balancing + CloudWatch+ Auto Scaling Очень высокая посещаемость Elastic Load Balancing CloudWatch + Auto Scaling Web 1 Web 2 … Web N
  • 16. Web Используем связку Elastic Load Balancing + CloudWatch+ Auto Scaling Все клиентские запросы (HTTP и HTTPS) поступают на балансировщикAmazon При росте нагрузки (и обратно) используем горизонтальное (а не вертикальное) масштабирование. Для каждой отдельной веб-ноды можем использовать хоть micro instance, а управлять – их количеством. Рост и снижение нагрузки мониторим через CloudWatchдвумя путями – состояние нод (EC2) и балансировщика. Все ноды – абсолютно идентичны. Каждая новая нода поднимается из заранее созданного образа (AMI). Любая веб-нода может обслуживать любого клиента.
  • 17. Web Используем связку Elastic Load Balancing + CloudWatch+ Auto Scaling Мы задаем в конфигурации минимально необходимое количество машин. В случае сбоев или аварий машина помечается «плохой», гасится, и поднимается новый instance. Балансировщик умеет распределять нагрузку между разными AZ. Можем держать машины в разных зонах на случай аварии уровня AZ.
  • 18. Обновления ПО на web-нодах Как ставить обновления на нодах, не допустив рассинхронизации данных (веб и база) Сервер обновлений Новый образ AMI Web 1 Elastic Load Balancing Web 2 Web N
  • 19. Обновления ПО на web-нодах Как ставить обновления на нодах, не допустив рассинхронизации данных (веб и база) Каждое клиентское приложение работает с собственной базой. Все обновления ставятся на выделенный instance, куда не приходит нагрузка. Из этого инстанса делается новый образ AMI. Последовательно каждая машина помечается «плохой», при этом новые веб-ноды стартуют уже из нового образа. В веб-приложении существует механизм проверки соответствия версии ПО и базы. Если клиентский запрос приходит на ноду с новым ПО, а база еще старая, по первому хиту происходит обновление.
  • 20. Специфика web-нод На веб-нодах нет пользовательского контента, все ноды абсолютно идентичны. При этом необходимо обеспечить изоляцию пользователей У каждого клиента свой домен Был разработан модуль для PHP: проверяет корректность HTTP_HOST, завершает хит с ошибкой, если имя некорректно устанавливает соединение с нужной базой в зависимости от HTTP_HOST авторизация внутри приложения определяется непосредственно логикой самого приложения
  • 21. Конфигурация машин с базами MySQL Виртуальная машина (EC2) - High-Memory Extra Large Instance – 17.1 Gb RAM «Узким» местом может оказаться производительность дисковой системы. Решение – из EBS дисков Amazon можно построить software RAID. Выбираем RAID-10, так как он и быстрый, и надежный.
  • 22. Как определить конфигурацию RAID? Любое решение выбирается, исходя из конкретной поставленной задачи. Для работы MySQL используем InnoDB. Следовательно, необходимо эффективно работать с операциями random read/write на больших файлах (ibdata). Тесты sysbench Работы с одиночным файлом 16 Гб в режиме random read/write. При увеличении количества потоков единичный диск почти сразу достигает «потолка», производительность RAID растет.
  • 23. Как делать бэкапRAID-10? Для Amazon EC2 есть удобный механизм snapshot’ов. Как сделать целостный бэкапRAID-10 из нескольких дисков? А лучше – всей машины в целом Используем файловую систему, поддерживающую freeze (xfs, утилита xfs_freeze; или на новых ядрах Linux и ext3/ext4 и механизм fsfreeze). Делаем freeze файловой системы (в случае MySQL правильно предварительно сделать FLUSH TABLES WITH READ LOCK). Делаем снэпшоты всех дисков. «Размораживаем» файловую систему. Для бэкапа файлов – достаточно, но если хотим быстро и удобно переезжать между AZ (Availability Zones), используем более высокий уровень абстракции и оперируем образами целых машин – AMI (Amazon Machine Image).
  • 24. Масштабирование базы Для масштабирования только чтения используем master-slave репликацию Приложение умеет отправлять запросы на запись на master, а запросы на чтение – на slave. После запросов, изменяющих данные, в случае «отставания» slave – некоторое время чтение идет с мастера Веб-нода Балансировка SQL MySQL master MySQL slave
  • 25. Если требуется масштабирование мастера MySQL Для вертикального масштабирования используем slave, потом переключаем его в master Мониторим состояние master через CloudWatch Есть slave – минимальной конфигурации – работающий в режиме только бэкапа При необходимости масштабирования меняем тип машины у slave (вертикальное масштабирование) Останавливаем master, делаем slave мастером Переключаем IP (Amazon Elastic IP) на машину с новым мастером Веб-ноды не требуют переконфигурирования и продолжают работать без даунтайма Веб-нода Балансировка SQL Elastic IP CloudWatch MySQL slave MySQL master
  • 26. Шардинг базы данных в рамках региона Аккаунтыa-m База данных MySQL 1 База данных MySQL 1 База данных MySQL База данных MySQL База данных MySQL 2 База данных MySQL 2 Аккаунты n-z Вертикальный шардинг Горизонтальный шардинг
  • 27. Почему не RDS? У Amazon есть сервис RDS (Relational Database Service).Можно использовать MySQL или Oracle. Почему не стали использовать его? Недостаточно гибкая система (нет полноценного root в базе) Непрозрачно Риск долгого даунтайма (пример попадания молнии в европейский ДЦ в августе) Двойная стоимость машин при использовании Multi-AZ
  • 28. Общая схема HTTP/HTTPS *.ru HTTP/HTTPS *.com HTTP/HTTPS *.com *.ru Elastic Load Balancing Elastic Load Balancing S3 Web 1 Web 2 Web N CloudWatch + AutoScaling Web 1 Web 2 Web N CloudWatch + AutoScaling … … cache cache cache cache cache cache MySQL master MySQL master CloudWatch CloudWatch MySQL slave MySQL slave master-master репликация management, monitoring
  • 29. Надежность Один из приоритетов – постоянная доступность сервиса Внутри региона все веб-ноды не зависимы друг от друга, поднимаются в любой AZ (резервирование на случай аварии на уровне AZ) Реплика базы (slave) поднята в другой AZ Между регионами настроена master-master репликация В случае аварии на уровне целого региона: вDNS меняется IP – на балансировщик в другой зоне веб-ноды идентичны для каждого региона требуется поменять только адрес подключения к базе
  • 30. Следите за нами! twitter.com/1C_Bitrix facebook.com/1CBitrix www.1c-bitrix.ru