Повысьте свою производительность с помощью Amazon Web Services
Опубликовано: 2022-03-11В течение последних нескольких лет самым популярным словом у всех на устах было «производительность». В быстро развивающемся мире Интернета быстрое выполнение чего-либо всегда вызывает одобрение. Несмотря на необходимость быстрой и точной реализации реальной бизнес-логики, как опытный PHP-разработчик я тратил сотни часов на другие задачи, такие как настройка базы данных или кешей, развертывание проектов, мониторинг онлайн-статистики и так далее. Многие разработчики годами боролись с этими так называемыми разными задачами, тратя время впустую, вместо того, чтобы сосредоточиться на логике проекта.
Моя жизнь изменилась, когда четыре года назад мой друг упомянул об Amazon Web Services (AWS). Это открыло новую дверь и привело к значительному повышению производительности и качества проектов. Для тех, кто не использовал AWS, пожалуйста, прочитайте эту статью, я уверен, что вы найдете ее стоящей своего времени.
Справочная информация об AWS
Amazon Web Services был официально запущен в 2006 году. Многие люди слышали о нем, но, вероятно, не знают, что он может предложить. Итак, первый вопрос: что такое AWS?
Amazon Web Services (AWS) — это набор сервисов облачных вычислений, также называемых веб-сервисами, которые составляют платформу облачных вычислений, предлагаемую Amazon.com.
Википедия
Из этого определения мы знаем две вещи: AWS базируется в облаке и AWS представляет собой набор сервисов, а не один сервис. Так как это вам мало что говорит, на мой взгляд, новичку лучше понимать AWS как:
- Как говорится в определении, AWS — это набор сервисов в облаке.
- AWS предоставляет быстрые вычислительные ресурсы онлайн (например, вам нужно 10 минут, чтобы настроить сервер Linux).
- AWS предлагает доступные тарифы.
- AWS предоставляет простые в использовании готовые сервисы, что позволяет сэкономить много времени на ручной настройке базы данных, кэша, хранилища, сети и других инфраструктурных сервисов.
- AWS всегда доступен и хорошо масштабируется.
Конечно, использование AWS дает гораздо больше преимуществ, поэтому давайте кратко рассмотрим, как это может повысить вашу производительность.
Создайте учетную запись AWS бесплатно
Чтобы начать пользоваться любым сервисом, вам необходимо иметь учетную запись. Создание учетной записи для AWS займет у вас не более пяти минут. Убедитесь, что у вас есть следующая информация:
- Адрес электронной почты, который используется для получения электронного письма с подтверждением.
- Кредитная карта, с которой не будет взиматься плата, поскольку процесс установки всегда бесплатен.
- Номер телефона, на который будет поступать автоматический системный вызов для идентификации пользователя.
Вот и все. Когда у вас будет готовая информация, указанная выше, посетите веб-страницу AWS и создайте учетную запись, следуя простым инструкциям.
Обратите внимание на следующее:
- Большинство сервисов AWS ежемесячно предлагают множество ресурсов уровня бесплатного пользования. То есть тестирование AWS обычно стоит вам совсем немного или ничего.
- По моему опыту, номер телефона и другая личная информация не подвергались злоупотреблениям.
Получите свою первую настройку сервера EC2
Одним из преимуществ облачного сервиса является возможность получения общих ресурсов по требованию. Amazon предоставила пользователю четыре уровня обслуживания для доступа к своим услугам, перечисленные в порядке простоты:
- Консоль управления,
- Инструмент командной строки,
- SDK,
- REST-API.
В этой статье мы будем использовать консоль управления. Итак, после входа в консоль вы увидите экран, как показано ниже:
Следует отметить две области:
- В правом верхнем углу вы найдете селектор региона. AWS предоставляет услуги в 11 различных регионах мира и продолжает расти. Выберите регион по своему выбору или оставьте по умолчанию Восток США (Северная Вирджиния). Цены в разных регионах могут различаться, и вы должны это учитывать по мере роста вашего использования.
- Большую часть экрана занимает список услуг. В этом разделе мы рассмотрим EC2. Взгляните на то, что предоставляет AWS. Не волнуйтесь, если они не имеют смысла, все сервисы будут работать сами по себе. Однако вы получите большую производительность, используя их комбинацию.
Наиболее фундаментальной потребностью облачного ресурса является виртуальный сервер. EC2, или Elastic Compute Cloud, — это название, выбранное Amazon для службы виртуального сервера. Давайте посмотрим, как легко подключить сервер Linux к сети.
- В консоли управления EC2 запустите процесс запуска, как показано ниже:
- Выберите образ машины (сокращенно AMI), чтобы начать. Это операционная система, которая будет работать на вашем компьютере. Выберите любую систему по своему усмотрению. Я рекомендую вам начать с Amazon Linux, который использует
yum
для управления пакетами:
- Затем выберите тип экземпляра. Вы можете понимать это как спецификацию вашего оборудования для вашего виртуального сервера. Вы можете начать с t2.micro , потому что вы получите 750 часов бесплатного использования каждый месяц с этим экземпляром в течение первого года. Обратите внимание , что это действует только в течение первого года с даты регистрации и только для экземпляра t2.micro . Это хорошая сделка, если вы хотите только попробовать AWS.
- Имея возможность настроить сервер более детально, вы можете запустить сервер. При первом использовании EC2 вы увидите экран, подобный приведенному ниже. Предупреждение о безопасности говорит нам, насколько Amazon уделяет особое внимание аспекту безопасности. Однако мы можем игнорировать это предупреждение, пока не перейдем к разделу об управляемых службах.
- Наконец, для доступа к удаленному серверу нам нужна идентификация. AWS предложит нам выбрать пару ключей SSH, как показано на изображении ниже. Загрузите файл ключа конфиденциальности и нажмите кнопку запуска. И да, мы закончили; новый виртуальный сервер настраивается и будет готов через несколько минут.
- Как только экземпляр будет готов, вы можете войти в систему как пользователь по умолчанию
ec2-user
с вашим ключом конфиденциальности.ec2-user
— это пользователь AWS по умолчанию, который также имеет возможность sudo. Хотя невозможно изменить имя пользователя по умолчанию, вы можете создать любого пользователя и назначить соответствующие привилегии в соответствии с вашими предпочтениями. Адрес вашего сервера можно посмотреть здесь:
Описанный выше процесс должен занять менее пяти минут, и именно так мы легко запустим и запустим виртуальный сервер. В следующем разделе мы узнаем, как AWS помогает нам управлять только что созданным экземпляром.
Выставление счетов по требованию
Плата за большинство ресурсов AWS взимается в часах, что обеспечивает хорошую гибкость. Например, взяв только что созданный экземпляр EC2, можно вывести его из эксплуатации двумя способами: остановить и завершить. Оба действия остановят выставление счетов. Разница в том, что, остановив экземпляр, мы можем перезапустить его позже с сохранением всей нашей работы. В отличие от этого, завершая работу экземпляра, мы возвращаем экземпляр в AWS для переработки, и восстановить информацию невозможно. Необходимость прекращения экземпляра возникает из-за того, что AWS по умолчанию устанавливает ограничение в 20 экземпляров на регион для каждой учетной записи, и остановленный экземпляр по-прежнему считается до тех пор, пока он не будет остановлен.
Мы можем быстро остановить экземпляр:
Когда вы останавливаете инстанс EC2, ваш счет также перестает расти. Это особенно полезно в следующих случаях:
- Когда вы хотите попробовать что-то новое, это более экономично, если вам нужно заплатить только за пару часов, и вы, вероятно, не превысите уровень бесплатного пользования для некоторых услуг.
- Когда ваши вычислительные потребности находятся в масштабах производственной среды. Например, в прошлом мне нужно было резервировать вычислительные ресурсы, которые обычно на 30-50 процентов превышают пиковое использование. С AWS я могу выделять ресурсы более гибким способом:
Информация о ценах на AWS доступна в Интернете. После некоторых расчетов у вас может возникнуть вопрос: действительно ли AWS дешевле? Умножая почасовую ставку на месяц, получается, что это вообще не конкурентоспособно. Ответ да, и нет.
AWS не дешевле, если вы просто рассчитываете почасовую ставку для ресурса по требованию в течение месяца. Однако у нас по-прежнему есть варианты выставления счетов за зарезервированные инстансы, как показано ниже:
При минимальных требованиях к ресурсам мы можем получить скидку от 30 до 70 %, используя зарезервированный инстанс, а также другие различные ресурсы, оплачиваемые как инстанс по требованию. На практике это будет на 30–40 % дешевле при годовом обязательстве и даже больше при трехлетнем обязательстве с использованием зарезервированных экземпляров. Вот почему я буду голосовать «за» по вышеуказанному вопросу. А AWS еще дешевле, если учесть преимущества безопасности и мониторинга.
Управляемые службы
Одна из целей AWS — максимально сократить эксплуатационные расходы. Традиционно нам нужна большая команда системных инженеров для поддержания безопасности и работоспособности нашей инфраструктуры, будь то онлайн на месте. Опытные команды напишут и развернут свои автоматизированные инструменты, чтобы упростить процесс. Однако на практике управление услугами также становится сложным проектом. AWS спасает нас, помогая нам управлять нашими ресурсами. Ниже я перечислил некоторые из сервисов, предоставляемых AWS, которые наиболее часто используются:
- Группа безопасности AWS,
- IAM, управление доступом к удостоверениям,
- облачные часы,
- И список сервисов автоматического развертывания, таких как OpsWorks (которые не будут рассматриваться в этой статье).
Группа безопасности AWS
То, как AWS обрабатывает управление доступом к сервисам, осуществляется на двух отдельных уровнях. На сетевом уровне это достигается с помощью идеи, известной как «группы безопасности». Все сервисы AWS находятся в группах безопасности. А группа безопасности определяет, кому разрешен проход. Взяв наш экземпляр EC2, AWS автоматически создала для нас группу безопасности:
Мы можем решить, что может входить и что может выходить, настроив правила входящего/исходящего трафика. Правила TCP, UDP и ICMP поддерживаются службой EC2. Группа безопасности действует как внешний брандмауэр аппаратного уровня, и нам не нужно думать о его исправлении.
Еще одно преимущество использования группы безопасности заключается в том, что ее можно использовать повторно. Одна группа безопасности может совместно использоваться многими ресурсами. На практике это значительно повышает эффективность обслуживания, избавляя от необходимости устанавливать политику безопасности одну за другой для каждого ресурса. Кроме того, общий характер группы безопасности позволяет нам настраивать ее в одном месте и применять эту политику безопасности к любым другим ресурсам без хлопот, связанных с ее ручной настройкой, по одной для каждого ресурса.
Управление идентификацией и доступом
AWS предоставляет еще один метод управления доступом с помощью IAM. Это элемент управления безопасностью на уровне приложения, когда вам нужно получить доступ к интерфейсам RESTful. Каждый запрос REST должен быть подписан, чтобы AWS знал, кто обращается к сервису. Кроме того, проверяя предварительно настроенный список политик, AWS определяет, следует ли запретить действие или разрешить его выполнение.
В этой статье мы не будем подробно рассматривать IAM. Однако обратите внимание, что AWS много внимания уделяет безопасности, поэтому вы можете быть уверены, что никакие неавторизованные посетители не смогут получить доступ к вашим конфиденциальным данным.

