The speech we gave on CEE-SECR 2012 (Конференция «Разработка ПО 2012», Центр Digital October, Москва, Россия, 2 ноября 2012)
1 of 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
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
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
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
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