SlideShare a Scribd company logo
1 of 58
Download to read offline
Проектирование высоконагруженного
масштабируемого отказоустойчивого веб-
  сервиса в облаке на примере Amazon

                        Александр Демидов,
                          Александр Сербул
                               «1С-Битрикс»
Выбор платформы для
 разворачивания инфраструктуры
Минусы размещения на собственном оборудовании:
 Необходимы вложения в инфраструктуру на старте проекта
 Сложность масштабирования
 Сложность администрирования (в случае размещения в
 территориально удаленных датацентрах)
 Сложность резервирования на уровне ДЦ
 Создание всех сопутствующих сервисов с нуля
         «Когда мы только начинали работу над стартапом (FriendFeed), нам нужно было решить,
         покупать собственные серверы или же выбрать одного из «облачных» хостинг-
         провайдеров – таких как Amazon (AWS). Мы выбрали первое – решили приобрести
         собственные серверы. Оглядываясь назад, я думаю, что это было большой ошибкой»

         Брет Тейлор, технический директор Facebook
Почему Amazon Web Services?
Приложения тоже имеют «нормальные формы»
Многие этого не понимают
Риск изобретения неудачного велосипеда
Риск: «Зачем делать просто, если можно сложно?» 
Используем опыт взрослых расширяемых архитектур
Почему Amazon Web Services?
Архитектор собирает костяк проекта «из «LEGO»
Основные усилия тратим на нестандартный функционал
Почему Amazon Web Services?
Почему Amazon Web Services?
Можно легко мигрировать машины и сервисы между
датацентрами
Спасает при авариях
Amazon Elastic Compute Cloud EC2) и
 вертикальное масштабирование
Практически моментальная доступность необходимого количества
виртуальных машин (instances) нужной конфигурации (от 613 Мб до
68 Гб RAM, от 1 до до 33.5 ECU CPU)
Множество готовых образов систем (различные дистрибутивы Linux,
Microsoft Windows Server, OpenSolaris)
Высокая доступность (99.95% - Amazon EC2 SLA)
Возможность использования дисков различной конфигурации
(Amazon Elastic Block Store (EBS))
Возможность размещения виртуальных машин в разных
датацентрах (регионах)
Безопасность: удобный файрвол для групп виртуальных машин
Запуск новой машины
Выбор образа (стандартные – Linux, Windows; собственные ранее
созданные; community)
Выбор типа машины
Выбор AZ
Public / private key
Security group
Другие опции (termination protection, набор дисков, shutdown
behavior и т.д.)
«Подводный камень» № 1

EC2 – практически тот же
VPS
  Нет «волшебного
  ползунка», чтобы гибко
  задать конфигурацию –
  как на старте, так и в
  процессе работы
  Нет моментального
  вертикального
  масштабирования
«Подводный камень» № 2




                     steal
EC2 и IP

ec2-23-23-231-56.compute-1.amazonaws.com       10.10.26.123



                                           23.23.231.56

Только 1 внешний IP у каждой машины
Разный резолвинг внутри и снаружи
Внутренний и внешний IP не постоянны (кроме
использования Elastic IP)
При организации рассылок – не забывайте про IN PTR
Elastic IP

        Elastic IP:
       23.34.176.15




EC2

                      EC2
#!/bin/sh

NODE_INSTANCE_ID=$1

# http://aws.amazon.com/ec2/instance-types/
NODE_TARGET_TYPE='m2.2xlarge'

NODE_ELASTIC_IP=$2

ec2-stop-instances $NODE_INSTANCE_ID

while ec2-describe-instances $NODE_INSTANCE_ID | grep -q stopping
do
  sleep 5
  echo 'Waiting'
done

ec2-modify-instance-attribute --instance-type $NODE_TARGET_TYPE $NODE_INSTANCE_ID

ec2-start-instances $NODE_INSTANCE_ID

ec2-associate-address $NODE_ELASTIC_IP -i $NODE_INSTANCE_ID
Облачные диски - EBS
Elastic Block Store: 1GB – 1TB
До 1000 IOPS/диск
 AFR (annual failure rate) ~0.1-0.5% (при регулярных
снепшотах)
IO: десятки MB/sec – серьезно уступают «железным»
Хорошо помогает софтварный рейд (md)
raid0 или raid0+1?
Диски живут в одном «ДЦ», а их снепшоты между «ДЦ», на
уровне региона
Снэпшоты - EBS
   Делать снепшоты рейдов можно и нужно
   Нет инструментов очистки устаревших снепшотов и образов
   машин, их нужно писать
Unix: ec2-consistent-snapshot
или:

fsfreeze –f mountpoint (Linux Ext3/4, ReiserFS, JFS, XFS)

AWS SDK for PHP:
AmazonEC2::create_snapshot ( $volume_id, $opt )
AmazonEC2::create_image ( $instance_id, $name, $opt )

fsfreeze –u mountpoint
AMI – образы машин
AMI – набор данных,
описывающих параметры
машины + загрузочный
образ
 Делать снепшоты машин
целиком – гораздо
удобнее, чем по одному
диску
Машина переносится
между «датацентрами» -
целиком
Auto Scaling
Мониторинг (CloudWatch)          Балансировщик (ELB)




                  ДЦ1                                   ДЦ2




                          Группа автомасштабирования (AutoScaling)




                           Region = группа связанных датацентров


 Образ машины (AMI)
