Введение
Разработка облачных программ (т. е. проектирование и внедрение программных систем, успешно использующих возможности массивно распределенных вычислительных ресурсов) сопряжена с огромными трудностями. Сложности возникают из-за большого числа возможных логических взаимодействий и временных операций между многочисленными программными и аппаратными компонентами. Ошибки программы могут быть сложны для воспроизведения, а из-за недетерминированного поведения производительности некоторых облачных программ анализ и обоснование работы системы могут выйти далеко за пределы простых человеческих способностей.
По мере того как исследователи и специалисты-практики постепенно стали лучше понимать эту проблему, они разработали модели программирования и вычислений, которые снижают уровень изначальной сложности облачных систем. Эти модели, воплощенные в программных и аппаратных системах, являются связующим звеном между разработчиками и базовыми вычислительными ресурсами, так как они предоставляют стилизованные шаблоны проектирования, обеспечивают упрощенное представление распределенного программирования, а также предлагают гибкий интерфейс работы с приложениями, данными и ресурсами.
Нынешнее поколение моделей облачного программирования построено на классических предшественниках, поддерживающих межпроцессное взаимодействие на основе общей памяти и передачи сообщений. Несмотря на то, что эти более ранние версии предоставляют базовые средства для взаимодействия между распределенными задачами, в них отсутствует возможность автоматической параллелизации и распределения задач и восстановления после сбоев. Современные потомки этих версий, включая Hadoop MapReduce, Pregel и GraphLab, представляют собой более комплексные решения, отвечают требованиям распределенного программирования и вычислений в облачных средах. Помимо прочих преимуществ, эти модели освобождают разработчиков от выполнения множества сложных задач, связанных с распределенным программированием, и позволяют им сосредоточиться на последовательных фрагментах алгоритмов приложений.
Вспоминая конструкцию первого программируемого компьютера, разработанную Бэббиджем в 1837 году, мы будем называть современные модели облачного программирования механизмами распределенной аналитики. В этом модуле рассматриваются концепции и проблемы облачных вычислений, а также приводятся актуальные примеры аналитических механизмов для разработки облачных приложений.
Цели обучения
Изучив этот модуль, вы сможете:
- Классификация программ как последовательных, параллельных и распределенных
- Указание того, почему программисты обычно выполняют параллелизацию последовательных программ
- Объяснение значимости облачных программ для решения сложных вычислительных проблем
- Определение распределенных систем и указание отношений между распределенными системами и облаками
- Определение моделей распределенного программирования
- Определение необходимости синхронизация в системах с общей памятью
- Описание взаимодействия задач с помощью модели программирования с передачей сообщений
- Определение различий между синхронными и асинхронными программами
- Определение модели синхронных параллельных вычислений BSP
- Определение различия между параллелизмом данных и параллелизмом графов
- Определение различия между следующими распределенными программами: модель "одна программа — много данных" (SPMD) и модель "много программ — много данных" (MPMD)
- Изучение двух основных методов, которые можно включить в распределенные программы для устранения проблем с взаимодействием в облаке
- Определение разнородных и однородных облаков и определение основных причин разнородности в облаке
- Пояснения к необходимости синхронизации в облаке
- Определение основного метода, который можно использовать для допуска ошибок в облаках
- Описание разницы между планированием задач и планированием заданий
Необходимые компоненты
- Понимание темы облачных вычислений, в том числе знакомство с моделями и некоторыми поставщиками облачных служб.
- Знание технологий, лежащих в основе облачных вычислений.
- Представление о том, как поставщики облачных служб управляют оплатой и выставлением счетов за использование облака.
- Знание понятия центров обработки данных и их назначения.
- Знания в области настройки, поддержки и подготовки центров обработки данных.
- Представление о том, как подготавливаются и измеряются облачные ресурсы.
- Знакомство с понятием виртуализации.
- Знание различных типов виртуализации.
- Представление о виртуализации ЦП.
- Представление о виртуализации памяти.
- Представление о виртуализации ввода-вывода.
- Знания различных типов данных и об их хранении
- Знакомство с распределенными файловыми системами и принципами их работы.
- Знакомство с базами данных NoSQL и хранилищем объектов, а также с принципами их работы