Рубрики
Uncategorized

Как спать ночью, имея облачный сервис: общая архитектура

Вы можете увидеть оригинал / последнее, на сегодняшний день в моем блоге. Над моей работе в разных масштабах серва … Теги с архитектурой, дежопами, распределенными системами.

Вы можете увидеть оригинал/последние До настоящего времени пост в моем блоге Отказ

Над моей работе в разных масштабах услуг, я заметил, что в некоторых из этих услуг наблюдается общий шаблон, который облегчает подход и заставить меньше головных болей инженерам, которые обрабатывают их. Когда мы имеем дело с миллионами пользователей, делая запросы все время по всему миру. Я отметил, что есть несколько вещей, которые помогут многим для людей спать по ночам. Это краткое руководство о том, как Будьте веб-масштабирования [MEME] Отказ

Это не полный список, но то, что я видел, на самом деле Помогите или помог мне в прошлом.

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

Инфраструктура как код.

Первая часть геронтирования спят в имении инфраструктуры в качестве кода. Это означает, что у вас есть способ развертывания всей вашей инфраструктуры. Звучит воображает, но на самом деле мы говорим в коде:

Deploy 100 VMs
- with ubuntu
- each one with 2GB Ram
- they'll have this code
- with these parameters

И вы можете отслеживать изменения в инфраструктуре и быстро вернуться через контроль источника.

Теперь модернист во мне скажет: «Мы можем использовать Kubernetes/Docker, чтобы сделать все в этом списке! » Вы правы, но на данный момент я буду ошибаться на стороне простого объяснения в этом блоге.

Если вы заинтересованы в этом, вы можете проверить Шеф-повар , Марионетка или Террафор

Непрерывная интеграция/Доставка

Наличие сборки, и тестовый проход с каждым из ваших запросов на тягу необходима для создания масштабируемого обслуживания. Даже если TestPass является Basic, он по крайней мере гарантирует, что код, который вы развертываете компилирование.

Что вы должны ответить каждый раз, когда вы делаете этот шаг, относится к вопросу Моя сборка собирается компилировать, пропустите тесты, которые я настроил, и это действительно? , Это может показаться низким баром, но это ловит множество проблем, которые вы бы не представляли.

Ничего более красивого, что видит эти галочки.

Для этой технологии вы можете проверить Гадость , Circleci или Jenkins.

Балансировщики нагрузки

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

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

Обычно балансировщики нагрузки настроены в вашем собственном облаке, но если вы знаете, что некоторые хорошие, оставьте их ниже в комментариях.

Rayids, корреляции или UUID для запросов.

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

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

Как вы можете видеть на изображении выше, пользователь делает запрос на систему A, а затем переговаривает с B, B разговоры C, экономит X, а затем возвращается к A.

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

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

Централизованная регистрация

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

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

Мониторинг агентов

Ну, теперь, когда ваш сервис развернут, вы должны убедиться, что он остается в курсе! Лучший способ сделать это, чтобы иметь некоторые Агенты Бег против ваша служба и проверка, и что можно сделать общие операции.

На этом шаге вы должны ответить: Является ли сборка, которую я развернул здоровым и работает нормально?

Я лично рекомендую Почтальон Для небольших до средних проектов, которые необходимо контролировать и задокументировать в своих API. Но в целом вы хотите убедиться, что у вас есть способ узнать, если ваш сервис снизится и обеспечивает своевременные оповещения.

Автоматическое автоскализация на основе нагрузки

Этот простой. Если у вас есть 1 виртуальные запросы VM, и он приближается к> 80% памяти, вы можете либо вырастить виртуальную машину, либо добавить больше виртуальных машин для вашего кластера. Наличие этих операций, сделанных автоматически, отлично подходит для упругих под нагрузкой. Но вы всегда должны быть осторожны, сколько денег вы проводите и устанавливаете разумные пределы.

Вы можете настроить автоматическую масштабирование в большинстве облачных служб, через больше машин, виртуальных машин или более мощных машин.

Система эксперимента

Имея способ проверить вещи до 1% ваших пользователей в течение часа, это хороший способ безопасно развертывать изменения. Вы видели такие системы в действии. Facebook даст вам другой цвет или изменить размер шрифта, чтобы увидеть, если это больше приятнее. Это также называется тестированием AB.

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

Это на самом деле трудно, несколько сложно реализовать, вам, вероятно, нужно немного больше ресурсов для этого. Итак, для небольшой или средней компании, это будет трудно подтолкнуть с этим.

Сине-зеленые развертывания

Это то, что я называю «Эрланг» способ развертывания. Когда Erlang начал использовать более широко распространенные, обратно, когда телефонные компании объединяли людей вместе, существует точка, когда программные распределительные щиты использовались для маршрутизации PhoneCalls. Основная забота о программном обеспечении в этих распределительных щитах не было никогда не бросать вызовы, одновременно обновляя систему. Erlang имеет красивый способ загрузки модуля, не падая предыдущего.

Этот шаг зависит от у вас балансировщик нагрузки. Представьте, что у вас есть определенная версия N вашего программного обеспечения, то вы хотите развернуть версию N + 1. Вы мог бы Просто остановите сервис и разверните следующую версию «Теорией» в авторитетном времени для ваших пользователей и получите несколько простоя, но в целом, скажем, у вас есть Действительно строгие слабы. A 4 9 означает, что вы можете Только иметь 6 минут в год.

Если вы действительно хотите добиться этого, вам нужно одновременно иметь два развертывания, тот, который вы имеете прямо сейчас (N) и вашу следующую версию (N + 1). Вы указываете на балансировку нагрузки, чтобы перенаправить процент от трафика на новую версию (N + 1), а вы активно монилируете регрессию.

Здесь у нас есть наше зеленое развертывание n, что здорово! Мы пытаемся перейти к следующей версии этого развертывания.

Мы сначала отправляем действительно небольшой тест, чтобы увидеть, работает ли наше развертывание N + 1 с небольшим движением трафика.

Наконец, у нас есть набор автоматизированных проверок, которые мы в конечном итоге проверяем, пока наш развертывание не будет завершено. Если вы хотите быть Действительно действительно Осторожно, вы также можете сохранить свое развертывание «навсегда» для быстрого отката, учитывая плохое вероятность.

Если вы хотите даже пойти на более глубокий уровень, у вас есть все в сине-зеленом развертывании.

Обнаружение аномалии и автоматические смягчения.

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

С обнаружением аномалии вы начнете смотрите в некоторые «рассказывающие» услуги HTE, будь то шип в процессоре, сообщите вам, когда ваш жесткий диск выйдет из строя, или SPIKE в запросе # означает, что вам нужно расширить. Эти виды статистической идеи позволят вашу услугу быть активными.

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

Это требует действительно хорошей системы, или ML ML ML, которая затем делает его более интересным в том смысле, что инвестиции действительно высоки, а возвращение высока на массивных масштабах.

Я, конечно, не являюсь экспертом в любом из них, и я начинаю свой кариер, но этот список приоритетов на этапы спасли бы мне много головных болей в прошлом.

Мне действительно интересно услышать от вас: что бы вы добавили в этот список? Пожалуйста, сделайте комментарий.

Эта статья является открытым исходным кодом, не стесняйтесь сделать PR в Github Отказ

Оригинал: «https://dev.to/danielsada/how-to-sleep-at-night-having-a-cloud-service-common-architecture-do-s-3di»