Auto Scaling
Elastic Load Balancing
Elastic Load Balancing
Elastic Load Balancing – SSL
Elastic Load Balancing – особенности
Level 7 (HTTP) балансировщик «пропускает» не все методы:
например, не работают REPORT, SEARCH, MKCALENDAR
(WebDav, CalDav и т.п.)
Level 4 (TCP) не передает на бэкенд (EC2) real IP
При нагрузочном тестировании нельзя давать нагрузку
«ступенькой» - только постепенное плавное увеличение
Amazon Simple Storage Service (S3)
Если каждая веб-нода становится «расходным материалом»,
где хранить статический контент?
  Разные типы хранилищ (наличие Reduced Redundancy
  Storage – RRS)
  SDK: Java, .NET, PHP, Ruby, iOS, Android
  S3tools, s3fs, сторонние клиенты
  Доступность – 99.99%
  Надежность – 99.999999999%
  ACL
  Версионность
Интеграция приложения с S3
API хранилища для «прозрачной» работы с файлами
API для разработчиков (не используем стандартные
функции для работы с файлами)
Избегаем «диких» файлов
«Прозрачность» для всех модулей системы
Таблица с данными обо всех подключенных хранилищах
Таблица со списком файлов, и указанием, где они хранятся
(можно сразу хранить дополнительную информацию)
Не используем file_size, getimagesize и т.п. – сохраняем все
данные при аплоаде
S3 + CDN



Веб-сервер
Изоляция данных пользователей в S3
 Раньше - новый IAM пользователь, получаем AccessKey,
 SecretKey. Но есть лимит: макс. 15 000 (по умолчанию –
 5 000)
 Используем Security Token Service (STS) – временные
 учетные записи
 Права внутри одной директории:
      PutObject
      GetObject
      DeleteObject
Деплой и обновления системного ПО
                                  Как ставить
           Сервер       Новый     обновления на
         обновлений   образ AMI   нодах, не
                                  допустив
                                  рассинхрони-
                                  зации данных
                                  (веб и база)?
           Web 1

                       Elastic
                        Load
           Web 2      Balancing



           Web N
Как работают обновления ПО
Как ставить обновления на нодах, не допустив
рассинхронизации данных (веб и база)
 Каждое клиентское приложение работает с собственной базой.
 Все обновления ставятся на выделенный instance, куда не приходит
 нагрузка.
 Из этого инстанса делается новый образ AMI.
 Последовательно каждая машина помечается «плохой», при этом
 новые веб-ноды стартуют уже из нового образа.
 В веб-приложении существует механизм проверки соответствия версии
 ПО и базы.
 Если клиентский запрос приходит на ноду с новым ПО, а база еще
 старая, по первому хиту происходит обновление.
База – RDS или не RDS?
У Amazon есть сервис RDS (Relational
Database Service). Можно использовать
MySQL или Oracle. Стоит ли использовать?
 Недостаточно гибкая система (нет
 полноценного root в базе)
 Непрозрачно
 Риск долгого даунтайма
 Двойная стоимость машин при использовании
 Multi-AZ
 При этом – неэффективное использование
 ресурсов
Конфигурация машин c базами MySQL
 Виртуальная машина (EC2) - m2.2xlarge:
     34.2 GB of memory
     13 EC2 Compute Units (4 virtual cores with 3.25
     EC2 Compute Units each)
     64-bit platform
     I/O Performance: High
     EBS-Optimized Available: No    


 Диск может оказаться «узким» местом…
Software RAID
# cat /proc/partitions
major minor #blocks name

202       16   880737792   xvdb
202      144   157286400   xvdj
202      128   157286400   xvdi
202      112   157286400   xvdh
202       96   157286400   xvdg
202        0     8388608   xvda
202        1      112423   xvda1
202        2     5253255   xvda2
202        3     3020220   xvda3
202      224   524288000   xvdo
202      208   157286400   xvdn
202      192   157286400   xvdm
202      176   157286400   xvdl
202      160   157286400   xvdk
  9        0   629139456   md0
# mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/xvd[g-j]

# mkfs.ext4 /dev/md0


/etc/fstab

/dev/md0 /mnt/raid10 ext4
defaults,noatime,nodiratime,data=writeback,barrier=0 0 0


# mount /mnt/raid10
Software RAID – тесты sysbench




Режим random read/write. При увеличении количества потоков
единичный диск почти сразу достигает «потолка»,
производительность RAID растет.
MySQL? Percona Server!
Оптимизирован для работы с медленными дисками
Быстрый рестарт базы (Fast Shut-Down, Buffer Pool Pre-Load)
Множество счетчиков и расширенных отчетов
XtraDB Storage Engine
XtraBackup
BLOB, TEXT в таблицах MEMORY (HEAP)
MySQL? Percona Server!
mysql> SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME;
+----------------+-------+----------------+
| time            | count | total           |
+----------------+-------+----------------+
|        0.000001 |     0 |        0.000000 |
|        0.000010 | 2011 |         0.007438 |
|        0.000100 | 12706 |        0.513395 |
|        0.001000 | 4624 |         1.636106 |
|        0.010000 | 2994 |        12.395174 |
|        0.100000 |   200 |        6.225339 |
|        1.000000 |    33 |        5.480764 |
|       10.000000 |     1 |        2.374067 |
|      100.000000 |     0 |        0.000000 |
|    1000.000000 |      0 |        0.000000 |
|   10000.000000 |      0 |        0.000000 |
| 100000.000000 |       0 |        0.000000 |
| 1000000.000000 |      0 |        0.000000 |
| TOO LONG        |     0 | TOO LONG        |
+----------------+-------+----------------+
14 rows in set (0.00 sec)
Используем master-master
         репликацию в MySQL
Особенности настройки MySQL:
      auto_increment_increment
      auto_increment_offset
