15 октября, Приемы разработки отказоустойчивого ПО

Место проведения семинара: АУ ауд. 204
Время: 15 октября 10.00 -- 11.30
Докладчик: Ольга Шаронова, Senior Software Engineer, EMC

План семинара

  • Почему важно, чтобы ПО было надежным?
    • Mission-critical, life-critical, business-critical системы
    • Довольные пользователи – залог успеха
    • Несколько примеров критических ошибок
  • Что такое ошибки ПО, откуда они берутся и какие бывают
    • Жизненный цикл продукта (фазы: спецификация, дизайн, реализация, тестирование, эксплуатация и поддержка). Задача: найти и обезвредить
      • Какие ошибки могут закрасться в продукт на каждой из этих стадий?
      • Какие меры принимаются, чтобы этого не допустить? Методы предотвращения, обнаружение и исправление ошибок.
      • И, тем не менее, ПО без ошибок не бывает. Почему?
    • Терминология: сбой, ошибка, отказ
      • Сбой (что-то пошло не так) . Возможные источники (отказ устройств, нижележащих сервисов, злонамеренные действия, непредусмотренные условия эксплуатации, баги)
      • Ошибка (внутреннее состояние системы отклонилось от нормального)
      • Отказ (система работает не так, как должна): невозможность предоставить требуемые сервисы с требуемым качеством; некорректная работа сервисов; потеря пользовательских данных или нарушение их целостности
    • Свойства сбоев, ошибок, отказов
      • Как они все связаны между собой (отношение n к n)
      • Распространение отказов в системе (цепная реакция)
      • Латентность сбоев и ошибок
      • Что это для нас означает (невозможность предусмотреть все ситуации, сложность обнаружения, сложность диагностики)
  • Робастные и отказоустойчивые системы – кто это?
    • Ситуации: «хорошие»/«плохие» vs предусмотренные/непредусмотренные. Хотим предусмотреть все «плохие» ситуации.
    • Робастные системы: ведут себя корректно в случае сбоев: защита от/минимизация урона в случае отказа
    • Отказоустойчивые системы: Минимизация вероятности отказа в случае сбоя
    • Выбор тактики зависит от требований к системе
  • Как робастность и отказоустойчивость закладываются в системы?
    • Жизненный цикл продукта (фазы: спецификация, дизайн, реализация, тестирование, эксплуатация и поддержка). Задача: приказано выжить.
    • Спецификация: сбор и документация требований по отказоустойчивости, доступности системы и сохранности данных. «Достаточно хорошее» ПО.
    • Дизайн и реализация: «работа над ошибками»
      • Обнаружение
      • Диагностика
      • Изоляция
      • Обработка (Восстановление или Graceful shutdown)
    • Тестирование: fault injection
  • Приемы дизайна и разработки отказоустойчивых систем (обзор)
    • Микроприемы: defense programming.
    • Макроприемы - архитектурные паттерны для:
      • Обнаружения и диагностики сбоев
      • Изоляции сбоев
      • Восстановления системы после сбоев
        • Backward recovery (откат в одно из предыдущих состояний): варианты, плюсы, минусы
        • Forward recovery (как правило, использует избыточность системы): варианты, плюсы, минусы
  • Жизненный цикл отказоустойчивого ПО / revisited
AttachmentSize
Office presentation icon faulttolerance.ppt927.5 KB