Рубрики
Uncategorized

Книжный обзор: освободить его! Дизайн и развертывание программного обеспечения для производства

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

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

Давайте перейдем на небольшой выбор на вынос.

Очки интеграции

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

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

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

Обращение сбой

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

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

Чтобы убедиться, что ваши компоненты устойчивы к неудаче в других компонентах, вы можете (и должны!) Тестируйте именно это. Популяризирован Netflix, Хаос Инжиниринг Является ли принцип регулярно удаления или отключения частей системы, чтобы проверить, что она ведет себя хорошо, без этой части. Это может быть выключение (виртуальная) машины, изменяющее правила брандмауэра, чтобы заблокировать удельный трафик, или, возможно, даже вытягивая пробку на целый центр обработки данных. Делая это обычная вещь, вам придется убедиться, что ваши компоненты справляются с этим хорошо, и вам не будет поймано охранника, когда это происходит по-настоящему.

Slo’s and sla’s

Обычно, чтобы сделать то, что вы хотите, чтобы ваша система достигла относительно доступности и производительности, очень специфичной. Чаще всего это делается путем согласования объективного уровня обслуживания (SLO). Например, вы можете согласиться с тем 99% запросов на поиск клиентов должны быть обработаны менее чем за 1 секунду Отказ Если не встречаться с этой целью, имеет последствия (например, возврат или тонкий), эти последствия затем заключены в соглашении об уровне обслуживания (SLA) вместе с соответствующими словами.

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

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

Теперь вы могли бы определить реалистичные SLO, глядя на все точки интеграции вашего компонента, а также собственную ожидаемую доступность на основе аппаратного обеспечения и подключения. Тем не менее, это имеет больше смысла пойти на противоположный подход, сначала определяя SLO, а затем вносить изменения (при необходимости) в вашу инфраструктуру, чтобы соответствовать этому SLO. Это подход, также описанный в Книга Google на инженерии надежности сайта , который подчеркивает не «выбирать цель на основе текущей производительности».

Вывод

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

Это одна из самых полезных книг, которые я прочитал, я бы определенно порекомендовал вас Проверьте это Действительно

Оригинал: «https://dev.to/raoulmeyer/book-review-release-it-design-and-deploy-production-ready-software-2b27»