Базы в разных датацентрах синхронны, при этом независимы
друг от друга: потеря связности между датацентрами может
составлять часы, данные синхронизируются после
восстановления.
Пользователь и все сотрудники этой компании работают в одном
датацентре за счет управления балансировщиком.
Вертикальное масштабирование базы
 Для вертикального масштабирования используем slave,
 потом переключаем его в master

                                 Мониторим состояние master через
          Веб-нода               CloudWatch
      Балансировка SQL           Есть slave – минимальной конфигурации –
                                 работающий в режиме только бэкапа
       Elastic IP                При необходимости масштабирования
                                 меняем тип машины у slave (вертикальное
                                 масштабирование)
                                 Останавливаем master, делаем slave
                         MySQL   мастером
   MySQL                 slave   Переключаем IP (Amazon Elastic IP) на
   master                        машину с новым мастером
                                 Веб-ноды не требуют
            CloudWatch           переконфигурирования и продолжают
                                 работать без даунтайма
Горизонтальное масштабирование базы
 Образ машины (AMI)
                                                                                         Миллионы таблиц,
                                                                                         десятки тысяч баз данных
                            Мониторинг                 Балансировщики (ELB)
                            (CloudWatch)


                                       ДЦ1                                                   ДЦ2


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




                                             DB1                                          DB1
                                           (Active)
     Вертикальный шардинг




                                                                                        (Passive)
                                                         Percona XtraDB Master-
                                                         Master (Active/Passive)

                                             DB2                                           DB2
                                           (Passive)                                     (Active)




                                              DB3                                          DB3
                                            (Active)                                     (Passive)
Бэкап MySQL
                              Unix: ec2-consistent-snapshot
                              или:

                              “FLUSH TABLES WITH READ
                              LOCK”
       Буферы MySQL           fsfreeze –f mountpoint (Linux
       (InnoDB) в памяти      Ext3/4, ReiserFS, JFS, XFS)

                              AWS SDK for PHP:
                              AmazonEC2::create_snapshot (
                              $volume_id, $opt )
                              AmazonEC2::create_image (
                              $instance_id, $name, $opt )

                              fsfreeze –u mountpoint
                              “UNLOCK TABLES”
                                                              Хранилище данных
Диск (EBS)                                                    (на базе S3 = Simple
                                                              Storage Service)

                                                              Снепшоты.

    Данные MySQL                                              Автоматически:
    (InnoDB) на диске                                         консолидация бэкапов,
                                                              сохранение только
                                                              инкрементов
Бэкап MySQL
Рецепта «100% целостного» снепшота файлов MySQL
похоже нет, нужно колдовать 
Percona XtraBackup – инкрементальный бинарный бэкап
Нужно немало времени на подготовку бинарного бэкапа к
«чистому» быстрому восстановлению
Логический бэкап снимаем со слейвов
Случались тотальные разрушения raid10 при аварии в
амазоне – бинарный бэкап (или снепшот машины) +
бинлоги
Организация системы мониторинга
Лучше – стандартные решения (Nagios, Zabbix и т.п.), а не
самописные.
Дежурная смена и/или мгновенные уведомления.
Мониторить – всё.
Но – аккуратно. Тысячи уведомлений будут бесполезны.
Автоматизация типовых реакций.
Мониторить систему мониторинга.
В идеальном мире – распределенная система мониторинга.
«Мониторинг безопасности» – изменения файлов и т.п.
Мониторинг операционной системы
    Место на дисках



    Очередь выполнения



    Размер и использование swap




И т.д.
Мониторинг MySQL
Ключевые тесты
Автоматика – структура теста
           Ядро


Nagios
                                                Тест


    Тест          Тест

    Тест          Тест


    Обработчик события                      Тест nagios

    Обработчик события
                          Прослойка
    Обработчик события    вспомогательного кода           Pinba
                          (PHP, bash)


                            AWS SDK for PHP

 CloudWatch -
 автомасштабирование
                             Утилиты AWS
                             для консоли
     Обработчик события


                              API Амазона
Автоматика – обработчик
           Ядро

Nagios
                                        Обработчик события



    Тест           Тест

    Тест           Тест   Прослойка вспомогательного кода (PHP, bash)


    Обработчик события
                                                           Утилиты AWS
                           AWS SDK for PHP
     Обработчик события                                    для консоли

     Обработчик события
                                             API Амазона



 CloudWatch -
 автомасштабирование


     Обработчик события
Автоматика
В CloudWatch недостаточно возможностей, но используем его
максимально
AWS SDK for PHP и вообще работа с API амазона не всегда
прямолинейна – нужна прослойка
Для основного мониторинга и активной обратной связи
используем Nagios и его обработчики событий
Для аналитики в основном используем Munin, часть данных
берем из CloudWatch
Присматриваемся к gearman, SQS
Аналитика
Аналитика – со стороны пользователя
 Мало знать «среднюю температуру по больнице» и мониторить
 только главную страницу сайта
 Гистограммы распределения времени хитов, памяти, кодам
 ответа и т.п. – из логов (awk-скрипт), pinba или других
 инструментов
Пользовательская аналитика – в
          графиках
Гистограмма времени обработки запросов (Percona)
Пользовательская аналитика – в
          графиках
Число ошибок в хитах за 15 минут - меньше L (из pinba)

Макс. время хита (тэга) – меньше M сек.

Макс. использование памяти хитом – меньше N МБ
Итог
Масштабируемость под высокие
           нагрузки
Используем связку Elastic Load Balancing + CloudWatch +
Auto Scaling

                     Очень высокая посещаемость




                        Elastic Load Balancing




   Web 1            Web 2
                                                 …   Web N

                  CloudWatch + Auto Scaling
Отказоустойчивость узлов
                                          Elastic
                                      Load Balancing




 Web 1       Web 2
                     …        Web N        S3          Web 1        Web 2
                                                                            …           Web N




