Введение

Завершено

Разработка облачных программ (т. е. проектирование и внедрение программных систем, успешно использующих возможности массивно распределенных вычислительных ресурсов) сопряжена с огромными трудностями. Сложности возникают из-за большого числа возможных логических взаимодействий и временных операций между многочисленными программными и аппаратными компонентами. Ошибки программы могут быть сложны для воспроизведения, а из-за недетерминированного поведения производительности некоторых облачных программ анализ и обоснование работы системы могут выйти далеко за пределы простых человеческих способностей.

По мере того как исследователи и специалисты-практики постепенно стали лучше понимать эту проблему, они разработали модели программирования и вычислений, которые снижают уровень изначальной сложности облачных систем. Эти модели, воплощенные в программных и аппаратных системах, являются связующим звеном между разработчиками и базовыми вычислительными ресурсами, так как они предоставляют стилизованные шаблоны проектирования, обеспечивают упрощенное представление распределенного программирования, а также предлагают гибкий интерфейс работы с приложениями, данными и ресурсами.

Нынешнее поколение моделей облачного программирования построено на классических предшественниках, поддерживающих межпроцессное взаимодействие на основе общей памяти и передачи сообщений. Несмотря на то, что эти более ранние версии предоставляют базовые средства для взаимодействия между распределенными задачами, в них отсутствует возможность автоматической параллелизации и распределения задач и восстановления после сбоев. Современные потомки этих версий, включая Hadoop MapReduce, Pregel и GraphLab, представляют собой более комплексные решения, отвечают требованиям распределенного программирования и вычислений в облачных средах. Помимо прочих преимуществ, эти модели освобождают разработчиков от выполнения множества сложных задач, связанных с распределенным программированием, и позволяют им сосредоточиться на последовательных фрагментах алгоритмов приложений.

Вспоминая конструкцию первого программируемого компьютера, разработанную Бэббиджем в 1837 году, мы будем называть современные модели облачного программирования механизмами распределенной аналитики. В этом модуле рассматриваются концепции и проблемы облачных вычислений, а также приводятся актуальные примеры аналитических механизмов для разработки облачных приложений.

Цели обучения

Изучив этот модуль, вы сможете:

  • Классификация программ как последовательных, параллельных и распределенных
  • Указание того, почему программисты обычно выполняют параллелизацию последовательных программ
  • Объяснение значимости облачных программ для решения сложных вычислительных проблем
  • Определение распределенных систем и указание отношений между распределенными системами и облаками
  • Определение моделей распределенного программирования
  • Определение необходимости синхронизация в системах с общей памятью
  • Описание взаимодействия задач с помощью модели программирования с передачей сообщений
  • Определение различий между синхронными и асинхронными программами
  • Определение модели синхронных параллельных вычислений BSP
  • Определение различия между параллелизмом данных и параллелизмом графов
  • Определение различия между следующими распределенными программами: модель "одна программа — много данных" (SPMD) и модель "много программ — много данных" (MPMD)
  • Изучение двух основных методов, которые можно включить в распределенные программы для устранения проблем с взаимодействием в облаке
  • Определение разнородных и однородных облаков и определение основных причин разнородности в облаке
  • Пояснения к необходимости синхронизации в облаке
  • Определение основного метода, который можно использовать для допуска ошибок в облаках
  • Описание разницы между планированием задач и планированием заданий

Необходимые компоненты

  • Понимание темы облачных вычислений, в том числе знакомство с моделями и некоторыми поставщиками облачных служб.
  • Знание технологий, лежащих в основе облачных вычислений.
  • Представление о том, как поставщики облачных служб управляют оплатой и выставлением счетов за использование облака.
  • Знание понятия центров обработки данных и их назначения.
  • Знания в области настройки, поддержки и подготовки центров обработки данных.
  • Представление о том, как подготавливаются и измеряются облачные ресурсы.
  • Знакомство с понятием виртуализации.
  • Знание различных типов виртуализации.
  • Представление о виртуализации ЦП.
  • Представление о виртуализации памяти.
  • Представление о виртуализации ввода-вывода.
  • Знания различных типов данных и об их хранении
  • Знакомство с распределенными файловыми системами и принципами их работы.
  • Знакомство с базами данных NoSQL и хранилищем объектов, а также с принципами их работы