Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Влияние развития облачных
             вычислений на разработку
            программного обеспечения


                                                                                   Александр Климов, @alex_klimov
                                                                                     Игорь Сухарев, @igorsukharev




All registered trademarks or trademarks are property of their respective owners.                                1
Интернет и облачные вычисления



“Because the Internet is primarily a
software artifact, there seems to be no
end to its possibilities”


                                  Vint Cerf


                                              2
Шум вокруг облачных вычислений




                                 3
Технологические тренды, формирующие
экосистему облачных платформ

• Широкополосный интернет


• Распределенные вычисления


• Виртуализация


• Прогресс hardware-технологий и центров обработки данных


• Мобильные технологии




                                                            4
Почему облачные вычисления?

• Скорость разработки


• Снижение затрат на проектирование и поддержку собственной
  технологической инфраструктуры для разработки ПО


• Географически распределенные системы




                                                              5
Городские легенды

• Облачные вычисления способны решить все проблемы


• Облачные вычисления снижают TCO


• Облачные вычисления создают нехватку рабочих мест


• Облачные вычисления и виртуализация - это одно и то же


• Облачные вычисления делают данные “прозрачно глобализированными”




                                                                     6
Эволюция разработки ПО в облаке


• Инструментарий (development environment)

• Платформа

• Бизнес/Доставка




                                             7
Облако: инструментарий/спектральный анализ

• Системы управления версиями (github, Bitbucket, bazaar, SourceForge,
Google code, etc.)

• Управление проектами (BaseCamp, Trello, asana, etc. )

• IDE (Cloud9, Exo Cloud, etc.)

• Интеграция различных провайдеров облачных инструментов
разработки в гетерогенные гибридные облачные системы/системы для
организации жизненного цикла ПО (например, Cloud9+github)

• Мультиплатформенность и мобильность рабочего места (миграция
тяжелых систем и клиентов для разработки в облако и мобильный доступ
к ним)



                                                                         8
Облако: инструментарий/субкультура




                                     9
Облако: платформа для разработчика/
основные характеристики


• Вычисления (compute)

• Сеть (networking)

• Системы хранения данных (storage)




                                      10
Облако: платформа для разработчика/
качественные характеристики


• Отказоустойчивость (designed for failure)

• Масштабируемость (scalability)

• Эластичность




                                              11
Облако: платформа для разработчика/
архитектура

• Миграция legacy систем в облако


• Профилирование архитектуры приложения под облако


• Характерные, доминирущие дизайн паттерны: компонентизация,
  separation of concerns, loosely-connected компоненты


• Декомпозиция облачного приложения в терминах сервисов провайдера
  облачных услугах (compute, service, load-balancing, dns, db и тд)


• Облачные API - “клей” между различными компонентами архитектуры


• Кластеризация архитектуры по зонам доступности провайдера
  облачных услуг
                                                                      12
Облако: платформа для разработчика/
революция или эволюция?

• Растущее доминирование нового вида разработчиков - “Born To Be
  WildOn The Web”


• Фокус на agile методологиях разработки ПО


• Тенденции упрощения среды (runtime, настройка окружения разработки
  и тд) компенсируются возрастающей сложностью распределенной
  архитектуры облачного приложения


• Фундаментальные архитектурные принципы - SOA, REST, MVC, Multi-
  tenancy


 Облачные архитектуры - эволюционная модель развития
 распределенных систем в Интернете/Интранете, базирующаяся на
 известных принципах проектирования и дизайна ИТ систем
                                                                       13
Облако: платформа для разработчика/
архитектура/паттерны

• Oxymoron - design for failure для отказоустойчивости


• Кластеризация с использованием зон доступности (availability zones)


• Автоматизация цикла разработки и деплоймента


• Кэширование везде, где это возможно


• Безопасность - интегральная часть проектирования каждой части
  архитектуры


• Глобальная распределеность


• Перманентная оптимизация финансовых затрат на облако
                                                                        14