Датацентр 1 в            MySQL                             MySQL            Датацентр 2 в
регионе US East          master                            master           регионе US East
                                       master-master
(Virginia)                              репликация                          (Virginia)

Мониторинг и                                                                Мониторинг и
масштабирование –                                                           масштабирование –
CloudWatch +                                                                CloudWatch +
AutoScaling                                                                 AutoScaling

                                       management,
                                        monitoring,
                                       MySQL backup
Отказоустойчивость узлов
                                          Elastic
                                      Load Balancing




 Web 1       Web 2
                     …        Web N        S3          Web 1        Web 2
                                                                            …           Web N




Датацентр 1 в            MySQL                             MySQL            Датацентр 2 в
регионе US East          master                            master           регионе US East
                                       master-master
(Virginia)                              репликация                          (Virginia)

Мониторинг и                                                                Мониторинг и
масштабирование –                                                           масштабирование –
CloudWatch +                                                                CloudWatch +
AutoScaling                                                                 AutoScaling

                                       management,
                                        monitoring,
                                       MySQL backup
Отказоустойчивость ДЦ
                                          Elastic
                                      Load Balancing




 Web 1       Web 2
                     …        Web N        S3          Web 1        Web 2
                                                                            …           Web N




Датацентр 1 в            MySQL                             MySQL            Датацентр 2 в
регионе US East          master                            master           регионе US East
                                       master-master
(Virginia)                              репликация                          (Virginia)

Мониторинг и                                                                Мониторинг и
масштабирование –                                                           масштабирование –
CloudWatch +                                                                CloudWatch +
AutoScaling                                                                 AutoScaling

                                       management,
                                        monitoring,
                                       MySQL backup
Надежность «облака»
Само по себе «облако» не
надежнее традиционного
хостинга и собственного
оборудования. «Облако»
дает возможность
организовать надежную
инфраструктуру.
Спасибо за внимание!

                       Вопросы?

Александр Сербул      Александр Демидов
serbul@1c-bitrix.ru   demidov@1c-bitrix.ru
    @AlexSerbul          @demidov

More Related Content

What's hot

Решение TIONIX на базе Mirantis OpenStack
Решение TIONIX на базе Mirantis OpenStackРешение TIONIX на базе Mirantis OpenStack
Решение TIONIX на базе Mirantis OpenStackMirantis IT Russia
 
Облачные технологии и виртуализация
Облачные технологии и виртуализацияОблачные технологии и виртуализация
Облачные технологии и виртуализацияoelifantiev
 
Приватный клауд на базе OpenStack
Приватный клауд на базе OpenStackПриватный клауд на базе OpenStack
Приватный клауд на базе OpenStackIlya Alekseyev
 
Cоздаем облачную среду на базе open-sourсe решения OpenStack
Cоздаем облачную среду на базе open-sourсe решения OpenStackCоздаем облачную среду на базе open-sourсe решения OpenStack
Cоздаем облачную среду на базе open-sourсe решения OpenStackSkillFactory
 
Обратная сторона облака
Обратная сторона облакаОбратная сторона облака
Обратная сторона облакаAnton Zhbankov
 
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 2014Alexey Bokov
 
All Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опытаAll Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опытаАльбина Минуллина
 
Четырехлетие OpenStack - Сложный возраст OpenStack
Четырехлетие OpenStack - Сложный возраст OpenStackЧетырехлетие OpenStack - Сложный возраст OpenStack
Четырехлетие OpenStack - Сложный возраст OpenStackOpenStackRussia
 
Демонстрация возможностей по автоматизации ЦОД
Демонстрация возможностей по автоматизации ЦОДДемонстрация возможностей по автоматизации ЦОД
Демонстрация возможностей по автоматизации ЦОДCisco Russia
 
Как выбрать сетевое решение для нового ЦОД или расширения существующего?
Как выбрать сетевое решение для нового ЦОД или расширения существующего?Как выбрать сетевое решение для нового ЦОД или расширения существующего?
Как выбрать сетевое решение для нового ЦОД или расширения существующего?Cisco Russia
 
Безопасность - это не только конфиденциальность
Безопасность - это не только конфиденциальностьБезопасность - это не только конфиденциальность
Безопасность - это не только конфиденциальностьAnton Zhbankov
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
Разработка high load системы на .NET Core
Разработка high load системы на .NET CoreРазработка high load системы на .NET Core
Разработка high load системы на .NET CoreAndrew Gubskiy
 
ScaleIO: AGENT КРОК 00Scale. Внедрение
ScaleIO: AGENT КРОК 00Scale. ВнедрениеScaleIO: AGENT КРОК 00Scale. Внедрение
ScaleIO: AGENT КРОК 00Scale. ВнедрениеКРОК
 
Современная инфраструктура хранения
Современная инфраструктура храненияСовременная инфраструктура хранения
Современная инфраструктура храненияАльбина Минуллина
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...it-people
 
Гиперконвергентные решения SimpliVity
Гиперконвергентные решения SimpliVityГиперконвергентные решения SimpliVity
Гиперконвергентные решения SimpliVityКРОК
 
Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?Cisco Russia
 
Оптимизация производительности: магия или методика
Оптимизация производительности: магия или методикаОптимизация производительности: магия или методика
Оптимизация производительности: магия или методикаКРОК
 

What's hot (20)

Решение TIONIX на базе Mirantis OpenStack
Решение TIONIX на базе Mirantis OpenStackРешение TIONIX на базе Mirantis OpenStack
Решение TIONIX на базе Mirantis OpenStack
 
