Автор оригинала: FreeCodeCamp Community Member.
Очень Джаред
Уроки, извлеченные от 2 лет работы приложения производственного узла на платформе AWS
Спереди
Давайте быть честным, Калькулятор AWS ценообразование сбивает с толку. Часть этого из-за а ля карт Способ платежей AWS предлагает. Это затрудняет трудную указать хорошую цитату клиенту. Надеюсь, что эта статья может предоставить некоторое освещение о том, насколько он стоит запускать приложение, а также некоторые способы снижения стоимости.
Реальная стоимость запуска приложения
Я руководил веб-приложением узла на ELB в течение двух лет. Первый год был отличным, они дали вам все бесплатно (в основном)! После этого вы должны начать платить за вещи, такие как экземпляры EC2.
Эта статья будет сосредоточиться на моих конкретных требованиях приложений, которое является приложением Express USE, которое размещено на эластичном Beanstalk.
Для получения полной информации о сборке см. В моей предыдущей статье здесь Отказ
Авария
Это то, что я в настоящее время бегаю на AWS:
Одиночная среда EBS (U.S. Западный регион):
- 1 классический балансировщик нагрузки
- 1 T2.Micro EC2 экземпляр
- Ведро S3, которое удерживает изображения (7 ГБ во время написания)
- 1 маршрут 53 размещенной зоны
$ 18 (Балансировщик нагрузки) + $ 5 (EC2 с RI) + $ 0,50 (Маршрут 53) + $ 0,17 (S3) + $ 0,21 (Данные $ 25 в месяц.
Кроме того, я размещаю MongoDB в другом месте, поэтому, если вы планируете разместить DB на AWS, это будет понести дополнительные расходы. Давайте сломаем различные расходы.
Балансировщик нагрузки
Это самая дорогая часть стека. Это стоит:
- 0,025 $ за классический балансировщик нагрузки-часа (или частичный час)
- 0,008 долл. США за ГБ данных, обработанные классическим балансировщиком нагрузки
Это означает, что если вы запускаете свое приложение 24 часа в сутки, он будет стоить примерно 18 долларов США + сборы данных, каждый месяц.
Экземпляр EC2
Экземпляры EC2 по требованию дороже, чем они должны быть. Чтобы сэкономить здесь немного денег, обратитесь к разделу ниже о зарезервированных экземплярах EC2. Если вам интересно, это будет стоить $ 8,40, чтобы запускать тот же тип экземпляра EC2, как упоминалось выше, по запросу.
S3
У меня есть пара S3 ведра. Один для моей статической домашней страницы, один для проведения изображений и один для проведения версии приложения. Насколько я знаю, ELB автоматически создает один для управления версиями приложений.
S3 довольно дешевый, поэтому я не слишком беспокоюсь о том, чтобы попытаться никель и нить, но есть способы сэкономить деньги через их Ледник система.
База данных
Я принимаю свой Mongodb DB в MLAB, который скоро уходит. Итак, я буду обновлять это, когда разобрался, насколько это на самом деле будет стоить, когда я вынужден перейти к атласу Монго.
Зарезервированные экземпляры EC2
Давайте поговорим о зарезервированных экземплярах (RI). Безысканная биллинговая система Amazon – самая запутанная часть о том, что что-то наведет на AWS. Зарезервированные экземпляры могут облегчить некоторые из стоимости, но слишком запутаны.
После многих чтений и разговоров с обслуживанием клиентов AWS, это то, что я сортирую.
Во-первых, есть два разных способа, которыми вы можете забронировать, где RI: региональная зона и доступность. Региональные средства, это специфично для одного из основных регионов, например,. США-Запад-2 (Орегон). Зона доступности (AZ) специфична для зоны в этой области, например, США-Запад-2 А (Орегон).
Я купил RI в США-West-2, и он был автоматически применен к моему экземпляру, работающим в этой области. Если вы покупаете один в AZ, он будет применяться только к конкретному AZ, например, US-WEST-2A, так что если Elb вращается в экземпляр EC2 в US-WEST2B, вам не повезло.
Кроме того, есть «стандартные» и «конвертируемые» виды RIS. Я не на 100% на то, что это значит, но от того, что я понимаю, кабриолет более гибкий на том, что вы можете поменять его, но дороже.
Наконец, есть три типов типов платежных типов. Это довольно просто, вы либо ничего не платите, некоторые или все, когда вы забронируете экземпляр. Нет никаких затрат, что я могу видеть. Однако в качестве нового аккаунта, вы, скорее всего, не сможете не сделать без сна.
На поддержку AWS:
Вы можете запустить эту ошибку, если вы попытаетесь покупке и купить без выше.
Предостережение: по какой-либо причине требуется немного для зарезервированного экземпляра к «Kick-In», что означает, что первый день месяца всегда стоит больше. Я не уверен, почему это, но если я его разоблачусь, я буду обновлять это. Смотрите график ниже:
Болевые точки
Это просто некоторые незначительные жалобы на общие EBS, которые я полагал, я бы включил в качестве добавления к моей оригинальной статье, если вам интересно.
Автоматические обновления не на самом деле это автоматические
Версии узла не выключаются от версии для версии.
Обратитесь к наступлению ниже на том, как мне управлять изменениями версий Linux, когда узел не работает.
Бежать более одной среды
Наличие среды развития и производство в то же время просты, но это дорого. Это удваивает это на самом деле. Поэтому я обычно разрушаю среду Dev, как только я закончу с ней.
Документация ужасная
AWS слишком большой для собственного хорошего. Это часть того, почему я пишу это. Было очень трудно найти ответы на мои особые потребности.
Как мне управлять обновлениями
У меня есть два отдельных экземпляра моего REPO GIT REPO на моем ноутбуке. У меня есть один для разработки и один для производства.
Я использую Dev Environment To, ну, разрабатывать! Довольно просто. Я использую производственную папку исключительно с целью вытягивания обновлений от GIT Master Friendle, запуская мою конфигурацию WebPack и развертывание на производственный сервер.
Причина, по которой они отдельные, это потому, что я могу поддерживать отдельных конфигураций упругих бобовых бобов и не приходится беспокоиться о развертывании к неправильному месту.
Обновления, не требующие изменения среды Linux
Для обновлений, не требующих никаких изменений в среде Linux, это так же просто, как работает EB Развертывает в терминале. Это удивительно и занимает около 10 минут, чтобы размножаться.
Обновления, требующие изменения среды Linux
Изредка, вы захотите обновить среду Linux, но тоже не смогут не в состоянии, потому что AWS чертовски глупы (Я уверен, что есть причина) и позволяет только определенные версии узла на каждом сборке Linux. Для этого это немного сложнее, но управляемое.
- Нажмите на производственную конфигурацию под новым env. В последний раз я сделал это, я только что создал новый экземпляр через
EB Создать PROD-1Отказ Это сделает то, что нужно и развернуть ваше приложение к новой среде. - Убедитесь, что все ваши обновления работают. Кажется, довольно очевидно, но это хорошее время, чтобы убедиться, что не было никаких икота с новой сборкой.
- Убедитесь, что ваши Env Vars правильно настроены. Это сортировка предыдущей версии, но убедитесь, что вы тянете с правой БД, или что-то еще.
- Убедитесь, что ваш балансировщик нагрузки имеет тот же сертификат SSL (если применимо). Забавный факт, если вы попытаетесь получить доступ к экземпляру ELB в HTTPS без сертификата, он не удастся!
- Поменять в то время. Наконец, после того, как все выглядит хорошо, чтобы пойти, в консоли есть кнопка, чтобы поменять URL экземпляра. ОЧЕНЬ ПРОСТО. Вам не нужно ничего менять в маршруте 53, он делает все это для вас.
Итак, там у вас есть. Как управлять вашими обновлениями. Очень легко.
Последние мысли
Если у вас есть какие-либо предложения, чтобы сделать его дешевле/проще, я хотел бы слышать их. Мне нравится обсуждение инструментов и вариантов так же, как и следующий разработчик!
С этим я уйду с этим: счастливое кодирование!
Оригинал: “https://www.freecodecamp.org/news/the-reality-of-running-a-production-node-app-on-aws-elastic-beanstalk-55c78b5dad0b/”