Что такое проектирование надежности сайта?
Инжиниринг надежности сайта (SRE) — это практика использования программных инструментов для автоматизации задач ИТ-инфраструктуры, таких как управление системой и мониторинг приложений. Организации используют SRE, чтобы обеспечить надежность своих программных приложений в условиях частых обновлений от команд разработчиков. SRE особенно повышает надежность масштабируемых программных систем, поскольку управление большой системой с помощью программного обеспечения более устойчиво, чем ручное управление сотнями машин.
Почему проектирование надежности сайта важно?
Надежность сайта описывает стабильность и качество обслуживания, которое приложение предлагает после того, как оно стало доступным для конечных пользователей. Обслуживание программного обеспечения иногда влияет на надежность программного обеспечения, если технические проблемы остаются незамеченными. Например, когда разработчики вносят новые изменения, они могут непреднамеренно повлиять на существующее приложение и привести к его сбою в определенных случаях использования.
Ниже приведены некоторые преимущества практики проектирования надежности сайта (SRE).
Более эффективное сотрудничество
SRE улучшает сотрудничество между командами разработки и эксплуатации. Разработчикам часто приходится быстро вносить изменения в приложение, чтобы выпустить новые функции или исправить критические ошибки. С другой стороны, операционная группа должна обеспечить бесперебойное предоставление сервисов. Таким образом, операционная группа использует методы SRE для тщательного отслеживания каждого обновления и оперативного реагирования на любые проблемы, возникающие в связи с изменениями.
Повышение качества обслуживания
Организации используют модель SRE, чтобы ошибки программного обеспечения не влияли на качество обслуживания клиентов. Например, команды разработчиков программного обеспечения используют инструменты SRE для автоматизации жизненного цикла разработки программного обеспечения. Это уменьшает количество ошибок, что означает, что команда может уделять приоритетное внимание разработке новых функций, а не исправлению ошибок.
Улучшенное планирование операций
Команды SRE признают, что существует реальная вероятность сбоя программного обеспечения. Поэтому команды планируют соответствующее реагирование на инциденты, чтобы минимизировать влияние простоя на бизнес и конечных пользователей. Они также могут лучше оценить стоимость простоя и понять влияние таких инцидентов на бизнес-операции.
Каковы ключевые принципы проектирования надежности сайта?
Ниже приведены некоторые ключевые принципы проектирования надежности сайта (SRE).
Мониторинг приложений
Команды SRE признают, что ошибки являются частью процесса развертывания программного обеспечения. Вместо того, чтобы искать идеальное решение, они отслеживают производительность программного обеспечения с точки зрения соглашений об уровне обслуживания (SLA), индикаторов уровня обслуживания (SLI) и целевых уровней обслуживания (SLO). Они наблюдают и отслеживают метрики производительности после развертывания приложения в производственных средах.
Постепенное внедрение изменений
Практика SRE поощряет выпуск частых, но незначительных изменений для поддержания надежности системы. Инструменты автоматизации SRE используют согласованные, но повторяемые процессы для выполнения указанных ниже задач.
- Уменьшите риски, связанные с изменениями.
- Обеспечьте петли обратной связи для измерения производительности системы.
- Повысьте скорость и эффективность внедрения изменений.
Автоматизация для повышения надежности
SRE использует политики и процессы, которые внедряют принципы надежности на каждом этапе конвейера доставки. Некоторые стратегии, которые автоматически устраняют проблемы, включают указанное ниже.
- Разработка стандартов качества на основе целевых уровней обслуживания для раннего выявления проблем
- Автоматизация тестирования сборки с помощью индикаторов уровня обслуживания
- Принятие архитектурных решений, обеспечивающих отказоустойчивость системы с самого начала разработки программного обеспечения
Что такое наблюдение при проектировании надежности сайта?
Наблюдение – это процесс, который готовит команду разработчиков программного обеспечения к неопределенностям при запуске программного обеспечения для конечных пользователей. Команды инженеров по обеспечению надежности сайта (SRE) используют инструменты для обнаружения аномального поведения в программном обеспечении и, что более важно, сбора информации, которая помогает разработчикам понять причины проблемы. Наблюдение подразумевает сбор следующей информации с помощью инструментов SRE.
Метрики
Метрики – это поддающиеся количественной оценке значения, отражающие производительность приложения или состояние системы. Команды SRE используют метрики, чтобы определить, потребляет ли программное обеспечение чрезмерные ресурсы или ведет себя аномально.
CloudWatch Logs
Программное обеспечение SRE генерирует подробную информацию с временными метками, называемую журналами, в ответ на определенные события. Инженеры-программисты используют журналы для понимания цепочки событий, приводящих к конкретной проблеме.
Маршруты
Трассировки – это наблюдения за кодовым путем определенной функции в распределенной системе. Например, проверка корзины заказов может включать указанное ниже.
- Подсчет цены с помощью базы данных
- Аутентификация с помощью платежного шлюза
- Отправка заказов поставщикам
Маршруты состоят из идентификатора, имени и времени. Они помогают разработчикам программного обеспечения выявлять проблемы с задержкой и повышать производительность программного обеспечения.
Что такое мониторинг при проектировании надежности сайта?
Мониторинг – это процесс наблюдения за заранее определенными метриками в приложении. Разработчики решают, какие параметры имеют решающее значение для определения работоспособности приложения, и устанавливают их в инструментах мониторинга. Команды по проектированию надежности сайта (SRE) собирают важную информацию, отражающую производительность системы, и визуализируют ее в виде диаграмм.
В SRE команды разработчиков программного обеспечения отслеживают эти метрики, чтобы получить представление о надежности системы.
Задержка
Задержка описывает время ожидания ответа приложения на запрос. Например, отправка формы на веб-сайте занимает 3 секунды, прежде чем пользователи будут перенаправлены на веб-страницу подтверждения.
Трафик
Трафик измеряет количество пользователей, одновременно получающих доступ к вашему сервису. Это помогает командам разработчиков программного обеспечения соответствующим образом выделять вычислительные ресурсы для поддержания удовлетворительного уровня обслуживания для всех пользователей.
Ошибки
Ошибка – это состояние, при котором приложение не работает или работает не так, как ожидается. Например, когда веб-страница не загружается или транзакция не проходит, команды SRE используют программные инструменты для автоматического отслеживания ошибок в приложении и реагирования на них.
Насыщение
Насыщение показывает пропускную способность приложения в реальном времени. Высокий уровень насыщения обычно приводит к снижению производительности. Инженеры по надежности объекта контролируют уровень насыщения и следят за тем, чтобы он был ниже определенного порогового значения.
Каковы ключевые показатели для проектирования надежности сайта?
Команды по проектированию надежности сайта (SRE) измеряют качество предоставления услуг и надежность, используя указанные ниже показатели.
Целевые уровни обслуживания
Целевые уровни обслуживания (SLO) – это конкретные и поддающиеся количественной оценке цели, которые, как вы уверены, может достичь программное обеспечение по разумной цене по сравнению с другими показателями, такими как следующие:
- Время безотказной работы или время работы системы
- Пропускная способность системы
- Системный выход
- Скорость загрузки или скорость загрузки приложения
SLO обещает заказчику доставку через программное обеспечение. Например, вы устанавливаете время безотказной работы SLO 99,95 % для приложения вашей компании по доставке еды.
Индикаторы уровня обслуживания
Индикаторы уровня обслуживания (SLI) – это фактические измерения метрики, определяемой SLO. В реальных ситуациях вы можете получить значения, которые соответствуют или отличаются от SLO. Например, ваше приложение запускается и работает 99,92% времени, что ниже обещанного уровня обслуживания.
Соглашения об уровне обслуживания
Соглашения об уровне обслуживания (SLA) – это юридические документы, в которых указано, что произойдет, если один или несколько SLO не будут выполнены. Например, в согласии об уровне обслуживания указано, что техническая группа решит проблему вашего клиента в течение 24 часов после получения отчета. Если ваша команда не смогла решить проблему в течение указанного срока, возможно, вы будете обязаны выполнить возмещение.
Бюджеты ошибок
Бюджеты ошибок – это допустимый уровень несоответствия для SLO. Например, время безотказной работы в SLO 99,95 % означает, что допустимое время простоя составляет 0,05 %. Если время простоя программного обеспечения превышает бюджет ошибок, команда разработчиков программного обеспечения выделяет все ресурсы и внимание для стабилизации приложения.
Как работает инжиниринг надежности сайта?
Проектирование надежности сайта (SRE) предполагает участие инженеров по надежности сайта в команде программного обеспечения. Команда SRE устанавливает ключевые метрики для SRE и создает бюджет ошибок, определяемый уровнем толерантности системы к риску. Если количество ошибок невелико, команда разработчиков может выпустить новые функции. Однако, если ошибки превышают допустимый бюджет ошибок, команда откладывает новые изменения и решает существующие проблемы.
Например, инженер по надежности сайта использует сервис для мониторинга метрик производительности и обнаружения аномального поведения приложений. Если есть проблемы с приложением, команда SRE отправляет отчет команде разработчиков программного обеспечения. Разработчики исправляют зарегистрированные случаи и публикуют обновленное приложение.
DevOps
DevOps – это культура программного обеспечения, которая разрушает традиционные границы команд разработки и эксплуатации. Благодаря DevOps разработчики и инженеры по эксплуатации больше не работают изолированно. Вместо этого они используют программные инструменты для улучшения совместной работы и быстрого выпуска обновлений программного обеспечения.
SRE по сравнению с DevOps
SRE – это практическая реализация DevOps. DevOps обеспечивает философскую основу того, что необходимо сделать для поддержания качества программного обеспечения в условиях все более сокращающихся сроков разработки. Проектирование надежности сайта дает ответы на вопрос о том, как добиться успеха DevOps. SRE гарантирует, что команда DevOps найдет правильный баланс между скоростью и стабильностью.
Каковы обязанности инженера по надежности сайта?
Инженер по надежности сайта – это ИТ-эксперт, который использует инструменты автоматизации для мониторинга и наблюдения за надежностью программного обеспечения в производственной среде. Они также имеют опыт поиска проблем в программном обеспечении и написании кодов для их устранения. Обычно это бывшие системные администраторы или инженеры по эксплуатации с хорошими навыками программирования. Ниже приведены некоторые обязанности по обеспечению надежности сайта.
Эксплуатация
Инженеры по надежности объекта тратят до половины своего времени на эксплуатационные работы. Сюда входит несколько задач, таких как:
- Меры реагирования на чрезвычайные ситуации
- Управление изменениями
- Управление ИТ-инфраструктурой
Инженеры используют инструменты SRE для автоматизации нескольких операционных задач и повышения эффективности работы команды.
Поддержка системы
Инженеры по надежности сайта тесно сотрудничают с командой разработчиков для создания новых функций и стабилизации производственных систем. Они создают процесс SRE для всей команды разработчиков программного обеспечения и готовы решить проблемы эскалации. Что еще более важно, группы по обеспечению надежности сайта предоставляют документированные процедуры в службу поддержки клиентов, чтобы помочь им эффективно рассматривать жалобы.
Совершенствование процессов
Инженеры по надежности сайта улучшают жизненный цикл разработки программного обеспечения, проводя проверки после инцидентов. Команда SRE документирует все проблемы с программным обеспечением и соответствующие решения в общей базе знаний. Это помогает команде разработчиков программного обеспечения эффективно реагировать на аналогичные проблемы в будущем.
Каковы распространенные инструменты проектирования надежности сайта?
Команды по проектированию надежности сайтов (SRE) используют различные типы инструментов для облегчения мониторинга, наблюдения и реагирования на инциденты.
Оркестратор контейнеров
Разработчики программного обеспечения используют оркестратор контейнеров для запуска контейнерных приложений на различных платформах. Контейнерные приложения хранят свои файлы кода и связанные с ними ресурсы в одном пакете, называемом контейнером. Например, разработчики программного обеспечения используют Эластичный сервис Amazon Kubernetes (Amazon EKS) для запуска и масштабирования облачных приложений.
Инструменты управления по вызову
Инструменты управления по вызову – это программное обеспечение, которое позволяет командам SRE выполнять планирование и организацию, а также управлять персоналом поддержки, который занимается сообщенными проблемами программного обеспечения. Команды SRE используют программное обеспечение, чтобы команда поддержки всегда была в режиме ожидания для своевременного получения оповещений о проблемах с программным обеспечением.
Инструменты реагирования на инциденты
Инструменты реагирования на инциденты обеспечивают четкий путь эскалации обнаруженных проблем программного обеспечения. Команды SRE используют инструменты реагирования на инциденты, чтобы классифицировать серьезность зарегистрированных случаев и оперативно реагировать на них. Инструменты также могут предоставлять отчеты об анализе после инцидента, чтобы предотвратить повторение подобных проблем.
Инструменты управления конфигурацией
Инструменты управления конфигурацией – это программное обеспечение, автоматизирующее рабочий процесс программного обеспечения. Команды SRE используют эти инструменты для устранения повторяющихся задач и повышения производительности. Например, инженеры по надежности сайтов используют AWS OpsWorks для автоматической настройки серверов в средах AWS и управления ими.
Как AWS помогает в проектировании надежности сайта?
Сервисы управления и администрирования AWS предоставляют команде разработчиков программного обеспечения необходимые инструменты для создания, масштабирования и развертывания распределенных приложений без снижения надежности системы. Команды инжиниринга надежной работы сайтов (SRE) используют различные сервисы управления AWS для мониторинга вычислительных ресурсов (AWS и локальных), а также управления ими.
- Каталог сервисов AWS позволяет командам SRE каталогизировать, быстро развертывать ИТ-сервисы и управлять ими.
- Менеджер систем AWS предоставляет специалистам по надежной работе сайтов центр управления для получения оперативной информации о вычислительных ресурсах программного обеспечения.
- AWS Proton – это автоматизированный инструмент для управления развертыванием контейнерных и бессерверных приложений.
Начните с проектирования надежности сайтов на AWS, создав аккаунт AWS уже сегодня.
Следующие шаги на AWS
Получите мгновенный доступ к уровню бесплатного пользования AWS.
Начните разработку с обеспечением надежности сайта в Консоли управления AWS.