Тип работы:
Предмет:
Язык работы:


Методы проектирования отказоустойчивых информационных систем

Работа №193115

Тип работы

Магистерская диссертация

Предмет

информатика

Объем работы86
Год сдачи2024
Стоимость5860 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
1
Не подходит работа?

Узнай цену на написание


Аннотация 2
Введение 5
1 Теория надежности 7
1.1 Сбои и инциденты 8
1.2 Избыточность и резервирование 9
1.3 Понятия SLA, SLI и SLO 9
1.4 Бюджет ошибок 11
1.5 Метрики надежности ПО 11
1.6 Модели надежности 13
2 Риски эксплуатации приложений 15
2.1 Инструменты управления рисками 15
2.2 Цикл разработки ПО 16
2.3 Выявление рисков возникновения сбоев 17
2.4 Причины и триггеры сбоев 19
2.5 Классификация причин сбоев 21
2.6 Оценка влияния и последствий 22
2.7 Оценка вероятности возникновения 23
2.8 Реализация риск-стратегии 24
3 Основы построения отказоустойчивого ПО 26
3.1 Распределенная архитектура 26
3.1.1 Понятие сервисов и микросервисов 27
3.1.2 Балансировка нагрузки 28
3.1.3 Асинхронная обработка запросов 29
3.2 Отказоустойчивость хранилищ данных 31
3.2.1 CAP-теорема 31
3.2.2 Репликация данных 31
3.2.3 Шардирование данных 33
3.2.4 Партицирование данных 34
3.2.5 Резервное копирование 35
3.3 Шаблоны проектирования отказоустойчивых API 36
3.3.1 Повторные попытки и таймауты 37
3.3.2 Паттерн Circuit Breaker 38
3.3.3 Реализация fallback-сценариев 39
3.3.4 Использование контекста запроса 40
3.3.5 Пробы жизнеспособности сервиса 42
3.3.6 Механизм Graceful Shutdown 43
3.4 Устойчивость под высокой нагрузкой 44
3.4.1 Ограничение пропускной способности 44
3.4.2 Кэширование данных 45
3.4.3 Плавная деградация 47
3.4.4 Автоматическое масштабирование 48
3.5 Обеспечение безопасности релизов 49
3.5.1 Семантическое версионирование 50
3.5.2 Безопасное чтение файлов конфигурации 51
3.5.3 Паттерн Feature Toggle 51
3.5.4 Стратегии развертывания (релиза) 52
3.5.5 Имплементация динамических конфигов 53
3.5.6 Использование облачных технологий 54
3.6 Роль архитектурных фасадов 54
3.6.1 Паттерн API Gateway 55
3.6.2 Паттерн Strangler 56
3.6.3 Паттерн Sidecar 56
4 SRE-культура и практики 58
4.1 Взаимосвязь с DevOps 58
4.2 О роли SRE-специалиста 59
4.3 Практики мониторинга и реагирования 60
4.3.1 Логи и метрики 61
4.3.2 Трассировка запросов 62
4.3.3 Профилирование и отладка 62
4.3.4 Дежурства (on-call) 63
4.4 Практики тестирования программных компонентов 63
4.4.1 Симуляция отказов и хаос-тестирование 64
4.4.2 Нагрузочное и стресс-тестирование 64
4.5 Улучшение цикла разработки 66
4.5.1 Автоматизация рутинных действий 66
4.5.2 Ревью архитектурных решений 66
4.5.3 Методология Shift-left SRE 67
4.5.4 Работа с бюджетом ошибок 68
4.5.5 Формирование стратегических целей 68
4.6 Практики документирования 69
4.6.1 Архитектурные диаграммы 69
4.6.2 Документирование API 70
4.6.3 Ранбуки для дежурных 71
4.6.4 Постмортемы 71
4.6.5 План аварийного восстановления 72
4.6.6 Регламенты и договоренности 73
4.7 Непрерывное обучение 74
Заключение 75
Список использованных источников и литературы 76


