SlideShare uma empresa Scribd logo
1 de 35
Вертикальное и
горизонтальное
масштабирование
Java приложений
Vertical&Horisontal scaling
in Java
Дмитрий Лазаренко
Более 8 лет опыта разработки
на языке Java
Руководитель интеграционного
направления Jelastic, основное
направление деятельности –
предоставление облачного
хостинга для новых и уже
существующих Java и PHP
приложений
2
PaaS
• Глобальная автоматизация
• Простота управления
приложениями
• Масштабирование приложения
в зависимости от нагрузки
• Целостность и безопасность
данных приложения
PaaS значительно снижает
затраты времени и денег на
обслуживание
Jelastic– платформа облачного
хостинга следующего
поколения, позволяющая
запускать и масштабировать
ЛЮБЫЕ Java & PHP приложения
без необходимости
модифицировать их исходный код
Разработчики любят создавать приложения и ненавидят обслуживать
сервера
10:15 Установка ОС
11:20 Конфигурирование системы
12:05 Перерыв на кофе
13:05 Настройка безопасности
14:15 Конфигурация web сервера
15:40 Конфигурация базы данных
16:20 Пару бутербродов
16:50 Конфигурация брандмауэра
17:20 Разворачивание приложения
17:45 Звонок жене и извинения о позднем возращении
домой
18:00 Определение зависимостей библиотек
20:30 Обновление пакетов
22:15 Исправление неисправных зависимостей
23:50 Пару банок Red Bull
1:30 Запуск!!!
~ 16 часов ~ 2 дня
Одна история из жизни разработчика
Пример из жизни
2:05 ночи Окончание рабочего дня
10:15 Выбрать тип и размер сервера
10:17 Выбрать доменное имя
10:20 Загрузить приложение
10:25 Запустить!!!
~ 10 минут
Та же история с использованием Jelastic
• Легко
• Быстро
• Удобно
• Экономия времени и денег
10 минут vs 2 дня = $$$$$$
Проблемы высоконагруженных приложений
• Высокое время отклика
• Низкая пропускная способность
• Высокая ресурсоемкость
• Высоковероятный выход из строя узлов
системы
• Часто производительность упирается в
железо
9
Масштабирование
Возможность системы увеличивать свою
производительность при увеличении
количества выделяемых ей ресурсов
10
Особенности вертикального
масштабирования в Java
• Физическое потребление памяти JVM может
только увеличиваться
• Освободившаяся после работы GC память не
отдается обратно в операционную систему
• Разные GC по разному работают с большим
объемом памяти
• Большие паузы на больших объемах Heap
• Возможны утечки памяти
11
Чего хочется добиться
Чтобы java-приложение могло как
забирать память, так и отдавать ее
обратно в ОС
12
AZUL ZING
• Низкие задержки GC
• Возможность масштабирования одной
JVM до 500 GB Heap
• Поддержка вертикального
масштабирования вверх и вниз
• Только коммерческая лицензия
13
Вертикальное масштабирование в Jelastic
• Результат 6 месяцев исследований
• Обеспечивается автоматическое вертикального
масштабирования вверх и вниз для Java
приложений
• Работает в G1 и Serial GC
• Абсолютно прозрачно и выгодно для
пользователя
14
Вертикальное масштабирование в Jelastic
15
Вертикальное масштабирование в Jelastic
16
Проблемы вертикального
масштабирования в облаке
• Гипервизор резервирует память, хотя
приложение может ее и не использовать
• Деление процессорного времени (KVM, XEN)
• Быстрый рост потребления ресурсов одним из
приложений
• Достижение предела вертикального
масштабирования–performance упирается в
возможности железа
17
Контейнеры
• Parallels Virtuozzo Containers – виртуализация на уровне
ОС
• Самые низкие накладные расходы на виртуализацию
• Возможность вертикального масштабирования, Memory
Overcelling
• Пользователь не платит за потребление памяти и
процессора ядра ВМ
• Гибкие настройки потребления ресурсов
• Оптимальная утилизация дискового пространства
• Живая миграция
18
Умная живая миграция
Горизонтальное масштабирование
Рост производительности приложения при
добавлении ещё одного узла.
• Дает возможность обойти пределы
вертикального масштабирования
• Увеличивает скорость работы программы за счет
распределения по разным физическим
машинам
20
Проблемы горизонтального
масштабирования
• Единые точки отказа (SPoF )
• Балансировка нагрузки(LB)
• Обеспечение высокой доступности (HA)
• Синхронизация кэша
• Общий доступ к файловым данным
• Межпроцессная координация
• Усложнение логики приложения
21
Единые точки отказа
22
Балансировка нагрузки
Виды
• Http балансировка
• Tcp балансировка
Алгоритмы
• Round-Robin
• Sticky balancing
Реализация
Hardware:
Software: Apache, Nginx, HAProxy
23
HA for Http level
• Реплицируются хотя бы на 1 сервер все http-
сессии (вместе с атрибутами)
• Реализация часто использует tcp multicasting
• Много паразитного траффика и перерасход
памяти
• Можно использовать СУБД либо сервер-
кэширования
• Некоторые J2EE сервера используют умную
репликацию
24
Репликация http-сессий в GlassFish
25
Репликация http-сессий в Jelastic
26
Межпроцессная координация
Проблема:
Координация процессов в разных JVM
Решение:
– ZooKeeper
– Terracotta
– Hazelcast
– JGroups
27
Кэширование и горизонтальное
масштабирование
Проблема:
Возможна рассинхронизация локального
кэша
Решение: Распределенное кэширование
– Oracle Coherence
– IBM Extreme Scale
– JBoss Infinispan
– Terracotta
– Hazelcast
– Memcached
28
Map Reduce
• Hadoop
• GridGain
• Hadoop MapReduce – медленно
• GridGain + Hadoop HDFS – быстро
29
Общий доступ к файлам
• NFS
• GlusterFS
• Ceph
• Amazon S3
• Hadoop HDFS
• Openstack Swift
30
Сложности масштабирования вручную
• Много сетевых настроек
• Много рутинных операций при добавлении
нового узла
• Постоянная забота о существовании единых
точек отказа
• Отсутствие средств централизованного
мониторинга
• Высокая вероятность что-нибудь забыть
31
Что дает Jelastic для горизонтального
масштабирования
• Хитрые алгоритмы:
– Алгоритм равномерного размазывания контейнеров
одного окружения
– Алгоритм распределения новых контейнеров по
физическим машинам с учетом комплексного
показателя загрузки
• Обеспечение отсутствия SPoF на слое
приложения
• Стараемся избавиться от SPoF на слое данных и
балансировке
32
Упрощение масштабирования
приложений в Jelastic
• Быстрое и гибкое создание кластера
произвольного размера
• Адаптивное горизонтальное и
вертикальное
масштабирование, поддержка HA для
GlassFish, Tomcat, Jetty
• Удобные средства мониторинга
33
Масштабирование в Jelastic -
Ближайшие планы
• Terracotta
• High Availability out of box support for
MySql, PostgreSQL, MongoDB
• Distributed File Storage
34
С Jelastic масштабировать
приложения проще
Дмитрий Лазаренко
dl@jelastic.com
www.jelastic.com