Облако: платформа для разработчика/
открытые облака/мотивация

    Причины для миграции на открытые облака

                      Гибкость

      Отсутствие vendor lock-in

   Экономические предпосылки

     Открытые стандарты и API

               Портируемость

               Другие причины

                                  0   15   30       45      60

                                                (данные Zenoss, “The State Of
                                                  Open Source Cloud” , 2012)
                                                                                15
Облако: бизнес-платформа


• Магазины приложений (Apple App Store, Google Play, Windows Store,
Amazon AppStore etc.)

• SaaS (facebook, force.com, Google Apps Marketplace, etc.)

• CDN (AWS CloudFront, Akamai SOLA, etc.)




                                                                      16
Варианты использования облачных вычислений

“No size fits all”
                                 Unknown




                                           17
Облако: IaaS/аттрибуты


• Вычисления (different capacity, load balancing)

• Хранилище

• БД

• Сеть (VPN, dedicated con with premise)




                                                   18
Облако: IaaS/анализ

Преимущества:

• Полный контроль

• Близка к традиционным разработке и деплойменту

• Минимальный vendor lock-in*


Недостатки:

• Минимум функциональности “из коробки”

• Временные затраты и администрирование


                                                   19
Облако: IaaS/платформы


• Публичные (AWS/EC2, Rackspace Cloud, Google Compute Engine,
Windows Azure Virtual Machines, Joyent, SoftLayer, IBM SCP etc.)

• Частные (openstack, nebula, Eucalyptus)




                                                                   20
Облако: IaaS/платформа для разработчика/
открытые облака

    OpenStack    CloudStack    Eucalyptus         Other




                  22 %



                9 %           51 %



                      18 %



                                (данные Zenoss, “The State Of
                                  Open Source Cloud” , 2012)
                                                                21
Облако: PaaS/аттрибуты


• Языки программирования

• БД

• Веб сервер/сервер приложений




                                 22
Облако: PaaS/языки программирования

                         Языки программирования, % (данные Engine Yard, Май 2012)

60


45


30


15


0
     Javascript   Java     Ruby     PHP       C#       C++     Python     Perl



                                                                                 23
Облако: PaaS/анализ

Преимущества:

• Горизонтальная масштабируемость почти из коробки

• Отказоустойчивость для экземляров приложений

• Экономия времени разработки


Недостатки:

• Меньшая степень контроля

• Наличие vendor lock-in


                                                     24
Облако: PaaS/платформы


• Публичные (AWS/Elastic Beanstalk, heroku, Google App Engine, Windows
Azure Compute, Engine Yard, AppFrog, CloudBees, Jelastic, etc.)

• Частные (CloudFoundry, RedHat OpenShift, etc.)




                                                                         25
Облако: SaaS/аттрибуты

• Максимальная абстракция от программного стека


• Multi-tenancy важный параметр архитектуры


• Высокая скорость выпуска новых версий ПО, которая происходит
  прозрачно для пользователя


• Композиция сервисов - легкость и удобство интеграции с другими
  сервисами (например, для разработки так называемых mashups)




                                                                   26
Облако: SaaS/сценарии

• Распространение ПО

• Обработка платежей

• HR системы

• Социально-ориентированные системы

• Collaboration системы и и инструменты project management

• ERP

• CRM

• Игры

                                                             27
Облако: SaaS/анализ
Преимущества:

• Скорость появления новых функциональных возможностей и
прозрачность (для пользователя) их введения

• Приём платежей/Защита от мошеннических операций

• Защита от пиковых нагрузок (“the slashdot effect” или “black Friday
effect”)


Недостатки:

• Меньшая степень контроля

• Зависимость от политики и правил поставщика SaaS

• Дата выпуска ПО в магазине может варьироваться                       28
Облако: SaaS/платформы

• Force.com


• Facebook


• Google Apps




                         29
Облако: выводы
“There is no silver bullet”
    Frederick Brooks, "The Mythical Man-Month"




                                                 30
