Secr презентация дружинина

Post on 01-Nov-2014

257 views 2 download

Tags:

description

 

Transcript of Secr презентация дружинина

1 © L

uxof

t Tra

inin

g 20

13

Mikhail Druzhinin, SECR, 2013

Использование платформы Cloudify PaaS для ускорения

разработки приложений

2 © L

uxof

t Tra

inin

g 20

13

Информация о спикере

Дружинин Михаил

Architect, Head of Cloud CoE

Контакты: E-mail: mdruzhinin@luxoft.com

3 © L

uxof

t Tra

inin

g 20

13

О чём пойдёт речь?

Жизнь разработчика

Что такое PaaS?

Какие проблемы решает PaaS?

Архитектура Cloudify PaaS

Как начать?

Архитектурные особенности приложения под PaaS

Плюсы и минусы

4 © L

uxof

t Tra

inin

g 20

13

Жизнь разработчика

Сделал приложение (war)

Собрал приложение

Запустил у себя – всё отлично

Запустил в тестовом окружении – отдал в тестирование

5 © L

uxof

t Tra

inin

g 20

13

Что такое PaaS?

Platform-as-a-Service

Предоставление вычислительных средств и «программного стека» как сервиса Сервера приложений / среды

выполнения (middleware)

Специализированные вычисления

База данных и системы хранения

6 © L

uxof

t Tra

inin

g 20

13

Чем PaaS не является?

PaaS это не «облако» в традиционном его понимании Оно предоставляет уже готовые

среды выполнения

PaaS это не application Оно не несёт в себе логики

приложения

7 © L

uxof

t Tra

inin

g 20

13

Плюсы PaaS

Скорость: разработчики получают необходимые ресурсы по запросу

Стоимость: не тратим деньги на менеджмент software и hardware

Масштабируемость

8 © L

uxof

t Tra

inin

g 20

13

Чего стоит ожидать от PaaS

Поддержка различных языков, фреймворков и сред выполнения

Поддержка различных инфраструктур для развёртывания

Расширяемость

Автомасштабируемость

No vendor lock-in

9 © L

uxof

t Tra

inin

g 20

13

Какие проблемы решает PaaS?

Автоматизированное развёртывание

Мониторинг параметров системы

Автоматическое масштабирование

Обеспечение восстановления после сбоев

Одинаковое развёртывание тестовых и боевых окружений

10 © L

uxof

t Tra

inin

g 20

13

Какие PaaS бывают?

Public / BlackBox

Private

11 © L

uxof

t Tra

inin

g 20

13

Cloudify PaaS

Архитектура Cloudify

Как оно работает

С чего начать?

Рецепты развёртывания

Интеграция с chef

12 © L

uxof

t Tra

inin

g 20

13

Архитектура Cloudify PaaS

Рецепты развёртывания

Управляющий сервер

«Драйверы» облачных приложений

13 © L

uxof

t Tra

inin

g 20

13

Архитектура Cloudify PaaS

14 © L

uxof

t Tra

inin

g 20

13

Как оно работает

Загрузка рецептов

Запуск управляющей машины

Создание виртуальных машин

Установка приложения

Мониторинг и масштабирование

15 © L

uxof

t Tra

inin

g 20

13

Как оно работает - запуск

16 © L

uxof

t Tra

inin

g 20

13

Как оно работает - запуск

17 © L

uxof

t Tra

inin

g 20

13

Как оно работает - мониторинг

18 © L

uxof

t Tra

inin

g 20

13

Как начать?

Запуск «облака» >bootstrap-localcloud

Инсталяция приложения >install-application petclinic

19 © L

uxof

t Tra

inin

g 20

13

Как начать на Amazon WS?

Запуск «облака» >bootstrap-cloud ec2

Инсталяция приложения >install-application petclinic

20 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания

Структура рецепта приложения

Структура рецепта сервиса

21 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания

22 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания - приложение

application {  name="petclinic"  service {     name = "mysql"   }   service {     name = "tomcat"     dependsOn = ["mysql"]   } 

23 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания - сервис

service {  name "mysql"  icon "mysql.jpg"  type "DATABASE"

  lifecycle{     install "mysql_install.groovy"     start "mysql_start.groovy"     ...  }

}

24 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания - масштабирование

scalingRule {   serviceStatistics {     metric "Requests per second"     movingTimeRangeInSeconds 20   } 

  highThreshold {     value 100     instancesIncrease 1   } 

}

25 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания - мониторинг

monitors { def mBean = "Catalina:type=ThreadPool,name= http bio‐ ‐${currHttpPort}"

def metrics = [ "Current Http Threads Busy": [$mBean, "currentThreadsBusy"],

"Current Http Threads Count": [$mBean, "currentThreadsCount"], ]

return getJmxMetrics("127.0.0.1",currJmxPort,metrics)}

26 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания – динамическая конфигурация

serviceContext.attributes .thisInstance["port"] = config.port

dbServiceInstances = serviceContext .attributes[“db”].instances

27 © L

uxof

t Tra

inin

g 20

13

Рецепты развёртывания – динамическая конфигурация

customCommands ([ "addNode" : "apacheLB_addNode.groovy", "removeNode" : "apacheLB_removeNode", "load" : "apacheLB load.groovy"‐])

28 © L

uxof

t Tra

inin

g 20

13

Интеграция с Chef

29 © L

uxof

t Tra

inin

g 20

13

Архитектурные особенности приложения

Автоматическое обнаружение сервисов

Любой узел может упасть

30 © L

uxof

t Tra

inin

g 20

13

Плюсы

Очень быстрое развёртывание

Мониторинг и автомасштабирование из коробки

Не требует изменения приложения

Легкая доработка рецептов и лёгкое создание сложных сценариев развёртывания

Возможность работы с различными IaaS / BYON

31 © L

uxof

t Tra

inin

g 20

13

И минусы

Мало «родных» рецептов (решается интеграцией с chef)

Требует отдельную VM для управления

Придётся самому позаботится о месте хранения артефактов для развёртывания

32 © L

uxof

t Tra

inin

g 20

13 ?

Благодарю за внимание!

Вопросы?