Облачные технологии и виртуализация
Облачные технологии и виртуализацияОблачные технологии и виртуализация
Облачные технологии и виртуализация
 
Приватный клауд на базе OpenStack
Приватный клауд на базе OpenStackПриватный клауд на базе OpenStack
Приватный клауд на базе OpenStack
 
Cоздаем облачную среду на базе open-sourсe решения OpenStack
Cоздаем облачную среду на базе open-sourсe решения OpenStackCоздаем облачную среду на базе open-sourсe решения OpenStack
Cоздаем облачную среду на базе open-sourсe решения OpenStack
 
Обратная сторона облака
Обратная сторона облакаОбратная сторона облака
Обратная сторона облака
 
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
 
All Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опытаAll Flash системы хранения – примеры из реального опыта
All Flash системы хранения – примеры из реального опыта
 
Четырехлетие OpenStack - Сложный возраст OpenStack
Четырехлетие OpenStack - Сложный возраст OpenStackЧетырехлетие OpenStack - Сложный возраст OpenStack
Четырехлетие OpenStack - Сложный возраст OpenStack
 
Mirantis OpenStack
Mirantis OpenStackMirantis OpenStack
Mirantis OpenStack
 
Демонстрация возможностей по автоматизации ЦОД
Демонстрация возможностей по автоматизации ЦОДДемонстрация возможностей по автоматизации ЦОД
Демонстрация возможностей по автоматизации ЦОД
 
Как выбрать сетевое решение для нового ЦОД или расширения существующего?
Как выбрать сетевое решение для нового ЦОД или расширения существующего?Как выбрать сетевое решение для нового ЦОД или расширения существующего?
Как выбрать сетевое решение для нового ЦОД или расширения существующего?
 
Безопасность - это не только конфиденциальность
Безопасность - это не только конфиденциальностьБезопасность - это не только конфиденциальность
Безопасность - это не только конфиденциальность
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Разработка high load системы на .NET Core
Разработка high load системы на .NET CoreРазработка high load системы на .NET Core
Разработка high load системы на .NET Core
 
ScaleIO: AGENT КРОК 00Scale. Внедрение
ScaleIO: AGENT КРОК 00Scale. ВнедрениеScaleIO: AGENT КРОК 00Scale. Внедрение
ScaleIO: AGENT КРОК 00Scale. Внедрение
 
Современная инфраструктура хранения
Современная инфраструктура храненияСовременная инфраструктура хранения
Современная инфраструктура хранения
 
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
DUMP-2013 Serverside - Архитектура Битрикс24 в Amazon Web Services – изнутри ...
 
Гиперконвергентные решения SimpliVity
Гиперконвергентные решения SimpliVityГиперконвергентные решения SimpliVity
Гиперконвергентные решения SimpliVity
 
Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?Как запустить виртуализированный ЦОД за час?
Как запустить виртуализированный ЦОД за час?
 
Оптимизация производительности: магия или методика
Оптимизация производительности: магия или методикаОптимизация производительности: магия или методика
Оптимизация производительности: магия или методика
 

Similar to Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на примере Amazon (Александр Демидов, Александр Сербул)

Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Ontico
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Uptime Community
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Uptime community
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...solit
 
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?Clouds NN
 
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureAndrew Mayorov
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзорMicrosoft
 
Миграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоМиграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоNatalia Efimtseva
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Andrew Gusev
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - ПроизводительностьAlexander Demidov
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров 1С-Битрикс
 
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин ЮрийSolit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрийsolit
 
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
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018ITEM
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesArtur Baranok
 
Soft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPUSoft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPUEkaterina Shelest
 

Similar to Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на примере Amazon (Александр Демидов, Александр Сербул) (20)

Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
Проектируем облачный веб-сервис "по-взрослому" (Сергей Рыжиков)
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
Как жить в облаке почти без админов: мониторинг и эксплуатация сотен виртуаль...
 
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
Solit 2013, Разработка приложений в облаке на примере Amazon Web Services, Сл...
 
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
CloudsNN 2013 Демидов Александр. Как жить в облаке без админов?
 
Citrix on VMware
Citrix on VMwareCitrix on VMware
Citrix on VMware
 
Roman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows AzureRoman Zdebskiy - Windows Azure
Roman Zdebskiy - Windows Azure
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
 
Sql azure и все, все, все...
Sql azure и все, все, все...Sql azure и все, все, все...
Sql azure и все, все, все...
 
Миграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облакоМиграции информационной инфраструктуры бизнес-приложений в облако
Миграции информационной инфраструктуры бизнес-приложений в облако
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2Ukraine, Kharkiv, Java Club. Day 2
Ukraine, Kharkiv, Java Club. Day 2
 
1С-Битрикс - Производительность
1С-Битрикс - Производительность1С-Битрикс - Производительность
1С-Битрикс - Производительность
 
Презентация технологии веб-кластеров
Презентация технологии веб-кластеров  Презентация технологии веб-кластеров
Презентация технологии веб-кластеров
 
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин ЮрийSolit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
Solit 2014, Обзор Infocloud для разработчиков, Трухин Юрий
 
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 // ...
 
Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018Andrii Bereznikov ITEM 2018
Andrii Bereznikov ITEM 2018
 
Основные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure WebsitesОсновные аспекты управления веб-проектом в Microsoft Azure Websites
Основные аспекты управления веб-проектом в Microsoft Azure Websites
 
Soft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPUSoft layer IBM Cloud platform and GPU
Soft layer IBM Cloud platform and GPU
 

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...
 