Mais conteúdo relacionado

Mais procurados

Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012
Yuriy Ryashko
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Ontico
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
Ontico
 
Практики разработки программного обеспечения в крупных компаниях на примере IBM
Практики разработки программного обеспечения в крупных компаниях на примере IBMПрактики разработки программного обеспечения в крупных компаниях на примере IBM
Практики разработки программного обеспечения в крупных компаниях на примере IBM
Alexander Klimov
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 

Mais procurados (20)

Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012
 
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
2021.09.04 PHP FWDays. Our experience of transferring Laravel microservices t...
 
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
Сравнение решений по балансировке высоконагруженных систем / Евгений Пивень (...
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
Сегментируем 600 млн. пользователей в режиме реального времени каждый день. H...
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Платформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QAПлатформа для поставки счастья в команду QA
Платформа для поставки счастья в команду QA
 
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
 
Мониторинг проектов: сравнительный анализ существующих решений
Мониторинг проектов:  сравнительный анализ существующих решенийМониторинг проектов:  сравнительный анализ существующих решений
Мониторинг проектов: сравнительный анализ существующих решений
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
В поисках идеальной сети, или зачем нужна еще одна SDN / Андрей Королев (Ионика)
 
Практики разработки программного обеспечения в крупных компаниях на примере IBM
Практики разработки программного обеспечения в крупных компаниях на примере IBMПрактики разработки программного обеспечения в крупных компаниях на примере IBM
Практики разработки программного обеспечения в крупных компаниях на примере IBM
 
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)Путь DevOps в «Parallels» / Константин Назаров (Parallels)
Путь DevOps в «Parallels» / Константин Назаров (Parallels)
 
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
"Redux: the best for isomorphic apps", Денис Измайлов, MoscowJS 25
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 