CloudWatch
CloudWatch — это сервис, предоставляемый AWS для сбора и отслеживания всевозможных метрик из ваших ресурсов AWS. Он более мощный из-за своей способности реагировать на определенные события (или сигналы тревоги). С помощью CloudWatch мы можем отслеживать работоспособность нашего недавно созданного экземпляра EC2.
- Мы можем быстро добавить сигналы тревоги в наш экземпляр EC2:
- Аварийные сигналы могут быть созданы путем указания критериев для различных целей:
ПРИМЕЧАНИЕ . SNS — это тематический сервис, предоставляемый AWS для отправки уведомлений. Уведомления можно отправлять по электронной почте, SMS, push-уведомлениям для iOS/Android и во многих других форматах.
От мониторинга до уведомлений — CloudWatch пытается автоматизировать мониторинг в несколько кликов. Существует множество метрик, предопределенных для различных сервисов AWS. Для опытных пользователей вы даже можете создавать собственные метрики для своего приложения.
Что касается стоимости, бесплатного уровня, предоставляемого CloudWatch, обычно достаточно для начинающих проектов. Однако даже когда ваш бизнес растет, дополнительные расходы обычно составляют менее 1 процента от стоимости услуги. Проверьте подробные цены для получения дополнительной информации. Учитывая, насколько легко настроить систему мониторинга с помощью CloudWatch, он стал наиболее часто используемым инструментом мониторинга.
Беспроблемные сервисы приложений
Как разработчики, мы, вероятно, сталкивались со следующими сценариями:
- Нашему приложению нужен компонент базы данных, а это значит, что мы должны:
- Получить сервер для базы данных.
- Установите программное обеспечение базы данных.
- Настройте мониторы для сервера и базы данных.
- Планируйте схемы резервного копирования.
- При необходимости исправьте программное обеспечение.
- И многие другие, не перечисленные здесь.
- Нашему приложению необходимо распределенное хранилище файлов, а это значит, что мы должны:
- Найдите существующие решения с открытым исходным кодом (или коммерческие) для распределенного хранения файлов.
- Подготовьте необходимые серверы.
- Установите и настройте выбранное решение, что обычно не так просто.
- Настройка мониторов для сервера и базы данных
- И многие другие, не перечисленные здесь
- Нашему приложению нужен кеш.
- Нашему приложению нужна очередь сообщений.
- И много других проблем, которые нужно решить, плюс нам нужно сделать предварительную настройку и пост-мониторинг.
И, как вы, возможно, уже догадались, это еще одна важная область, в которой помогает AWS. Доступно множество сервисов прикладного уровня, так что вам не нужно будет думать ни о чем другом.
Давайте рассмотрим некоторые из них, чтобы дать вам быструю картину.
RDS, база данных, управляемая для вас, но не вами
Реляционные базы данных (RDBMS) получили широкое распространение во многих приложениях. В производственной среде всегда требуется особое внимание при развертывании приложений с использованием СУБД, начиная с установки и настройки базы данных и заканчивая тем, когда и как создаются и восстанавливаются резервные копии.
В нашей команде наш администратор базы данных (DBA) тратил не менее 30 процентов своего времени на написание сценариев установки и обслуживания. С введением AWS RDS у нашего администратора баз данных появилось больше времени для настройки производительности SQL, что является предпочтительной областью для вашего администратора баз данных.
Итак, что предлагает вам RDS? Вкратце:
- RDS обеспечивает поддержку большинства популярных механизмов баз данных, включая MySQL, SQLServer, PostgreSQL.
- Базу данных, будь то узел или кластер, можно создать за несколько кликов.
- RDS предлагает встроенную поддержку общих параметров базы данных в службе под названием «Группа параметров».
- RDS обеспечивает встроенную поддержку управления доступом с помощью группы безопасности, которая очень похожа на ту, которую мы рассмотрели для EC2.
- RDS предлагает дополнительные услуги, включив несколько зон доступности одним щелчком мыши. Весь мониторинг, переключение в режим ожидания и отказоустойчивость выполняются автоматически.
- Обслуживание и резервное копирование RDS автоматизированы.
В заключение, RDS экономит значительное количество времени, когда речь идет о настройке и обслуживании служб базы данных. Взамен вы заплатите примерно на 40 процентов больше, чем за соответствующий сервер EC2. Таким образом, это бизнес-решение, выбрать ли RDS или развернуть соответствующий сервер самостоятельно. Однако это позволяет вам уделять больше времени работе, связанной с реальным бизнесом, а не стабильностью и масштабируемостью инфраструктуры. Кроме того, вы скоро заметите, что именно так работают сторонники AWS.
Dynamo DB, хранилище ключей и значений, масштабируемое до миллиардов записей
NoSQL стал любимой темой в последние годы. Поскольку многие реальные проекты не нуждаются в поддержке различных реляционных СУБД, на рынок был представлен список баз данных NoSQL. Amazon не отстает в этом. DynamoDB (https://aws.amazon.com/dynamodb) — это хранилище «ключ-значение», анонсированное Amazon в 2012 году, и основным участником этого сервиса является Вернер Фогельс, технический директор Amazon, один из ведущих мировых экспертов по ультра- масштабируемые системы.
Ни для кого не секрет, что Amazon обрабатывает огромный трафик. DynamoDB является производным от Dynamo, который был внутренним механизмом хранения для многих предприятий Amazon, включая его службу корзины покупок, которая обслуживает миллиарды запросов каждое Рождество. DynamoDB не имеет ограничений на масштабирование.
Кроме того, по сравнению с другими решениями NoSQL, такими как Cassandra или MongoDB, у DynamoDB есть огромное экономическое преимущество; он оплачивается в единицах зарезервированной пропускной способности (сколько разрешено операций записи/чтения в секунду), которую можно увеличивать или уменьшать в режиме реального времени. Ниже приведена сравнительная таблица стоимости DynamoDB и другого автономного решения NoSQL:
Деловая потребность | Служба DynamoDB | Стоимость DynamoDB | Использование другого сервиса | Стоимость при использовании другого сервиса |
Малый бизнес (менее 1000 DAU, 16 ГБ данных) | 10 единиц записи 10 единиц чтения | $9,07/месяц • | t1.микро •• 16 ГБ EBS ••• | $14,64/месяц |
Средний бизнес (менее 100 тыс. DAU, 160 ГБ данных) | 100 единиц записи 100 единиц чтения | $101,62/месяц | m4.xlarge 160 ГБ ЭБС | $190,95/месяц |
Крупный бизнес (до 1 млн DAU, 1 ТБ данных) | 1000 единиц записи 1000 единиц чтения | $852,58/месяц | Кластерный c4.4xlarge • EBS 512 ГБ • | $1329,24/месяц |
• для справедливости цена рассчитывается с использованием ценообразования по запросу в регионе ВОСТОК США
•• Экземпляры AWS EC2 выбраны для размещения других сервисов NoSQL.
••• EBS — это служба постоянного хранения, предоставляемая AWS.
Как видно из таблицы, DynamoDB предоставляет свои услуги «из коробки» и обычно по более низкой цене по сравнению с созданием собственного хранилища ключей и значений. Это связано с тем, что если вы не достигнете максимальной емкости своего кластера MongoDB/Cassandra, вы будете платить больше за то, что никогда не используете.
Amazon предлагает свои услуги полностью управляемым образом. Это означает, что вам не нужно беспокоиться о настройке, масштабировании или мониторинге DynamoDB; все они сделаны AWS. На самом деле чтение и запись элементов DynamoDB всегда измеряются постоянной временной сложностью, независимо от размера обрабатываемых данных. Поэтому некоторые приложения решили отказаться от слоев кэша после перехода на DynamoDB. Удивительно, правда.
SQS, служба распределенной очереди
При работе с большими объемами данных мы часто распределяем вычисления на множество вычислительных узлов. При глобальном ведении бизнеса нам часто требуется конвейер для обработки данных, собранных с узлов, распределенных в широком географическом диапазоне. Чтобы соответствовать требованиям для таких событий, AWS представляет SQS, Simple Queue Service. Как и многие признанные службы очередей, SQS предлагает способ постоянной передачи сообщений/заданий между различными логическими компонентами.
Как следует из названия, SQS — это базовый сервис, доступный в начале AWS. Тем не менее, Amazon неуклонно разрабатывает SQS, и в зависимости от потребности SQS может быть настолько простым или настолько мощным, насколько вам нужно, с множеством настраиваемых параметров. Некоторые из расширенных функций SQS:
- Хранение сообщений до 14 дней.
- Механизм видимости для предотвращения потери сообщений в случае сбоя.
- Задержка доставки сообщения.
- Политика переадресации для обработки ошибочных сообщений (так называемых мертвых писем).
Службы очередей не должны быть слишком сложными. Вы можете задаться вопросом, почему стоит использовать целый раздел только для ознакомления с SQS. Возможно, вы уже догадались о причине; как и другие сервисы AWS, SQS — это полностью управляемый сервис, что означает:
- Очередь легко масштабируется; это могут быть десятки сообщений, которые вы передаете, или миллионы в секунду, поэтому SQS масштабируется на лету.
- Очередь является постоянной и распределенной, что означает, что важные данные не будут потеряны, пока не истечет срок их действия.
- Вам не нужно настраивать сервер для развертывания программного обеспечения очереди. И, конечно же, вам не нужно настраивать сложный мониторинг сервиса.
S3, файловое хранилище, но не только файловое хранилище
S3 расшифровывается как Simple Storage Service и похож на Dropbox как сервис для конечного пользователя, но это для приложений. По определению S3 — это объектное хранилище с простым веб-интерфейсом.
S3 прост для пользователя, но также имеет множество расширенных функций. I S3 стал отраслевым стандартом, особенно для приложений, использующих другие сервисы AWS. В основном это связано с тем, что S3 настолько легко интегрируется, что он стал популярным внешним хранилищем для большинства сервисов AWS. Кроме того, многие сервисы, такие как DynamoDB, SQS и т. д., активно используют S3 для внутренних целей.
Понимание S3 должно расширить преимущества использования других управляемых сервисов AWS. Это связано с тем, что большинство сервисов хранят свои резервные копии на S3. Кроме того, S3 является общим местом назначения экспорта/импорта для служб, включая, помимо прочего, DynamoDB, RDS и Redshift.
Наконец, S3 похож на другие сервисы AWS; он полностью управляем, поэтому мы можем просто начать пользоваться сервисом, не настраивая сервер или механизмы аварийного переключения. С точки зрения экономии, S3 также является платным сервисом по мере использования, поэтому вы всегда можете попробовать его без особых затрат.
Более продвинутые сервисы и SDK
Также стоит отметить множество других сервисов AWS. Из-за ограниченного места мы приводим здесь лишь некоторые интересные:
- Redshift: база данных на основе столбцов, которую можно использовать для очень быстрой обработки триллионов данных. Вы должны попробовать это, если вы отвечаете за ETL большого объема данных.
- Конвейер данных: позволяет быстро передавать данные между сервисами AWS, а также обеспечивает периодическую обработку данных в меньшем сегменте.
- ElastiCache: управляемый сервер Memcache, простой, но отлично справляющийся со своей задачей.
- Lambda: следующее поколение облачных вычислений. Lambda запускает загруженный фрагмент кода в зависимости от событий, что открывает новые возможности для разработки распределенных приложений.
- Route53: Мощное решение DNS с поддержкой взвешенного ответа, ответа на основе геолокации поверх других решений DNS промышленного стандарта.
- SNS: простая в использовании служба уведомлений, разработанная по схеме подписчик/издатель.
- Многое другое.
Я думаю, что это хорошая привычка проверять AWS всякий раз, когда вы вводите какой-либо новый компонент в свое приложение. Чаще всего AWS преподносит вам приятный сюрприз, поскольку у него есть готовая альтернатива SaaS.
Кроме того, чтобы упростить доступ к интерфейсам RESTful, Amazon предоставила SDK почти для всех популярных языков программирования. У вас не должно возникнуть проблем с поиском вашего любимого SDK.
Резюме
В этой статье мы рассмотрели некоторые из наиболее широко используемых сервисов AWS. Наверняка есть области, в которых AWS поможет вашему бизнесу. Вы можете перенести существующий сервисный компонент на его аналог AWS, например, базу данных MySQL на RDS. Вы вполне можете спросить, есть ли какие-либо сервисы AWS для этого компонента моего программного обеспечения? Итак, получите учетную запись AWS сегодня и получите повышение производительности за считанные минуты.
Дальнейшее чтение в блоге Toptal Engineering:
- Разработка для облака в облаке: разработка больших данных с помощью Docker в AWS
- Делайте домашнее задание: 7 советов по экзамену на сертифицированного архитектора решений AWS
- Ведение журнала SSH и управление сеансами с помощью AWS SSM
- Работа с поддержкой TypeScript и Jest: учебное пособие по AWS SAM