Распределенные программные системы
Основы программной инженерии
Кулямин В.В., ВМК МГУ
Общие замечания
Распределенные системы – системы, компоненты которых размещены на физически разделенных устройствах, а функциональность существенно зависит от взаимодействия этих компонентов
•Позволяют получить доступ большему числу пользователей к большему количеству ресурсов с меньшими затратами
•Одни из наиболее сложных для разработки
•Распределенность существенно влияет на ряд характеристик качества
итребует специфических усилий для их обеспечения
•Производительность
•Надежность
•Защищенность
•Удобство администрирования и развития
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
2 |
Важнейшие свойства
Эти свойства
•Способствуют получению большей пользы от распределенности
•Служат основой для стабильного развития таких систем
•Прозрачность (transparency)
•Открытость (openness)
•Масштабируемость (scalability)
•Безопасность (safety)
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
3 |
Прозрачность
Способность скрыть особенности распределенности
•От пользователей – пользователь в идеале не должен чувствовать разницы между распределенной системой и локальной
•От разработчиков – в идеале, большая часть кода должна создаваться независимо от распределенности или локальности системы, в которой он будет работать
•Повышает производительность пользователей – при примерно тех же усилиях пользователь работает с гораздо более широким набором ресурсов
•Основные методы достижения – использование готовой инфраструктуры, генерация обеспечивающих распределенные взаимодействия компонентов
•Недостижима в идеальном виде
•Сбои в сети так или иначе проявляются – обычно в виде задержек
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
4 |
Открытость
Полнота и точность описания интерфейсов компонентов системы
и предоставляемых ею служб
•Снижает трудоемкость сопровождения и развития системы, а также создания взаимодействующих и включающих ее систем
•Основные методы достижения – полная и точная спецификация контрактов для всех предоставляемых служб
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
5 |
Масштабируемость
Способность системы увеличивать количественно нужные характеристики (или сохранять неизменными другие) при увеличении числа используемых узлов и устройств
•Повышает эффективность использования аппаратного обеспечения
•Для разных характеристик означает разное
•Производительность, надежность – лучше, чтобы возрастали
•Удобство сопровождения и администрирования – лучше, чтобы не изменялись
•Основные методы достижения – децентрализация и распределение нагрузки, репликация данных и кэширование результатов, асинхронные взаимодействия
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
6 |
Безопасность
Способность сохранять работоспособность и другие характеристики качества при различных событиях, нарушающих корректность и целостность окружения системы, а также способность предотвращать/снижать угрозы для безопасности пользователей и окружающей среды из-за некорректной работы самой системы
•Предотвращает/снижает возможный вред от внешних и внутренних сбоев
•Включает
•Поддержку сохранности и целостности данных и компонентов системы
•Защищенность данных и коммуникаций от внешних воздействий
•Отказоустойчивость и способность к восстановлению после сбоев
•Основные методы достижения – дупликация данных и компонентов, алгоритмы шифрования и внесения избыточности в данные, протоколы аутентификации, авторизации и поддержки целостности
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
7 |
Аспекты организации распр. систем
•Связь
Организация взаимодействия между размещенными на разных узлах компонентами
•Именование
Идентификация ресурсов и организация их поиска
•Процессы
Организация работ в отдельные процессы и нити
•Синхронизация
Организация взаимодействия между параллельно выполняемыми работами
•Целостность
Поддержка консистентности данных системы
•Отказоустойчивость
Организация отказоустойчивой работы
•Защита
Организация защиты данных и коммуникаций от несанкционированного доступа
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
8 |
Связь
•Протоколы передачи данных
•Передача непрерывных данных
•Организация вызовов между процессами и узлами
•Синхронные и асинхронные обращения
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
9 |
Синхронные и асинхронные вызовы
• Синхронные (блокирующие)
Вызывающий компонент приостанавливает активность до возвращения результатов вызова
•Существенно проще для анализа
•Проще для использования результата в коде
•Хуже производительность
•Асинхронные
Вызывающий компонент может работать, не ожидая результата
•Сложнее для анализа
•Нужны специальные действия для получения результата
•Лучше производительность
Кулямин В.В. ФКН ВШЭ, ПИ / ВМК МГУ |
Основы инженерии программного обеспечения |
10 |
