TL; DR: сборка избыточная, модульная; проверка доступности; внимательно следить.
После осознания того, что попытка сжать любое объяснение может занять очень много времени, я запишу все сделанные мной наблюдения.
Ставить под сомнение предпосылку
Облачная система - это панацея
Даже если вам нужно полностью перейти на облачные вычисления, с ведущим облачным провайдером вам все равно нужно будет разработать приложение для обеспечения устойчивости. AWS может заменить вашу виртуальную машину, но ваше приложение должно быть способно перезагружаться, если оставить его в середине вычислений.
Мы не хотим использовать облачную систему, потому что x / y / z
Если вы не очень большая организация, вам лучше использовать облачные системы. В топ-3 облачных систем (AWS, MSFT, Google) работают тысячи инженеров, чтобы предоставить вам обещанные SLA и простую в управлении панель инструментов. На самом деле это хорошая сделка, чтобы использовать их вместо того, чтобы потратить ни копейки на этот дом.
Проблемы в определении объема и дизайне
Определение, количественная оценка, а затем постоянное измерение доступности службы является более сложной задачей, чем написание решения проблем доступности.
Определить и измерить «доступность» сложнее, чем ожидалось
Несколько заинтересованных сторон имеют разные взгляды на доступность, и то, что может произойти, - это определение, которое предпочитает человек с наивысшей зарплатой, которое превосходит другое определение. Иногда это правильное определение, но часто экосистема не построена вокруг измерения одного и того же, потому что это идеальное определение очень сложно измерить, не говоря уже о мониторинге в реальном времени. Если у вас есть определение доступности, которое не может быть отслежено в режиме реального времени, вы снова и снова обнаружите свой аналогичный проект с жутким сходством. Придерживайтесь чего-то, что имеет смысл, и того, что можно легко контролировать.
Люди недооценивают сложности всегда доступной системы.
Чтобы обратиться к слону в комнате, позвольте мне сказать следующее: «Ни одна мультикомпьютерная система не доступна на 100%, возможно, в будущем, но не с использованием современных технологий». Здесь под современной технологией я имею в виду нашу неспособность посылать сигналы быстрее скорости света и тому подобное. Все заядлые инженеры-компаньоны знают о распределенных вычислительных ограничениях , и большинство из них не будут упоминать об этом на совещаниях, опасаясь, что они будут выглядеть как новички. Я скажу, что компенсировать всех тех, кто не упоминает ограничения распределенных вычислений , сложно, но не всегда доверяют компьютерам .
Люди переоценивают свои возможности инженера
К сожалению, доступность попадает в категорию, где вы не знаете, чего хотите, но знаете, чего не хотите. Немного сложнее, когда категория «знаю, чего хочет», например, пользовательский интерфейс. Это требует немного опыта и много чтения, чтобы учиться на опыте других и еще немного.
Создание доступной системы с нуля
Удостоверьтесь, что вы расскажете всем командам по архитектуре и дизайну о правильном приоритете доступности в качестве системного требования.
Атрибуты системы, помогающие доступности
Следующие характеристики системы, как показали, способствовали доступности системы:
избыточность
Некоторые примеры этого: никогда не иметь только одну виртуальную машину за VIP или хранить только одну копию ваших данных. Это те вопросы, которые хороший IAAS облегчит для вас, но вам все равно придется принимать эти решения.
модульность
Модульный REST лучше, чем монолитная SOA. Даже модульный микросервис на самом деле более доступен, чем обычный HATEOS REST . Обоснование можно найти в обсуждении доходности в следующем разделе. Если вы выполняете пакетную обработку, то лучше выполнять пакетную обработку в разумных партиях за 10 с по сравнению с обработкой партии из 1 000 000.
упругость
"I am always angry"
- Hulk
Эластичная система всегда готова к восстановлению. Эта устойчивость применяется к таким случаям, как подтверждение ACK для записи только после записи на диск RAID, и, возможно, по крайней мере через два центра обработки данных. Другим последним трендом является использование бесконфликтных структур данных , где структура данных берет на себя ответственность за разрешение конфликтов при представлении в двух разных версиях. Система не может быть устойчивой в качестве запоздалой мысли, она должна быть предсказана и встроена. Отказ гарантирован в долгосрочной перспективе, поэтому мы всегда должны быть готовы с планом восстановления.
Журнал тропа
Технически это подтип устойчивости, но особенный, потому что он охватывает все возможности. Несмотря на все усилия, мы не сможем предсказать характер недоступности. Если возможно, ведите достаточный журнал системных действий, чтобы иметь возможность воспроизводить системные события. Это, с большими ручными затратами, позволит вам оправиться от непредвиденных ситуаций.
Атрибуты доступности
Неисчерпывающий список атрибутов top-of-mind высшего уровня «доступности». Для обсуждения давайте предположим, что пользователь задает вопрос: «Сколько товаров у меня в корзине?».
правильность
Вы должны дать максимально точный ответ или все нормально делать ошибки? Просто для справки: когда вы снимаете деньги в банкомате, это не гарантирует правильности. Если банк обнаружит, что совершил ошибку, он может отменить транзакции. Если ваша система производит простые числа, то, я думаю, вы можете постоянно получать правильные ответы.
Уступать
Пропустите этот пункт, если вы ответили всегда - правильно для предыдущего вопроса темы. Иногда ответы на вопросы не должны быть точными, например, сколько у меня друзей на Facebook сейчас? Но ожидается, что ответ будет на уровне +/- 1 все время. Когда вы производите ожидаемый результат, ваша доходность составляет 100.
консистенция
Ваш ответ может быть правильным в какой-то момент времени, но к тому времени, когда свет покинет экран и попадет в сетчатку наблюдателя, все может измениться. Это делает ваш ответ неверным? Нет, это просто делает это противоречивым. Большинство приложений в конечном итоге согласованы, но хитрость заключается в том, чтобы определить, какую модель согласованности будет предоставлять ваше приложение. Случайно ваше приложение может работать на одном компьютере, вы можете пропустить это прекрасное чтение теоремы CAP .
Стоимость
Многое зависит от того, каково общее влияние краткосрочных эффектов (потеря дохода) и долгосрочных последствий (плохая репутация, удержание клиентов). В зависимости от типа клиента (платный / бесплатный, повторный / уникальный, фиксированный) и доступности ресурсов, должны быть встроены различные уровни гарантии доступности.
На пути к улучшению доступности существующей системы
Оперативное управление отдельными машинами и сетью является настолько сложным, что я полагаю, что вы предоставили это облачному провайдеру или уже достаточно опытны, чтобы знать, что вы делаете. Я коснусь других тем при наличии. Для долгосрочной стратегии Define-Measure-Analyze-Control - это небесная пара, то, что я видел сам.
- Определите, что является «доступностью» для ваших заинтересованных сторон
- Как вы будете измерять то, что вы определили
- Анализ первопричин для выявления узких мест
- Задачи для улучшения
- Непрерывный мониторинг ( контроль ) системы
Причины недоступности
Поскольку мы договорились, что оперативное управление, которое будет охватывать любое управление физической инфраструктурой, должно осуществляться профессионалами, я коснусь других причин недоступности для полноты картины. Доступность IMO также должна включать отсутствие ожидаемого поведения, то есть если пользователю не показан ожидаемый опыт, что-то недоступно. Учитывая это широкое определение, следующие могут стать причиной недоступности: - ошибки в коде - случаи безопасности - проблемы с производительностью