Semelhante a Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java

Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012
Yuriy Ryashko
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Ontico
 
С. Перроте (Q Logic) Ускорение работы приложений
С. Перроте (Q Logic) Ускорение работы приложенийС. Перроте (Q Logic) Ускорение работы приложений
С. Перроте (Q Logic) Ускорение работы приложений
Expolink
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Yandex
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Yandex
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
Alex Chistyakov
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
Ontico
 

Semelhante a Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java (20)

Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012Java cloud platforms. jee conf 2012
Java cloud platforms. jee conf 2012
 
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft AzureJelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
Jelastic PaaS for DevOps: Hybrid Cloud based on Microsoft Azure
 
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Балансировка нагрузки веб-серверов
Балансировка нагрузки веб-серверовБалансировка нагрузки веб-серверов
Балансировка нагрузки веб-серверов
 
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
Как превратить Openstack Swift в хранилище для высоких нагрузок разных типов,...
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
 
С. Перроте (Q Logic) Ускорение работы приложений
С. Перроте (Q Logic) Ускорение работы приложенийС. Перроте (Q Logic) Ускорение работы приложений
С. Перроте (Q Logic) Ускорение работы приложений
 
Drupal в облаке - Владимир Юнев
Drupal в облаке - Владимир ЮневDrupal в облаке - Владимир Юнев
Drupal в облаке - Владимир Юнев
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
Дмитрий Куликовский, Алексей Лавренюк - Построение кластеров, нагрузочное тес...
 
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
Дмитрий Куликовский - Построение кластеров, нагрузочное тестирование, capacit...
 
Оверсан-Скалакси
Оверсан-СкалаксиОверсан-Скалакси
Оверсан-Скалакси
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
Александр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.comАлександр Соловьёв, Griddynamics.com
Александр Соловьёв, Griddynamics.com
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
 