Эксплуатация и развертывание приложений в промышленном окружении всегда сопровождается определенными рисками. Например, сервис может не выдержать повышения нагрузки, в ходе его работы может быть внезапно выявлен критичный дефект, или во время проведения плановых работ исполнитель может случайно совершить ошибку, приводя систему в неработоспособное состояние. Эти и многие другие причины могут впоследствии привести к крупным сбоям и длительной недоступности бизнес-процессов, что может иметь разного рода последствия: от простого недовольства пользователей до финансовой катастрофы предприятия.
В настоящее время эта проблема стала особо актуальной по причине того, что информационные технологии являются одной из самых крупных инвестиций человечества. По статистике таких источников как «Gartner» и «Statista», ежегодные траты на информационные технологии исчисляются миллиардами долларов и эта цифра только продолжает расти [1, 2]. За каждым популярным приложением стоят сотни, тысячи или даже миллионы клиентов, которые ожидают стабильный сервис. В свою очередь, для заказчиков каждая минута недоступности приравнивается к прямым или косвенным финансовым потерям.
Первыми о необходимости изменения подхода к разработке приложений с большим уклоном в сторону надежности и отказоустойчивости задумались современные гиганты IT-индустрии, которые начали наращивать свою клиентскую базу в двухтысячные годы. Ещё в 1998 году Amazon издал статью «The Distributed Computing Manifesto», в которой были зафиксированы ключевые принципы создания сервис-ориентированной архитектуры и подчеркнуто их влияние на производительность и устойчивость к отказам [3].
В 2017 году компания Google выпустила книгу «Site Reliability Engineering» [4], ставшую основным руководством для построения надежных и отказоустойчивых информационных систем на последующие несколько лет. Практики из данной книги по-своему перенимались, модифицировались и адаптировались крупными IT-компаниями по всему миру, что в итоге привело к появлению и распространению профессии и культуры SRE (Software Reliability Engineering), имеющей несколько неоднозначный характер. Одни видят в этом следующую ступень развития для DevOps-инженеров или системных администраторов, другие приписывают этот термин разработчикам, которые занимаются поддержкой приложения в промышленной среде, последние выделяют SRE в отдельный класс специалистов со своими специфичными техническими задачами [5]. Так или иначе, всех работников данной области объединяет общая установка на обеспечение надежности и стабильности эксплуатируемых ими систем.
К сожалению, в открытых источниках доступно не так много систематизированного материала по теме отказоустойчивости корпоративных информационных систем по причине относительной новизны данного направления. Другой важной проблемой является то, что существующие ресурсы не описывают систематического подхода к обеспечению надежности, а только предлагают набор подходящих для этого практик и шаблонов проектирования.
Поэтому целью данной работы становится выявление и описание методов повышения отказоустойчивости информационных систем с использованием аппарата управления рисками, который может помочь выстроить работу над надежностью более систематически.
Это декомпозируется на следующие задачи:
1. Выявление и анализ рисков развертывания и эксплуатации приложений.
2. Изучение существующих практик и методов повышения отказоустойчивости систем.
3. Разработка методов реагирования и минимизации рисков на каждом этапе цикла разработки программного обеспечения.
Структура диссертации представляет собой четыре логически связанные главы. В первых двух частях изложены теоретические аспекты построения отказоустойчивых систем, а также проведен анализ и классификация рисков, с которыми сталкиваются команды разработки и сопровождения проектов. В последних главах разобраны шаблоны и практики проектирования отказоустойчивых систем, а также приведены практические рекомендации по трансформации процессов разработки ПО с уклоном в повышение его надежности и доступности.
Научная ценность и новизна заключается в структурировании и совершенствовании существующих знаний в области анализа рисков эксплуатации корпоративных информационных систем. Данная работа может стать хорошим техническим руководством для инженеров и разработчиков, желающих повысить качество своего программного обеспечения.


Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В рамках работы был проведен анализ рисков внедрения и эксплуатации приложений, в результате которого основные причины сбоев были проклассифицированы и соотнесены с этапами цикла разработки, на которых они чаще всего проявляются. В соответствии с оценкой их влияния и последствий, была построена риск-стратегия, позволяющая организовать систематический подход в работе над повышением надежности информационных систем.
Основная часть диссертации посвящена практикам построения отказоустойчивого программного обеспечения, позволяющим минимизировать влияние сбоев путем реализации методов структурного, временного и функционального резервирования. Их задачей является не только минимизация возможных рисков эксплуатации, но и улучшение таких показателей, как MTTR и MTBF системы. В заключительной части разбираются методология SRE и некоторые инструменты, вносящие процессные улучшения в цикл разработки и развивающие SRE-культуру в продуктовой команде.
Результаты данной работы могут быть использованы как основа для дальнейших исследований в области разработки надежных информационных систем и будут полезны инженерам и разработчикам, стремящимся улучшить качество и надежность программных продуктов.


