Многие люди, которые являются новичками в операциях, подходят к вещам с абсолютистским мышлением. Они считают вещи правильными, неправильными, безопасными или небезопасными. В действительности, операции всех типов уравновешивают противоположные силы. В конце концов, самый безопасный веб -сайт в мире не будет доступен ни для кого и, конечно, не будет иметь пользователей.
Имея это в виду, я перевернул типичный формат для разговора «Как/где я запускаю свои вещи» на его стороне. Вместо того, чтобы освещать каждый продукт и плюсы и минусы его использования, я организовал свои разговоры около семи вопросов. Я выбрал вопросы, основанные на личном опыте, взяв приложения для производства.
Это может быть не подходящие вопросы, которые для использования, но я получил отзывы о том, что формат вопросов помог людям понять компромиссы и подготовил их для принятия архитектурных решений с большей уверенностью.
1. Каковы мои приоритеты?
Самый важный вопрос — выяснить ваши приоритеты. Операции-это все о компромиссах. Из -за этого жизненно важно, чтобы вы могли четко изложить свои цели, что важно, и то, о чем вас не беспокоит. Приоритеты могут быть практическими вопросами, такими как «экономия денег» или «надежность». Они также могут быть более основанными на сценариях, например, «Поддержите наш раунд финансирования серии B, позволяя инвесторам увидеть наше доказательство концепции». В качестве альтернативы, возможно, ваш приоритет: «Получите ценные отзывы от ограниченного набора дружественных бета -пользователей». В большинстве случаев у вас будет несколько приоритетов, и это может быть полезно для примерно складывания их.
Как только у вас будут свои приоритеты, подумайте о том, какие у них есть последствия. Например, если вы сосредоточены на экономии денег, вы, возможно, не захотите платить дополнительную плату за высоко управляемую систему платформы как услуги. Если вы поддерживаете бета -пользователи или раунды инвесторов, может иметь решающее значение, чтобы ваша система сократилась до нуля, поэтому вы не платите, когда никто не смотрит на ваше приложение. Это просто примеры. Есть много других способов, которыми приоритеты могут влиять на решения, которые вы принимаете.
2. Как выглядит моя нагрузка?
Форма вашей нагрузки также может оказать глубокое влияние на то, какие варианты вычислений и даже какие архитектуры имеют смысл для вашего приложения. Нагрузка для многих приложений следует за рабочим днем. Либо они приложения, которые люди используют в течение рабочего дня, либо приложения, которые люди используют вне работы. В обоих этих случаях необходима возможность эффективно и динамически масштабироваться по мере изменения нагрузки. В некоторых приложениях есть нагрузки. Они могут увидеть несколько сотен тысяч запросов за несколько минут, а затем всего за минуту в течение нескольких часов. Другие нагрузки требуют большого количества партийной обработки по регулярному графику, но в другое время имеют более скромные вычислительные требования.
Большинство облачных провайдеров позволяют автоматически масштабировать (и, в меньшей степени, автоматическое зацепиние) вашего приложения для адаптации к текущей нагрузке. При использовании AutoScaling вы обычно указываете минимальное количество экземпляров и максимальное количество экземпляров. Лично я установил максимальное количество экземпляров в 5x свою прогнозируемую нагрузку. Я использую 5x, потому что ваши веб -серверы Frontend — это не единственное, что должно масштабироваться. Если я приближусь к этой 5 -кратной верхней границе, я должен дважды проверить, что другие части системы, такие как база данных, и мой почтовый. хорошо. Кроме того, в 5x у меня обычно достаточно предупреждения о том, что мы приближаемся к этому ограничению, чтобы регулировать его дальше вверх, если все идет хорошо.
Не все выборы выбора позволяют масштабировать до нуля. Если вы знаете, что у вас иногда не будет трафика, масштабирование до нуля может быть важным способом сэкономить деньги. Bursty Loads лучше всего обслуживаться опцией вычисления без сервера, такой как Google Cloud Functions или AWS Lambda. Кроме того, пакетная обработка обычно дешевле с использованием опции дисконтированного вычисления, такой как превентивные виртуальные машины. Вы также можете сэкономить деньги, выполняя рабочие места, которые не пострадают от задержки в менее дорогих регионах (если разрешены требования к местности данных). Есть много способов, которыми нагрузка может повлиять на ваш выбор. Ваши приоритеты должны помочь, какую вещь сейчас расставляйте приоритеты, чтобы вы могли выбрать продукты, которые имеют смысл для вашего приложения.
3. Какие навыки у меня есть?
Это вопрос, о котором некоторые люди сознательно не думают, но всегда возникает, когда я разговариваю с успешными предпринимателями. Подумайте о том, какие языки и рамки вашей команды уже знают. У кого -нибудь есть опыт настройки, поддержания и защиты виртуальных машин? Какие продукты вам больше всего удобны?
Вам не обязательно придерживаться того, что вы знаете; Иногда новый проект — отличный шанс узнать что -то новое. Если вы выйдете за пределы своей зоны комфорта, все может занять больше времени. Возможно, вы захотите найти места, где вы можете получить помощь или поддержку в режиме реального времени, прежде чем вы решите пойти с тем, что вам еще не удобно.
Иногда люди стремятся использовать конкретную технологию только потому, что они слышали об этом на подкасте или в конференции. Это не всегда неверный выбор, но прыжки в незнакомую технологию, возможно, не лучше всего использовать ваше время и деньги. В качестве примера я вижу много людей в наши дни, которые требуют использования контейнеров. Контейнеры потрясающие. Мне очень нравится GKE. Но контейнеры добавляют слой кодекса и сложности в ваши развертывания. Если вам не совсем удобно со своим стеком за пределами контейнера, вам нужно знать, что отладка его внутри контейнера сложнее.
4. Какой счастливый путь?
Если вы не знакомы с термином «счастливый путь», это означает, что путь, который вы хотите, пользователи пошли. Для электронной коммерции это, вероятно, является пути покупки. Для социального приложения, которое может означать добавление друзей или отправку сообщений. Хороший показатель, чтобы выяснить, каковы ваш счастливый путь или пути: «Если это уходит, я должен быть на страже в 2 часа ночи?»
После того, как вы определили свой счастливый путь, вам нужно инструмент. Большинство людей знают, что используют инструмент мониторинга рабочих времен, чтобы гарантировать, что их сайт все еще рендеринг. В идеале этот монитор должен убедиться, что на этой странице есть некоторый контент, а не только, что страница возвращает код состояния 2xx. Вы также должны подумать о том, что другие показатели могут показать, что что -то не так. Некоторые примеры: количество успешных покупок, количество входа в систему, ошибки номера 4xx и среднее время нагрузки для критических страниц. Когда вы нашли эти другие индикаторы, также инструментаруйте их. Возможно, у них не все имеют уровень важности «страница меня в 2 часа ночи», но эти другие показатели могут обнаружить ошибки, которые простые проверки времени не могут найти.
Для одного приложения, над которым я работал, у меня была приборная панель, показывающая количество успешных платежей на недельном графике. За исключением праздничных периодов, две линии претерпели вместе. Однажды мы заметили, что линия «Сегодня» была намного ниже линии «на прошлой неделе». Мы расследовали и нашли проблему с нашей обработкой платежей. Поскольку оплата была одним из счастливых путей, которые мы контролировали, мы смогли быстро решить эту проблему. Мы бы в конечном итоге нашли проблему, вероятно, когда клиент сообщил об этом. Размещая аналитику мониторинга и приложений заранее, мы слышали об этом до того, как пострадали слишком много клиентов.
5. Где грубые пятна?
После того, как вы придали свой счастливый путь, вам нужно приказывать грубые пятна. Под грубыми пятнами я имею в виду части вашего приложения, что у вас не было возможности тщательно проверить. Или места, где вы интегрируете с услугами, которые не чувствуют себя очень надежными. Иногда грубые пятна — это только те места, которые, кажется, ломаются чаще всего.
Мониторинг этих пятен может быть сложным. Часто они терпят неудачу достаточно доброкачественными способами, чтобы, если вы не будете осторожны, вы вызотите усталость от предупреждения. Я обычно использую подход, сосредоточенный вокруг вопроса: «Ухудшается ли?» Я установлю панели мониторинга, показывающую задержку 50 -го процентиля и, возможно, установил бы предупреждения о 5 -м процентиле, значительно превышающей разумные. Я также настроил аналитику приложений, которые позволяют мне покопаться в запросах и посмотреть, как выглядит стек вызовов или как запрос распространяется через серию микросервисов. Иногда эта более подробная информация может помочь мне исправить проблемы с кодом и сгладить это грубое место.
6. Какова моя вина терпимость?
Каждый раз, когда я упоминаю терпимость к ошибкам в разговоре, некоторые люди становятся немного напряженными. Большинство людей хотят, чтобы их приложение было постоянно, и никогда не имели никаких ошибок. Я понял. Успех чувствует себя потрясающе. Разговор о бюджетах ошибок с вашим боссом или генеральным директором может быть сложным. Но специалисты по технологиям знают, что услуги всегда не реалистичны. Даже если ваш сервис идеальный, стихийные бедствия и Акулы кусают подводные кабели может вызвать ошибки.
Поэтому, прежде чем начать жить, подумайте о том, сколько времени в простоях и какое время простоя вы можете терпеть. Небольшое количество простоя в середине ночи в порядке? Можно ли взять время от простования в середине дня, чтобы применить критические патчи на уровне ОС? Когда Heartbleed Получилось, многие операционные люди должны были объяснить деловой стороне своей компании, почему в результате обстоятельств был небольшой перерыв в середине дня. Выбор с лидерами бизнеса о том, что является приемлемым бюджетом ошибок, и некоторые основные руководящие принципы для того, как выглядят критические ошибки и проблемы.
Если бюджет ошибок, с которым вы работаете, невелик, вам нужно убедиться, что ваша архитектура является устойчивой и гибкой. Вы можете выбрать технологии, которые делают такие вещи, как Канарское развертывание легкий. Вы, вероятно, захотите автоматические откаты, и вам нужно регулярно проверять процедуру отката. Развертывание в нескольких регионах может быть разумным. Более того, вам нужно придумать и проверить план аварийного восстановления.
Высокая доступность/высокая устойчивость не является неправильным выбором, но для правильного выполнения этого требуется много передовой работы. Эта работа делает вас подготовленными, когда вещи неизбежно пойдут не так. Вы можете сократить некоторые подготовительные работы, выбрав технологии, архитектуры и инструменты, созданные для поддержки ваших целей. Нет ничего плохого в том, чтобы решить, что, основываясь на ваших приоритетах, случайное время простоя не имеет большого значения. Как только ваши приоритеты изменится, вы можете вернуться к этому решению и внести необходимые изменения.
7. Достаточно ли в безопасности мои секреты?
Последний вопрос — это напоминание о проверке вашего кода, журналов и других мест, чтобы гарантировать, что ваши секреты будут секретными. Под секретами я в основном имею в виду ключи API и информацию о клиентах. Большинство людей знают, что не регистрируются свои ключи API, но люди делают это все время. Подумайте о том, какого уровня безопасности достаточно для ваших секретов приложения. Некоторым людям нужен такой инструмент, как Hashicorp Vault или Google KMS при поддержке шифрования и поворота ключей. Другие пользователи — это контент, гарантируя, что их клавиши API находятся в переменных среды на производственных серверах и не зарегистрированы в источнике. Есть много способов обработки секретов; Пожалуйста, убедитесь, что вы обращаетесь с ними целенаправленно после обдумывания рисков и вариантов использования.
Вы также являетесь управляющим информацией вашего клиента. Удивительно легко для номеров кредитных карт, имен пользователей и паролей, чтобы в конечном итоге в журналах, внутренних сообщениях об ошибках и оповещениях. Было несколько громких случаев такого типа, происходящих даже в крупных компаниях с аудитом безопасности. Наиболее распространенным виновником, который я видел, является регистрация пост-тел либо в журнале приложений, системном журнале или сторонней службе журнала. Я также видел, как компании используют загрузки производственной базы данных для локального тестирования. Только не делай этого. Запугивайте данные каким-то необратимым способом или создайте новую тестовую базу данных. Риск жесткого диска или ноутбука скомпрометирована намного выше, чем понимают большинство из нас. Также постоянно следите за своим приложением, журналами и другими ресурсами, чтобы гарантировать, что секреты не попадают в места, которые они не принадлежат. Многие из хорошо известных ущерб данным были связаны с исправлением ошибок или другими модификациями через спустя годы после первоначального запуска.
Оригинал: «https://dev.to/thagomizer/ask-these-questions-before-going-to-prod-5clc»