Не по дням, а по часам! Вертикальное и горизонтальное масштабирование приложений на Java

  • 2. Дмитрий Лазаренко Более 8 лет опыта разработки на языке Java Руководитель интеграционного направления Jelastic, основное направление деятельности – предоставление облачного хостинга для новых и уже существующих Java и PHP приложений 2
  • 3. PaaS • Глобальная автоматизация • Простота управления приложениями • Масштабирование приложения в зависимости от нагрузки • Целостность и безопасность данных приложения PaaS значительно снижает затраты времени и денег на обслуживание
  • 4. Jelastic– платформа облачного хостинга следующего поколения, позволяющая запускать и масштабировать ЛЮБЫЕ Java & PHP приложения без необходимости модифицировать их исходный код
  • 5. Разработчики любят создавать приложения и ненавидят обслуживать сервера 10:15 Установка ОС 11:20 Конфигурирование системы 12:05 Перерыв на кофе 13:05 Настройка безопасности 14:15 Конфигурация web сервера 15:40 Конфигурация базы данных 16:20 Пару бутербродов 16:50 Конфигурация брандмауэра 17:20 Разворачивание приложения 17:45 Звонок жене и извинения о позднем возращении домой 18:00 Определение зависимостей библиотек 20:30 Обновление пакетов 22:15 Исправление неисправных зависимостей 23:50 Пару банок Red Bull 1:30 Запуск!!! ~ 16 часов ~ 2 дня Одна история из жизни разработчика Пример из жизни 2:05 ночи Окончание рабочего дня
  • 6. 10:15 Выбрать тип и размер сервера 10:17 Выбрать доменное имя 10:20 Загрузить приложение 10:25 Запустить!!! ~ 10 минут Та же история с использованием Jelastic • Легко • Быстро • Удобно • Экономия времени и денег 10 минут vs 2 дня = $$$$$$
  • 7.
  • 8.
  • 9. Проблемы высоконагруженных приложений • Высокое время отклика • Низкая пропускная способность • Высокая ресурсоемкость • Высоковероятный выход из строя узлов системы • Часто производительность упирается в железо 9
  • 10. Масштабирование Возможность системы увеличивать свою производительность при увеличении количества выделяемых ей ресурсов 10
  • 11. Особенности вертикального масштабирования в Java • Физическое потребление памяти JVM может только увеличиваться • Освободившаяся после работы GC память не отдается обратно в операционную систему • Разные GC по разному работают с большим объемом памяти • Большие паузы на больших объемах Heap • Возможны утечки памяти 11
  • 12. Чего хочется добиться Чтобы java-приложение могло как забирать память, так и отдавать ее обратно в ОС 12
  • 13. AZUL ZING • Низкие задержки GC • Возможность масштабирования одной JVM до 500 GB Heap • Поддержка вертикального масштабирования вверх и вниз • Только коммерческая лицензия 13
  • 14. Вертикальное масштабирование в Jelastic • Результат 6 месяцев исследований • Обеспечивается автоматическое вертикального масштабирования вверх и вниз для Java приложений • Работает в G1 и Serial GC • Абсолютно прозрачно и выгодно для пользователя 14
  • 17. Проблемы вертикального масштабирования в облаке • Гипервизор резервирует память, хотя приложение может ее и не использовать • Деление процессорного времени (KVM, XEN) • Быстрый рост потребления ресурсов одним из приложений • Достижение предела вертикального масштабирования–performance упирается в возможности железа 17
  • 18. Контейнеры • Parallels Virtuozzo Containers – виртуализация на уровне ОС • Самые низкие накладные расходы на виртуализацию • Возможность вертикального масштабирования, Memory Overcelling • Пользователь не платит за потребление памяти и процессора ядра ВМ • Гибкие настройки потребления ресурсов • Оптимальная утилизация дискового пространства • Живая миграция 18
  • 20. Горизонтальное масштабирование Рост производительности приложения при добавлении ещё одного узла. • Дает возможность обойти пределы вертикального масштабирования • Увеличивает скорость работы программы за счет распределения по разным физическим машинам 20
  • 21. Проблемы горизонтального масштабирования • Единые точки отказа (SPoF ) • Балансировка нагрузки(LB) • Обеспечение высокой доступности (HA) • Синхронизация кэша • Общий доступ к файловым данным • Межпроцессная координация • Усложнение логики приложения 21
  • 23. Балансировка нагрузки Виды • Http балансировка • Tcp балансировка Алгоритмы • Round-Robin • Sticky balancing Реализация Hardware: Software: Apache, Nginx, HAProxy 23
  • 24. HA for Http level • Реплицируются хотя бы на 1 сервер все http- сессии (вместе с атрибутами) • Реализация часто использует tcp multicasting • Много паразитного траффика и перерасход памяти • Можно использовать СУБД либо сервер- кэширования • Некоторые J2EE сервера используют умную репликацию 24
  • 27. Межпроцессная координация Проблема: Координация процессов в разных JVM Решение: – ZooKeeper – Terracotta – Hazelcast – JGroups 27
  • 28. Кэширование и горизонтальное масштабирование Проблема: Возможна рассинхронизация локального кэша Решение: Распределенное кэширование – Oracle Coherence – IBM Extreme Scale – JBoss Infinispan – Terracotta – Hazelcast – Memcached 28
  • 29. Map Reduce • Hadoop • GridGain • Hadoop MapReduce – медленно • GridGain + Hadoop HDFS – быстро 29
  • 30. Общий доступ к файлам • NFS • GlusterFS • Ceph • Amazon S3 • Hadoop HDFS • Openstack Swift 30
  • 31. Сложности масштабирования вручную • Много сетевых настроек • Много рутинных операций при добавлении нового узла • Постоянная забота о существовании единых точек отказа • Отсутствие средств централизованного мониторинга • Высокая вероятность что-нибудь забыть 31
  • 32. Что дает Jelastic для горизонтального масштабирования • Хитрые алгоритмы: – Алгоритм равномерного размазывания контейнеров одного окружения – Алгоритм распределения новых контейнеров по физическим машинам с учетом комплексного показателя загрузки • Обеспечение отсутствия SPoF на слое приложения • Стараемся избавиться от SPoF на слое данных и балансировке 32
  • 33. Упрощение масштабирования приложений в Jelastic • Быстрое и гибкое создание кластера произвольного размера • Адаптивное горизонтальное и вертикальное масштабирование, поддержка HA для GlassFish, Tomcat, Jetty • Удобные средства мониторинга 33
  • 34. Масштабирование в Jelastic - Ближайшие планы • Terracotta • High Availability out of box support for MySql, PostgreSQL, MongoDB • Distributed File Storage 34
  • 35. С Jelastic масштабировать приложения проще Дмитрий Лазаренко dl@jelastic.com www.jelastic.com