1. Gartner Forecasts Worldwide IT Spending to Grow 6.8% in 2024 // Gartner - [Б.м.], 2024. - URL: https://www.gartner.com/en/newsroom/press-releases/01-17-2024-gartner-forecasts- worldwide-it-spending-to-grow-six-point-eight-percent-in-2024 (дата обращения: 21.03.2024).
2. Information technology (IT) worldwide spending from 2005 to 2024 // Statista - [Б.м.], 2024. - URL: https://www.statista.com/statistics/203935/overall-it-spending-worldwide/ (дата обращения: 21.03.2024).
3. The Distributed Computing Manifesto // Amazon.com, Inc. - [Б.м.], 2022. - URL: https://www.allthingsdistributed.com/2022/11/amazon-1998-distributed-computing-manifesto.html (дата обращения: 21.03.2024).
4. Site Reliability Engineering: How Google Runs Production Systems / Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy. - 1st. ed. - O’Reilly Media, Inc., 2016.
5. What is SRE (site reliability engineering)? // Red Hat, Inc. - [Б.м.], 2022. - URL: https://www.redhat.com/en/topics/devops/what-is-sre (дата обращения: 15.04.2024).
6. Reliability Engineering / Kailash C. Kapur, Michael Pecht. - Wiley Series in Systems Engineering and Management, 2014.
7. Software Reliability Models // javatpoint.com - [Б.м.], 2021. - URL:
https://www.javatpoint.com/software-engineering-software-reliability-models (дата обращения: 15.04.2024).
8. Структурная надежность информационных систем. Методы анализа / И.Б. Шубинский. - М.: «Журнал Надежность», 2012, - 216 с.
9. Теория надежности : конспект лекций / А.А. Ефремов. - Томск : Изд-во Том. полит, ун-та. - 2015.
10. MTBF, MTTR, MTTA, and MTTF // Atlassian - [Б.м.], 2024. - URL: https://www.atlassian.com/incident-management/kpis/common-metrics (дата обращения: 13.04.2024).
11. Reliability Metrics // javatpoint.com - [Б.м.], 2021. - URL:
https://www.javatpoint.com/software-engineering-software-reliability-metrics (дата обращения: 13.04.2024).
12. Stop Using MTTR for Software // Medium - [Б.м.], 2023. - URL:
https://jimjh.medium.com/stop-using-mttr-for-software-f8a2d57d49db (дата обращения: 13.04.2024).
13. Swiss cheese model // Wikipedia - [Б.м.], 2024. - URL:
https://en.wikipedia.org/wiki/Swiss_cheese_model (дата обращения: 22.04.2024).
14. Bow-tie diagram //Wikipedia - [Б.м.], 2024. -URL: https://en.wikipedia.org/wiki/Bow-tie_diagram (дата обращения: 22.04.2024).
15. Risk management // Wikipedia - [Б.м.], 2024. - URL:
https://en.wikipedia.org/wiki/Risk_management (дата обращения: 10.04.2024)... 33


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