Pull to refresh
98.31
Rating
CloudMTS
Виртуальная инфраструктура IaaS

Как команда инженеров Airbnb «разбила» основную БД проекта за пару недель

CloudMTS corporate blog Hosting System administration *Server Administration *Data storages *
В нашем блоге на Хабре мы любим разбирать интересные кейсы, связанные с практической стороной использования виртуальной инфраструктуры стартапами. Помимо этого мы обращаем внимание и на зарубежный опыт — анализируем все, что связано с работой сложных ИТ-систем, инфраструктуры и железа.

Например, совсем недавно мы рассказывали:


Сегодня мы натолкнулись на технологический блог компании Airbnb и решили рассказать об опыте этой очень известной компании. По словам инженеров, каждый год трафик их сервиса растет в 3,5 раза, а его пик приходится на летний период. Этот факт безусловно радует начальство — бизнес процветает, но и ставит перед технологическими специалистами все новые задачи.

/ фото OuiShare CC

Airbnb предоставляет онлайн-площадку для размещения, поиска и краткосрочной аренды частного жилья по всему миру. Казалось бы, достаточно примитивный сервис. Зачем здесь какие-то облачные технологии и оптимизация производительности?

Понятное дело, что ответ прост — многомиллионная аудитория сервиса. Помимо этого — подключение все новых регионов, что означает постоянную необходимость масштабирования ИТ-инфраструктуры «на лету». Весь этот опыт собран в ИТ-блоге компании.

Одна из задач, которая понравилась лично нам — масштабированием БД. Уилли Йао, один из инженеров, рассказал о том, как компания вела подготовку к летним пикам нагрузки (что вполне логично и объяснимо, лето — самый удобный сезон для путешествий).

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

Стоит отметить, что в блоге Airbnb неоднократно рассказывали о том, что команда использует вертикальное разбиение по выполняемым функциям, для того чтобы распределить нагрузку и устранить возможные сбои. Для каждого независимого Java и Rails сервиса у них имеется своя выделенная БД, каждая из которых работает на собственном экземпляре RDS.

/ фото Sebastiaan ter Burg CC

Быстрый рост стартапа все-таки сказался и ИТ-составляющей — огромный объем данных оставался в исходной БД, оставшееся со временен, когда Airbnb было монолитным приложением на Rails. Помимо этого последняя разбивка БД была целых три года назад, что осложняло проведение повторной процедуры при текущих объемах данных.

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

Команде помог еще и тот факт, что БД MySQL работает на основе сервиса Amazon RDS, так что создать новые копии, доступные для чтения (read replicas) и перевести копию в режим самостоятельного мастер-сервера относительно несложно.

Здесь было принято решение по созданию новых реплик и блокировки возможности записи в определенные таблицы, чтобы сохранить целостность данных.

Для подготовки к переносу был использован анализатор запросов. Его основная задача — сохранить целостность и корректность работы существующих запросов с использованием перекрестных связей между таблицами.

Согласно плану, было необходимо упорядочить все имена баз данных в специальных конвейерах данных, поэтому в итоге БД решили не переименовывать — имена старой и новой совпадали.

Далее нужно было понять, как скажется простой сервиса входящих сообщений (до 10 минут) на работе службы поддержки клиентов. Для подобных маневров пришлось выбрать наименее загруженное время. Общий план был примерно следующий:

1) внести изменения в запросы входящих сообщений — смена хоста БД на следующем шаге не требует внесения изменений — есть есть интсрументы для обновления настроек;

2) перенаправить весь трафик с запросами на запись входящих сообщений в мастер сообщений;

3) на главном мастер-сервере удалить все соединения с БД сообщений;

4) проверить, все ли готово к репликации;

5) провести преобразование мастера сообщений (около 3,5 минут);

6) развертывание на обновленном мастере сообщений перед последующим автоматическим резервным копированием на RDS;

7) удалить ненужные таблицы в соответствующих базах данных

В итоге инженеры Airbnb получили заметное снижение числа записей в основной базе данных на мастер-сервере. Сама реализация проекта заняла около двух недель. За это время произошло не более семи 30-секундных простоев сервиса входящих сообщений, а размер основной БД сократился на 20%.

Еще более важным итогом проекта стало достижение стабильности основной БД, которая достигалась за счет сокращения числа запросов на запись данных на 33%.
Tags:
Hubs:
Total votes 16: ↑13 and ↓3 +10
Views 12K
Comments Comments 1

Information

Founded
Location
Россия
Website
cloud.mts.ru
Employees
201–500 employees
Registered