TL; DR Разделительные среды (DEV, STG, PRD) на счет облака-поставщика ( AWS , Azure , GCP и т. Д.) Предпочтительно для того, чтобы иметь минимум до нулевого простоя при развертывании до производства. Это включает в себя отделение DEV от STG, даже если он распространен для управления Dev и STG на том же счете.
Пролог
Изображение крышки подразумевает, что в сравнении произойдет единая учетная запись, я оставляю его из природы, поскольку есть слишком много причин, чтобы избежать такой вещи. Изображение также подразумевает, что это ужасно.
В этом блоге-посте я поделюсь трудностями, с которыми я столкнулся во время развертывания к производству при использовании двух учетных записей Dev + STG и PRD
Отказ Эти трудности могут быть избежать, отделяя все среды на разные счета Dev, STG и PRD
Отказ
Допущения
- Ради простоты, отныне я ссылаюсь на облачный поставщик как AWS Хотя это отношение к другим облачным провайдерам.
- Все Среда — это развернут В том же регионе Поскольку мы не хотим выяснить, что в Ирландии доступен какой-то облачный сервис, но не в Лондоне.
Без дальнейшего ADO, Dev + STG и PRD
против dev, stg и prd
# 1 Сервисные квоты сюрпризы
Предположим, что каждая среда включает в себя VPC и одну виртуальную машину (экземпляр EC2). Виртуальная машина развернута в публичной подсети и имеет общедоступный статический IP (EIP — упругий IP).
Квота по умолчанию EIP 5 в регионе Отказ Наше приложение выросло больше, и вдруг мы попали в предел максимальных EIP. В Dev + STG
Учет, мы идем к Запрашивая рост квоты Страница и поднимите предел от 5 до 20 («на всякий случай»). Это может занять минуты до часа для квоты для обновления; Обычно это вопрос минут (тебе повезет?)
Пришло время развернуть из dev
к СТГ
, и так как мы знаем, что мы делаем, мы используем инфраструктуру в качестве кода (IAC) для управления ресурсами нашей среды, в частности, мы используем Террафом Отказ
Dev + STG (тот же аккаунт)
Мы запускаем CI/CD-трубопровод и план от dev
к СТГ
; Все хорошо, поэтому мы применяем изменения в СТГ
и … Это работало как ожидалось. Теперь пришло время планировать от СТГ
к преступность
И если план в порядке, то применяя изменения в PRD
полностью безопасен, верно? Неправильно Отказ Terraform не принимает во внимание квоты служб, поэтому, даже если план пройдет, применяя изменения в PRD
приведет к неудачному развертыванию к вашему PRD
окружающая обстановка. Это потому, что «мы» забыли поднять квоту службы в преступность
Итак, теперь мы должны войти в PRD-счет и попросить увеличить квоту, молиться, чтобы она не займет много времени, и повторно развернуть преступность
.
dev и stg (отдельные аккаунты)
Перемотание, приложение стало больше, и мы попали в предел EIP. В dev
Учетная запись, мы запрашиваем рост квоты и так далее. Теперь пришло время планировать от дев
к СТГ
; Всего идет хорошо, поэтому мы применяем изменения в СТГ
и бум 💥, мы получаем ошибку. К счастью, это произошло в СТГ
а не в преступность
Итак, теперь мы знаем, что мы должны запросить рост квоты перед развертыванием до преступность
. Мы даже получили доказательство того, что в журналах сервиса CI/CD.
# 2 Политики репозитория радости О, радость
Давайте поговорим о Эластичный реестр контейнера (ECR) ; Обычно я храним все изображения Docker на одной учетной записи, а также доступа к всем другим аккаунтам. Некоторые компании предпочитают хранить изображения в DEV-счет (или DEV + STG-счет), некоторые в PRD-счет; В любом случае, он требует совместного использования изображений между учетными записями.
Изображения дифференцируются тегами, такие как Приложение: 1.0.1.2383-dev
и Приложение: 1.0.1.2383-PRD
. Вы можете увидеть здесь, что я опущенных СТГ
потому что PRD
Изображения развернуты до stg
прежде чем они будут развернуты на преступность
; Мы не строим что-то новое для преступность
. Это не обязательно, а некоторые приложения могут потребовать определенной сборки для преступность
Хотя это не рекомендуется.
Dev + STG (тот же аккаунт)
Работа на Dev + STG
отлично, потому что нет накладных расходов с Политики репозитория Поскольку они на одном и том же счете, поэтому просто установите его один раз для них обоих. Развертывание контейнеров в СТГ
работает как ожидалось без сюрпризов. Сроки изготовления! Ты угадал; это терпит неудачу, потому что преступность
Учетная запись не может получить доступ к изображениям, если вы не добавите политику репозитории, которая его позволяет.
dev и stg (отдельные аккаунты)
Я горжусь тобой. Вы догадались снова, снова; Та же проблема произойдет, когда мы развертываем СТГ
заставляя нас добавить соответствующую политику репозитории, чтобы позволить доступу от СТГ
и от преступность
.
Мы люди люди
Забыть запросить рост квоты в PRD
это то, что может случиться с кем угодно, так почему принять шанс?
«Я человек. Я был разработан, чтобы сделать ошибки. Работа команды DEVOPS состоит в том, чтобы разработать систему, которая смягчает риск от этих ошибок максимально возможным (честен здесь, ни одна система не является идиоттеком). « (мной)
Развертывание до СТГ
Учетная запись, отделенная от dev
Предоставляет оптимальные условия для избежания непрерывных исключений при развертывании к PRD
, что именно то, что мы стремимся — Нет сюрпризов в производстве .
Но затраты?!
Важно учитывать расходы на разделительную среду на разные счета. Например, если вы используете AWS Web Application Firewall (WAF) , можно прикрепить брандмауэр к ресурсам обоих дев
и СТГ
Отказ Разделение dev
и СТГ
На разные учетные записи означает, что вам необходимо создать ресурс WAF в обеих учетных записях, следовательно, оплатить его «дважды».
Все дело доходит до вопроса о том, что будет стоить больше, потенциально уплачивающих для ресурсов, которые могли бы поделиться между dev
и СТГ
или иметь непредсказуемые развертывания к PRD
это может привести к нежелательным простоям времени. Как только вы ответите на этот вопрос, вы будете знать, если вы готовы отделить stg
от дев
.
Бонусная точка — OPS аккаунт
Если вы получили это далеко, это значит, что вы на самом деле в нем, поэтому, если вы хотите сделать его еще дальше, лучше всего создать еще одну учетную запись для «операций» (OPS); Некоторые могут назвать это «управлением» (MGMT).
Некоторые компании используют свой Dev-счет как OPS-счет. Это не так уж плохо, хотя это немного упустить точку зрения, которые влияют на всю среду и счета, в DEV-счет.
Вот основные причины иметь отдельный OPS-счет:
- DNS : Легко управлять всеми записями DNS на одном аккаунте. Делать это в Dev-счет в заблуждение, поскольку DNS Records актуальны для всех учетных записей и сред поэтому использование учетной записи OPS имеет больше смысла
- CI/CD : Самоустановленные услуги CI/CD («бегуны») Развертывание всех условий Так что это должно быть на отдельном счете
- Впутник : Если у вас есть VPN-соединение от вашей предельной среды к ресурсам облачных поставщиков, то облачные ресурсы VPN-соединения должны быть выполнены на отдельной учетной записи.
- «Топ/централизованный аккаунт» : Некоторые поставщики облака предоставляют управляемые услуги для обработки всех учетных записей в одном месте. Управляю, я ссылаюсь на выставление счетов, обеспечению политики безопасности на счетах, стандартизированной Конвенции об именах на счетах и многое другое. Примеры этих типов услуг: AWS Организации , Azure DevOps , GCP Resource Manager Отказ Использование этих услуг полезно для достижения Hipaa / GDPR Правила, где «обеспечение безопасности на счетах» жизненно важно.
использованная литература
- Emojis на прикрытии фото — Hackerboy Emojis.
- AWS — почему я должен настроить среду Multi-счет AWS?
- Azure — Организовать и управлять несколькими подписками Azure
- GCP — лучшие практики для предприятий организаций
Окончательные слова
И если вы получили это далеко, то я думаю, вы узнали что-то новое сегодня:) Примеры, представленные в этом блоге, являются лишь верхушкой айсберга. Есть еще много случаев, когда разделяющие среды на разные счета уменьшают количество белых волос, которые вы растут каждый день; Я уверен, что это было научно доказано где-то.
Оригинал: «https://dev.to/unfor19/the-importance-of-separated-environments-1gja»