Проектирование высоконагруженного масштабируемого веб-сервиса в облаке на примере Amazon (Александр Демидов, Александр Сербул)

  • 1. Проектирование высоконагруженного масштабируемого отказоустойчивого веб- сервиса в облаке на примере Amazon Александр Демидов, Александр Сербул «1С-Битрикс»
  • 2. Выбор платформы для разворачивания инфраструктуры Минусы размещения на собственном оборудовании: Необходимы вложения в инфраструктуру на старте проекта Сложность масштабирования Сложность администрирования (в случае размещения в территориально удаленных датацентрах) Сложность резервирования на уровне ДЦ Создание всех сопутствующих сервисов с нуля «Когда мы только начинали работу над стартапом (FriendFeed), нам нужно было решить, покупать собственные серверы или же выбрать одного из «облачных» хостинг- провайдеров – таких как Amazon (AWS). Мы выбрали первое – решили приобрести собственные серверы. Оглядываясь назад, я думаю, что это было большой ошибкой» Брет Тейлор, технический директор Facebook
  • 3. Почему Amazon Web Services? Приложения тоже имеют «нормальные формы» Многие этого не понимают Риск изобретения неудачного велосипеда Риск: «Зачем делать просто, если можно сложно?»  Используем опыт взрослых расширяемых архитектур
  • 4. Почему Amazon Web Services? Архитектор собирает костяк проекта «из «LEGO» Основные усилия тратим на нестандартный функционал
  • 6. Почему Amazon Web Services? Можно легко мигрировать машины и сервисы между датацентрами Спасает при авариях
  • 7. Amazon Elastic Compute Cloud EC2) и вертикальное масштабирование Практически моментальная доступность необходимого количества виртуальных машин (instances) нужной конфигурации (от 613 Мб до 68 Гб RAM, от 1 до до 33.5 ECU CPU) Множество готовых образов систем (различные дистрибутивы Linux, Microsoft Windows Server, OpenSolaris) Высокая доступность (99.95% - Amazon EC2 SLA) Возможность использования дисков различной конфигурации (Amazon Elastic Block Store (EBS)) Возможность размещения виртуальных машин в разных датацентрах (регионах) Безопасность: удобный файрвол для групп виртуальных машин
  • 8. Запуск новой машины Выбор образа (стандартные – Linux, Windows; собственные ранее созданные; community) Выбор типа машины Выбор AZ Public / private key Security group Другие опции (termination protection, набор дисков, shutdown behavior и т.д.)
  • 9. «Подводный камень» № 1 EC2 – практически тот же VPS Нет «волшебного ползунка», чтобы гибко задать конфигурацию – как на старте, так и в процессе работы Нет моментального вертикального масштабирования
  • 11. EC2 и IP ec2-23-23-231-56.compute-1.amazonaws.com 10.10.26.123 23.23.231.56 Только 1 внешний IP у каждой машины Разный резолвинг внутри и снаружи Внутренний и внешний IP не постоянны (кроме использования Elastic IP) При организации рассылок – не забывайте про IN PTR
  • 12. Elastic IP Elastic IP: 23.34.176.15 EC2 EC2
  • 13. #!/bin/sh NODE_INSTANCE_ID=$1 # http://aws.amazon.com/ec2/instance-types/ NODE_TARGET_TYPE='m2.2xlarge' NODE_ELASTIC_IP=$2 ec2-stop-instances $NODE_INSTANCE_ID while ec2-describe-instances $NODE_INSTANCE_ID | grep -q stopping do sleep 5 echo 'Waiting' done ec2-modify-instance-attribute --instance-type $NODE_TARGET_TYPE $NODE_INSTANCE_ID ec2-start-instances $NODE_INSTANCE_ID ec2-associate-address $NODE_ELASTIC_IP -i $NODE_INSTANCE_ID
  • 14. Облачные диски - EBS Elastic Block Store: 1GB – 1TB До 1000 IOPS/диск AFR (annual failure rate) ~0.1-0.5% (при регулярных снепшотах) IO: десятки MB/sec – серьезно уступают «железным» Хорошо помогает софтварный рейд (md) raid0 или raid0+1? Диски живут в одном «ДЦ», а их снепшоты между «ДЦ», на уровне региона
  • 15. Снэпшоты - EBS Делать снепшоты рейдов можно и нужно Нет инструментов очистки устаревших снепшотов и образов машин, их нужно писать Unix: ec2-consistent-snapshot или: fsfreeze –f mountpoint (Linux Ext3/4, ReiserFS, JFS, XFS) AWS SDK for PHP: AmazonEC2::create_snapshot ( $volume_id, $opt ) AmazonEC2::create_image ( $instance_id, $name, $opt ) fsfreeze –u mountpoint
  • 16. AMI – образы машин AMI – набор данных, описывающих параметры машины + загрузочный образ Делать снепшоты машин целиком – гораздо удобнее, чем по одному диску Машина переносится между «датацентрами» - целиком
  • 17. Auto Scaling Мониторинг (CloudWatch) Балансировщик (ELB) ДЦ1 ДЦ2 Группа автомасштабирования (AutoScaling) Region = группа связанных датацентров Образ машины (AMI)
  • 22. Elastic Load Balancing – особенности Level 7 (HTTP) балансировщик «пропускает» не все методы: например, не работают REPORT, SEARCH, MKCALENDAR (WebDav, CalDav и т.п.) Level 4 (TCP) не передает на бэкенд (EC2) real IP При нагрузочном тестировании нельзя давать нагрузку «ступенькой» - только постепенное плавное увеличение
  • 23. Amazon Simple Storage Service (S3) Если каждая веб-нода становится «расходным материалом», где хранить статический контент? Разные типы хранилищ (наличие Reduced Redundancy Storage – RRS) SDK: Java, .NET, PHP, Ruby, iOS, Android S3tools, s3fs, сторонние клиенты Доступность – 99.99% Надежность – 99.999999999% ACL Версионность
  • 24. Интеграция приложения с S3 API хранилища для «прозрачной» работы с файлами API для разработчиков (не используем стандартные функции для работы с файлами) Избегаем «диких» файлов «Прозрачность» для всех модулей системы Таблица с данными обо всех подключенных хранилищах Таблица со списком файлов, и указанием, где они хранятся (можно сразу хранить дополнительную информацию) Не используем file_size, getimagesize и т.п. – сохраняем все данные при аплоаде
  • 26. Изоляция данных пользователей в S3 Раньше - новый IAM пользователь, получаем AccessKey, SecretKey. Но есть лимит: макс. 15 000 (по умолчанию – 5 000) Используем Security Token Service (STS) – временные учетные записи Права внутри одной директории: PutObject GetObject DeleteObject
  • 27. Деплой и обновления системного ПО Как ставить Сервер Новый обновления на обновлений образ AMI нодах, не допустив рассинхрони- зации данных (веб и база)? Web 1 Elastic Load Web 2 Balancing Web N
  • 28. Как работают обновления ПО Как ставить обновления на нодах, не допустив рассинхронизации данных (веб и база) Каждое клиентское приложение работает с собственной базой. Все обновления ставятся на выделенный instance, куда не приходит нагрузка. Из этого инстанса делается новый образ AMI. Последовательно каждая машина помечается «плохой», при этом новые веб-ноды стартуют уже из нового образа. В веб-приложении существует механизм проверки соответствия версии ПО и базы. Если клиентский запрос приходит на ноду с новым ПО, а база еще старая, по первому хиту происходит обновление.
  • 29. База – RDS или не RDS? У Amazon есть сервис RDS (Relational Database Service). Можно использовать MySQL или Oracle. Стоит ли использовать? Недостаточно гибкая система (нет полноценного root в базе) Непрозрачно Риск долгого даунтайма Двойная стоимость машин при использовании Multi-AZ При этом – неэффективное использование ресурсов
  • 30. Конфигурация машин c базами MySQL Виртуальная машина (EC2) - m2.2xlarge: 34.2 GB of memory 13 EC2 Compute Units (4 virtual cores with 3.25 EC2 Compute Units each) 64-bit platform I/O Performance: High EBS-Optimized Available: No     Диск может оказаться «узким» местом…
  • 32. # cat /proc/partitions major minor #blocks name 202 16 880737792 xvdb 202 144 157286400 xvdj 202 128 157286400 xvdi 202 112 157286400 xvdh 202 96 157286400 xvdg 202 0 8388608 xvda 202 1 112423 xvda1 202 2 5253255 xvda2 202 3 3020220 xvda3 202 224 524288000 xvdo 202 208 157286400 xvdn 202 192 157286400 xvdm 202 176 157286400 xvdl 202 160 157286400 xvdk 9 0 629139456 md0
  • 33. # mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/xvd[g-j] # mkfs.ext4 /dev/md0 /etc/fstab /dev/md0 /mnt/raid10 ext4 defaults,noatime,nodiratime,data=writeback,barrier=0 0 0 # mount /mnt/raid10
  • 34. Software RAID – тесты sysbench Режим random read/write. При увеличении количества потоков единичный диск почти сразу достигает «потолка», производительность RAID растет.
  • 35. MySQL? Percona Server! Оптимизирован для работы с медленными дисками Быстрый рестарт базы (Fast Shut-Down, Buffer Pool Pre-Load) Множество счетчиков и расширенных отчетов XtraDB Storage Engine XtraBackup BLOB, TEXT в таблицах MEMORY (HEAP)
  • 36. MySQL? Percona Server! mysql> SELECT * FROM INFORMATION_SCHEMA.QUERY_RESPONSE_TIME; +----------------+-------+----------------+ | time | count | total | +----------------+-------+----------------+ | 0.000001 | 0 | 0.000000 | | 0.000010 | 2011 | 0.007438 | | 0.000100 | 12706 | 0.513395 | | 0.001000 | 4624 | 1.636106 | | 0.010000 | 2994 | 12.395174 | | 0.100000 | 200 | 6.225339 | | 1.000000 | 33 | 5.480764 | | 10.000000 | 1 | 2.374067 | | 100.000000 | 0 | 0.000000 | | 1000.000000 | 0 | 0.000000 | | 10000.000000 | 0 | 0.000000 | | 100000.000000 | 0 | 0.000000 | | 1000000.000000 | 0 | 0.000000 | | TOO LONG | 0 | TOO LONG | +----------------+-------+----------------+ 14 rows in set (0.00 sec)
  • 37. Используем master-master репликацию в MySQL Особенности настройки MySQL: auto_increment_increment auto_increment_offset Базы в разных датацентрах синхронны, при этом независимы друг от друга: потеря связности между датацентрами может составлять часы, данные синхронизируются после восстановления. Пользователь и все сотрудники этой компании работают в одном датацентре за счет управления балансировщиком.
  • 38. Вертикальное масштабирование базы Для вертикального масштабирования используем slave, потом переключаем его в master Мониторим состояние master через Веб-нода CloudWatch Балансировка SQL Есть slave – минимальной конфигурации – работающий в режиме только бэкапа Elastic IP При необходимости масштабирования меняем тип машины у slave (вертикальное масштабирование) Останавливаем master, делаем slave MySQL мастером MySQL slave Переключаем IP (Amazon Elastic IP) на master машину с новым мастером Веб-ноды не требуют CloudWatch переконфигурирования и продолжают работать без даунтайма
  • 39. Горизонтальное масштабирование базы Образ машины (AMI) Миллионы таблиц, десятки тысяч баз данных Мониторинг Балансировщики (ELB) (CloudWatch) ДЦ1 ДЦ2 AutoScaling Масштабирование PHP DB1 DB1 (Active) Вертикальный шардинг (Passive) Percona XtraDB Master- Master (Active/Passive) DB2 DB2 (Passive) (Active) DB3 DB3 (Active) (Passive)
  • 40. Бэкап MySQL Unix: ec2-consistent-snapshot или: “FLUSH TABLES WITH READ LOCK” Буферы MySQL fsfreeze –f mountpoint (Linux (InnoDB) в памяти Ext3/4, ReiserFS, JFS, XFS) AWS SDK for PHP: AmazonEC2::create_snapshot ( $volume_id, $opt ) AmazonEC2::create_image ( $instance_id, $name, $opt ) fsfreeze –u mountpoint “UNLOCK TABLES” Хранилище данных Диск (EBS) (на базе S3 = Simple Storage Service) Снепшоты. Данные MySQL Автоматически: (InnoDB) на диске консолидация бэкапов, сохранение только инкрементов
  • 41. Бэкап MySQL Рецепта «100% целостного» снепшота файлов MySQL похоже нет, нужно колдовать  Percona XtraBackup – инкрементальный бинарный бэкап Нужно немало времени на подготовку бинарного бэкапа к «чистому» быстрому восстановлению Логический бэкап снимаем со слейвов Случались тотальные разрушения raid10 при аварии в амазоне – бинарный бэкап (или снепшот машины) + бинлоги
  • 42. Организация системы мониторинга Лучше – стандартные решения (Nagios, Zabbix и т.п.), а не самописные. Дежурная смена и/или мгновенные уведомления. Мониторить – всё. Но – аккуратно. Тысячи уведомлений будут бесполезны. Автоматизация типовых реакций. Мониторить систему мониторинга. В идеальном мире – распределенная система мониторинга. «Мониторинг безопасности» – изменения файлов и т.п.
  • 43. Мониторинг операционной системы Место на дисках Очередь выполнения Размер и использование swap И т.д.
  • 45. Автоматика – структура теста Ядро Nagios Тест Тест Тест Тест Тест Обработчик события Тест nagios Обработчик события Прослойка Обработчик события вспомогательного кода Pinba (PHP, bash) AWS SDK for PHP CloudWatch - автомасштабирование Утилиты AWS для консоли Обработчик события API Амазона
  • 46. Автоматика – обработчик Ядро Nagios Обработчик события Тест Тест Тест Тест Прослойка вспомогательного кода (PHP, bash) Обработчик события Утилиты AWS AWS SDK for PHP Обработчик события для консоли Обработчик события API Амазона CloudWatch - автомасштабирование Обработчик события
  • 47. Автоматика В CloudWatch недостаточно возможностей, но используем его максимально AWS SDK for PHP и вообще работа с API амазона не всегда прямолинейна – нужна прослойка Для основного мониторинга и активной обратной связи используем Nagios и его обработчики событий Для аналитики в основном используем Munin, часть данных берем из CloudWatch Присматриваемся к gearman, SQS
  • 49. Аналитика – со стороны пользователя Мало знать «среднюю температуру по больнице» и мониторить только главную страницу сайта Гистограммы распределения времени хитов, памяти, кодам ответа и т.п. – из логов (awk-скрипт), pinba или других инструментов
  • 50. Пользовательская аналитика – в графиках Гистограмма времени обработки запросов (Percona)
  • 51. Пользовательская аналитика – в графиках Число ошибок в хитах за 15 минут - меньше L (из pinba) Макс. время хита (тэга) – меньше M сек. Макс. использование памяти хитом – меньше N МБ
  • 53. Масштабируемость под высокие нагрузки Используем связку Elastic Load Balancing + CloudWatch + Auto Scaling Очень высокая посещаемость Elastic Load Balancing Web 1 Web 2 … Web N CloudWatch + Auto Scaling
  • 54. Отказоустойчивость узлов Elastic Load Balancing Web 1 Web 2 … Web N S3 Web 1 Web 2 … Web N Датацентр 1 в MySQL MySQL Датацентр 2 в регионе US East master master регионе US East master-master (Virginia) репликация (Virginia) Мониторинг и Мониторинг и масштабирование – масштабирование – CloudWatch + CloudWatch + AutoScaling AutoScaling management, monitoring, MySQL backup
  • 55. Отказоустойчивость узлов Elastic Load Balancing Web 1 Web 2 … Web N S3 Web 1 Web 2 … Web N Датацентр 1 в MySQL MySQL Датацентр 2 в регионе US East master master регионе US East master-master (Virginia) репликация (Virginia) Мониторинг и Мониторинг и масштабирование – масштабирование – CloudWatch + CloudWatch + AutoScaling AutoScaling management, monitoring, MySQL backup
  • 56. Отказоустойчивость ДЦ Elastic Load Balancing Web 1 Web 2 … Web N S3 Web 1 Web 2 … Web N Датацентр 1 в MySQL MySQL Датацентр 2 в регионе US East master master регионе US East master-master (Virginia) репликация (Virginia) Мониторинг и Мониторинг и масштабирование – масштабирование – CloudWatch + CloudWatch + AutoScaling AutoScaling management, monitoring, MySQL backup
  • 57. Надежность «облака» Само по себе «облако» не надежнее традиционного хостинга и собственного оборудования. «Облако» дает возможность организовать надежную инфраструктуру.
  • 58. Спасибо за внимание! Вопросы? Александр Сербул Александр Демидов serbul@1c-bitrix.ru demidov@1c-bitrix.ru @AlexSerbul @demidov