Облачные вычисления, нужно помнить


• SLA/Поддержка

• Географическое размещение данных (e.g. USA Patriot Act)

• Vendor lock-in

• Downtime (unexpected outages)

• Безопасность




                                                            31
Paradigm shift?




                  32

More Related Content

The impact of the cloud on development by Alexander Klimov, Igor Sukharev

  • 1. Влияние развития облачных вычислений на разработку программного обеспечения Александр Климов, @alex_klimov Игорь Сухарев, @igorsukharev All registered trademarks or trademarks are property of their respective owners. 1
  • 2. Интернет и облачные вычисления “Because the Internet is primarily a software artifact, there seems to be no end to its possibilities” Vint Cerf 2
  • 3. Шум вокруг облачных вычислений 3
  • 4. Технологические тренды, формирующие экосистему облачных платформ • Широкополосный интернет • Распределенные вычисления • Виртуализация • Прогресс hardware-технологий и центров обработки данных • Мобильные технологии 4
  • 5. Почему облачные вычисления? • Скорость разработки • Снижение затрат на проектирование и поддержку собственной технологической инфраструктуры для разработки ПО • Географически распределенные системы 5
  • 6. Городские легенды • Облачные вычисления способны решить все проблемы • Облачные вычисления снижают TCO • Облачные вычисления создают нехватку рабочих мест • Облачные вычисления и виртуализация - это одно и то же • Облачные вычисления делают данные “прозрачно глобализированными” 6
  • 7. Эволюция разработки ПО в облаке • Инструментарий (development environment) • Платформа • Бизнес/Доставка 7
  • 8. Облако: инструментарий/спектральный анализ • Системы управления версиями (github, Bitbucket, bazaar, SourceForge, Google code, etc.) • Управление проектами (BaseCamp, Trello, asana, etc. ) • IDE (Cloud9, Exo Cloud, etc.) • Интеграция различных провайдеров облачных инструментов разработки в гетерогенные гибридные облачные системы/системы для организации жизненного цикла ПО (например, Cloud9+github) • Мультиплатформенность и мобильность рабочего места (миграция тяжелых систем и клиентов для разработки в облако и мобильный доступ к ним) 8
  • 10. Облако: платформа для разработчика/ основные характеристики • Вычисления (compute) • Сеть (networking) • Системы хранения данных (storage) 10
  • 11. Облако: платформа для разработчика/ качественные характеристики • Отказоустойчивость (designed for failure) • Масштабируемость (scalability) • Эластичность 11
  • 12. Облако: платформа для разработчика/ архитектура • Миграция legacy систем в облако • Профилирование архитектуры приложения под облако • Характерные, доминирущие дизайн паттерны: компонентизация, separation of concerns, loosely-connected компоненты • Декомпозиция облачного приложения в терминах сервисов провайдера облачных услугах (compute, service, load-balancing, dns, db и тд) • Облачные API - “клей” между различными компонентами архитектуры • Кластеризация архитектуры по зонам доступности провайдера облачных услуг 12
  • 13. Облако: платформа для разработчика/ революция или эволюция? • Растущее доминирование нового вида разработчиков - “Born To Be WildOn The Web” • Фокус на agile методологиях разработки ПО • Тенденции упрощения среды (runtime, настройка окружения разработки и тд) компенсируются возрастающей сложностью распределенной архитектуры облачного приложения • Фундаментальные архитектурные принципы - SOA, REST, MVC, Multi- tenancy Облачные архитектуры - эволюционная модель развития распределенных систем в Интернете/Интранете, базирующаяся на известных принципах проектирования и дизайна ИТ систем 13
  • 14. Облако: платформа для разработчика/ архитектура/паттерны • Oxymoron - design for failure для отказоустойчивости • Кластеризация с использованием зон доступности (availability zones) • Автоматизация цикла разработки и деплоймента • Кэширование везде, где это возможно • Безопасность - интегральная часть проектирования каждой части архитектуры • Глобальная распределеность • Перманентная оптимизация финансовых затрат на облако 14
  • 15. Облако: платформа для разработчика/ открытые облака/мотивация Причины для миграции на открытые облака Гибкость Отсутствие vendor lock-in Экономические предпосылки Открытые стандарты и API Портируемость Другие причины 0 15 30 45 60 (данные Zenoss, “The State Of Open Source Cloud” , 2012) 15
  • 16. Облако: бизнес-платформа • Магазины приложений (Apple App Store, Google Play, Windows Store, Amazon AppStore etc.) • SaaS (facebook, force.com, Google Apps Marketplace, etc.) • CDN (AWS CloudFront, Akamai SOLA, etc.) 16
  • 17. Варианты использования облачных вычислений “No size fits all” Unknown 17
  • 18. Облако: IaaS/аттрибуты • Вычисления (different capacity, load balancing) • Хранилище • БД • Сеть (VPN, dedicated con with premise) 18
  • 19. Облако: IaaS/анализ Преимущества: • Полный контроль • Близка к традиционным разработке и деплойменту • Минимальный vendor lock-in* Недостатки: • Минимум функциональности “из коробки” • Временные затраты и администрирование 19
  • 20. Облако: IaaS/платформы • Публичные (AWS/EC2, Rackspace Cloud, Google Compute Engine, Windows Azure Virtual Machines, Joyent, SoftLayer, IBM SCP etc.) • Частные (openstack, nebula, Eucalyptus) 20
  • 21. Облако: IaaS/платформа для разработчика/ открытые облака OpenStack CloudStack Eucalyptus Other 22 % 9 % 51 % 18 % (данные Zenoss, “The State Of Open Source Cloud” , 2012) 21
  • 22. Облако: PaaS/аттрибуты • Языки программирования • БД • Веб сервер/сервер приложений 22
  • 23. Облако: PaaS/языки программирования Языки программирования, % (данные Engine Yard, Май 2012) 60 45 30 15 0 Javascript Java Ruby PHP C# C++ Python Perl 23
  • 24. Облако: PaaS/анализ Преимущества: • Горизонтальная масштабируемость почти из коробки • Отказоустойчивость для экземляров приложений • Экономия времени разработки Недостатки: • Меньшая степень контроля • Наличие vendor lock-in 24
  • 25. Облако: PaaS/платформы • Публичные (AWS/Elastic Beanstalk, heroku, Google App Engine, Windows Azure Compute, Engine Yard, AppFrog, CloudBees, Jelastic, etc.) • Частные (CloudFoundry, RedHat OpenShift, etc.) 25
  • 26. Облако: SaaS/аттрибуты • Максимальная абстракция от программного стека • Multi-tenancy важный параметр архитектуры • Высокая скорость выпуска новых версий ПО, которая происходит прозрачно для пользователя • Композиция сервисов - легкость и удобство интеграции с другими сервисами (например, для разработки так называемых mashups) 26
  • 27. Облако: SaaS/сценарии • Распространение ПО • Обработка платежей • HR системы • Социально-ориентированные системы • Collaboration системы и и инструменты project management • ERP • CRM • Игры 27
  • 28. Облако: SaaS/анализ Преимущества: • Скорость появления новых функциональных возможностей и прозрачность (для пользователя) их введения • Приём платежей/Защита от мошеннических операций • Защита от пиковых нагрузок (“the slashdot effect” или “black Friday effect”) Недостатки: • Меньшая степень контроля • Зависимость от политики и правил поставщика SaaS • Дата выпуска ПО в магазине может варьироваться 28
  • 30. Облако: выводы “There is no silver bullet” Frederick Brooks, "The Mythical Man-Month" 30
  • 31. Облачные вычисления, нужно помнить • SLA/Поддержка • Географическое размещение данных (e.g. USA Patriot Act) • Vendor lock-in • Downtime (unexpected outages) • Безопасность 31