Эта статья была первоначально опубликована в моем блоге Здесь Анкет
Я работаю старшим разработчиком программного обеспечения в стартапе. В основном мы предоставляем API для интеграции услуг голоса и SMS в приложения. Таким образом, наша полная инфраструктура находится на облачном провайдере, который в нашем случае является AWS.
Для того, кто не работал над управлением инфраструктурой в облаке, может быть очень трудно понять различные компоненты, связанные с созданием масштабируемых приложений. Лично для меня я ничего не знал о концепциях AWS, прежде чем я начал Woking здесь. За последние 2,5 года я многое узнал о AWS и зная, как важность изучения этих концепций я решил написать серию статей для людей, которые хотят начать работу с AWS или любым другим поставщиком облачных услуг в целом. Это первая статья в серии.
AWS является одним из лидеров рынка, которые предоставляют услуги облачных вычислений и держат приложения, стоящие за такими компаниями, как Facebook, Netflix, LinkedIn, NASA и т. Д.
Как разработчик программного обеспечения, важно знать о различных сервисах облачных вычислений, которые необходимы для создания распределенных, очень масштабируемых приложений. Если вы еще не работали над инфраструктурой, вы определенно начнете работать над ней в своей карьере разработки в какой -то момент. В этой статье я расскажу о некоторых важных услугах, которые мы используем из AWS.
AWS предоставляет многочисленные услуги, но ниже — это обычно используемые:
- Elastic Compute Cloud (EC2)
- Служба реляционной базы данных (RDS)
- Упругая контейнерная служба (ECS)
- Elasticache
- Простая служба хранения (S3)
- Простая служба очередей (кв.
- Балансировщик нагрузки
- Маршрут 53
- AWS Lambda
- Amazon Virtual Private Cloud (VPC)
1. Elastic Compute Cloud (EC2):
Экземпляры EC2 — это в основном серверы с операционной системой, которые можно использовать для запуска ваших приложений в Интернете так же, как вы запускаете свои приложения на своем ноутбуке во время разработки.
Машины EC2 поставляются с различными конфигурациями для процессора, памяти, оперативной памяти и т. Д. Они классифицируются на основе их вычислительной мощности, оптимизации памяти, оптимизации хранения и т. Д. Например, все оптимизированные экземпляры памяти принадлежат m семья. Все вычислительные оптимизированные экземпляры принадлежат C Семья и т. Д.
Вы можете использовать эти экземпляры для запуска бэкэнд -серверов, фоновых сценариев, серверов баз данных, приложений передних конечностей и т. Д.
Поскольку у нас есть много микросслуг для питания наших API, мы используем эти экземпляры вместе с эластичной службой контейнеров (служба оркестровки контейнеров) для развертывания наших контейнеров Docker. Мы даже используем отдельные экземпляры EC2 в качестве хостов Jumpbox для запуска любых специальных сценариев для выполнения таких задач, как данные обратной засыпки, подключение к частной базе данных, Redis Cache и т. Д.
2. Служба реляционной базы данных (RDS):
RDS — это распределенная служба реляционной базы данных.
Amazon RDS доступен в нескольких типах экземпляров базы данных — оптимизирован для памяти, производительности или ввода -вывода — и предоставляет шесть знакомых двигателей базы данных на выбор, включая Amazon Aurora, PostgreSQL, MySQL, Mariadb, Oracle Database и SQL Server.
Amazon RDS позволяет вам создавать реплики чтения в одном и том же регионе или в другом регионе. Вы можете создать одну или несколько реплик данного экземпляра DB-источника и подавать высокий объем приложений считывать трафик из нескольких копий ваших данных, тем самым увеличивая пропускную способность совокупного чтения. Читать реплики также можно продвигать, когда это необходимо, чтобы стать автономными экземплярами БД.
Мы используем PostgreSQL для всех наших основных баз данных и красного смещения, чтобы сохранить данные, необходимые для аналитики и отчетности. Существует одна центральная база данных, где хранятся общие данные и отдельные базы данных, где хранятся данные, связанные с различными продуктами, принадлежащими соответствующим командам.
3. Упругая контейнерная служба (ECS):
AWS ECS — это полностью управляемая служба оркестровки контейнеров.
ECS был основополагающим столпом для ключевых сервисов Amazon, и он может изначально интегрироваться с другими услугами, такими как Amazon Route 53, Manager Secrets, AWS Identity and Access Management (IAM) и Amazon CloudWatch, предоставляя вам знакомый опыт для развертывания и масштабирования ваших контейнеров Анкет
Вы можете добавить автоматическое масштабирование в свои кластеры ECS, чтобы увеличить или уменьшить количество экземпляров и задач в зависимости от ваших потребностей в трафике. Когда ваши услуги получают высокий трафик, вы можете увеличить количество экземпляров кластеров и задач обслуживания. Точно так же вы можете уменьшить их, когда трафик меньше. Например, вы можете сохранить желаемый счет в 4 контейнера для конкретной услуги. Используя автоматическое масштабирование, вы можете настроить правила, например, если CPU % выходит за рамки 80 %, добавьте еще 2 контейнера. Если CPU % ниже 40 %, удалите 2 контейнера.
В рамках нашей организации в каждой команде есть свой собственный кластер ECS, и в каждом кластере есть контейнеры для микро обслуживания, принадлежащие ими. Мы масштабируем индивидуальное обслуживание независимо в зависимости от трафика.
4. Elasticache:
Amazon Elasticache работает как высокая пропускная способность и низкая задержка в хранилище данных и кэше для поддержки наиболее требовательных приложений, требующих времени отклика в субмиллисекунде.
Amazon Elasticache-это популярный выбор для вариантов использования в реальном времени, таких как кэширование, сеанс, игры, геопространственные услуги, аналитика в реальном времени и очереди.
Amazon Elasticache предлагает полностью управляемый Redis и Memcached для ваших наиболее требовательных приложений, которые требуют времени отклика в субмиллисекунде.
Подобно типам экземпляров EC2, есть несколько семейств и типов экземпляров и типов, таких как T3, R5, M5 и т. Д. Вы можете использовать тот, который вам нужен на основе ваших вычислительных требований и бюджетных ограничений.
В нашей организации у нас есть сервис, которая получает около 6000 обработчиков/с, и нам потребовалось низкое время отклика API от этой услуги. Таким образом, мы решили использовать Elasticache в качестве основного источника данных для этого микро службы. Служба смогла обслуживать запросы с однозначным временем ответа на миллисекунд без каких -либо проблем.
Помимо этого мы используем Redis во многих других критических службах в качестве сквозного кеша записи, а также для хранения некоторых данных, к которым можно быстро получить доступ.
5. Простая служба хранения (S3):
Как следует из названия, S3 обеспечивает недорогую службу хранения объектов с высокой масштабируемостью, доступностью данных, безопасностью и производительностью.
S3 можно использовать для хранения файлов для многих вариантов использования, таких как веб -сайты, мобильные приложения, корпоративные приложения, резервное копирование и восстановление и т. Д.
Amazon S3 предназначен для 99,99999999% (11 9 -х) долговечности и хранит данные для миллионов приложений для компаний по всему миру.
Мы используем S3 в различных вариантах использования, таких как для хранения записей вызовов, файлов pdf -фактур, квитанции о платежах, резервных копий старых журналов обслуживания, Amazon Athena для запроса данных, хранящихся в S3 для аналитики и т. Д. Мы даже используем его для событий Tambda Trigger.
6. Простая служба очередей (SQS):
SQS — это полностью управляемая служба очереди сообщений, которая позволяет вам отдельно отделять и масштабировать микро службы. Используя SQS, которые вы можете отправлять, хранить и получать сообщения между различными компонентами в любом томе. Это поможет вам создать высоко масштабируемые и распределенные приложения.
SQS предлагает два типа очередей сообщений:
Стандартные очереди: Стандартные SQ должны использоваться, когда вы требования к максимальной пропускной способности, без необходимости заказов и доставки сообщений на протяжении всего по-прежнему.
Очерки FIFO: FIFO SQS следует использовать, когда важный порядок сообщений, и они должны обрабатывать ровно один раз, в том же порядке, который они отправляются.
Двумя важными свойствами очередей SQS являются период удержания сообщений и тайм -аут видимости по умолчанию.
Период хранения сообщений: это время, в течение которого любое сообщение, втянутое в очередь, сохраняется. Например, если это значение составляет 3 дня, сообщения будут удалены через 3 дня из очереди.
Тайм -аут видимости по умолчанию: Как только у любого работника/приложения появится сообщение, время ожидания видимости по умолчанию — это время только после того, как сообщение снова будет видно для других работников, чтобы забрать его и обработать.
7. Балансировщик нагрузки:
Balancer Balancer является критическим компонентом любой распределенной системы, которая находится между клиентом и сервером, принимает входящие запросы и направляет их через кластер серверов для обработки нагрузки.
Он отслеживает состояние здоровья всех подключенных серверов. Если конкретный сервер нездоровый, то он не будет отправлять входящие запросы на этот сервер.
Преимущества балансировщика нагрузки:
- Более быстрый пользовательский опыт
- Меньше времени простоя и высокой пропускной способности. Если конкретный сервер не работает, LB заботится о маршрутизации трафика к тем, кто встал.
- Снижает нагрузку на отдельный сервер и предотвращает стать одним из одного сервера приложений одной точкой сбоя.
- Улучшает время отклика
- Улучшает общую доступность системы
Используются алгоритмы маршрутизации:
- Метод наименьшего соединения
- Метод наименьшего времени ответа
- Метод наименьшей полосы пропускания
- Метод круглого Робина
- Взвешенный круглый метод робин
- IP -хэш -метод
Мы используем как интернет -лиц, так и балансировщики внутренней нагрузки в наших услугах в зависимости от того, является ли это приложением, обращенным к клиенту, или внутренней микросслуг.
Есть много других концепций, которые тесно связаны с такими балансировщиками нагрузки, как:
- Целевые группы
- Правила слушателя
Это не в сфере этой статьи. Но я настоятельно рекомендую прочитать об этом.
8. Маршрут 53:
Route53 очень доступная и масштабируемая служба DNS от AWS. Если вы не знаете, что такое служба DNS, это в основном сервис, который маркирует конечные пользователи в интернет -приложения, переводя такие имена, как www.example.com в числовые IP -адреса, такие как 192.0.2.1, которые компьютеры используют для подключения друг к другу.
Route53 позволяет нам направлять трафик через различные типы маршрутизации, такие как простая маршрутизация, взвешенная круглая робин, маршрутизация задержки, маршрутизацию отказа от переключения передач, маршрутизацию с несколькими ответами, геолокация и т. Д. Благодаря различным комбинациям из них мы можем создать очень доступные системы, устойчивые к разлому.
Существуют различные типы записей DNS, в зависимости от того, как вы хотите маршрутизировать на основе запросов DNS:
- Тип записи
- AAAA Record Type
- Тип записи CAA
- Тип записи CNAME
- Тип записи MX
- Тип записи NAPTR
- НС тип записи
- Тип записи PTR
- SOA запись типа
- Тип записи SPF
- Тип записи SRV
- Тип записи TXT
Мы используем Route53 в различных вариантах использования в нашей организации:
- Маршрут трафик из конечной точки хоста на внутреннюю балансировщик нагрузки с использованием записи Cname
- Маршрут трафик из конечной точки хоста в много региона
- Маршрут трафик в зависимости от веса к различным балансировщикам нагрузки. Например: в прошлом у нас были наши микро службы на Opsworks. Когда мы перешли к новой архитектуре на основе контейнеров, нам пришлось использовать маршрутизацию на основе веса, чтобы медленно перемещать трафик от старого обслуживания в новый сервис.
- Используйте запись типа для создания псевдонимов и т. Д.
9. AWS Lambda:
AWS Lambda позволяет вам запускать ваши услуги без обеспечения или управления серверами. Вы платите только за используемое время вычисления, тогда как в экземплярах EC2, которые выросли 24/7, вам нужно заплатить за все это время, за которое эти серверы выросли.
Предоставляя вычисления на основе спроса, Lambda позволяет запускать ваши приложения только при необходимости. Вам просто нужно загрузить свой код, и Lambda заботится обо всем, что необходимо для запуска вашего приложения и масштабирования с высокой доступностью.
Преимущества использования лямбды:
- Нет серверов для управления
- Непрерывное масштабирование
- Подсеконный измерение
- Последовательная производительность
Мы используем Lambda для вариантов использования, таких как генерирование платежных квитанций, счетов, сверки данных, механизмов отступления, аналитики и т. Д. В нашей организации.
Lambdas можно использовать в ответ на такие триггеры, как изменения в данных, изменения в состоянии системы, загрузка файлов на S3, действия пользователями и т. Д.
10. Amazon Virtual Private Cloud (VPC):
AWS VPC является одним из основных компонентов в AWS, который работает с несколькими другими компонентами для защиты приложений, логически изолируя раздел AWS Cloud, где вы можете запустить ресурсы в виртуальной сети.
Вы получаете полный контроль над вашей виртуальной сетью среды через группы безопасности, подсету, таблицы маршрутизации и т. Д. Например, вы можете создать общественный балансировщик нагрузки с публичными подсетями. Приложения, стоящие за этими балансировщиками общественной нагрузки, можно получить в Интернете. Точно так же вы можете создавать частные услуги, базы данных, кэши и т. Д., Создавая их с помощью частных подсети, к которым можно получить доступ только в VPC.
В реальном мире у вас есть сценарии, в которых вы хотите получить доступ к ресурсам в пределах одного VPC от другого VPC. В этих случаях нам нужно создать VPC Peering что позволяет этот доступ.
Как упоминалось ранее, существует множество концепций в самом VPC, и я настоятельно рекомендую прочитать концепции ниже, если вы хотите лучше понять VPC:
- Группы безопасности
- Подсети
- Столы маршрутизации
- VPC Peering
- Я
- Интернет -шлюзы
- Nat Gateways
Помимо формы вышеупомянутых компонентов есть много других критических компонентов, которые не имеют возможности этой статьи:
- Opsworks
- Красное смещение
- Кинезис
- Dynamodb
- SNS
- Cloudfront и т. Д.
Как упоминалось ранее, эта статья является первой в серии, и намерение было ввести в различные часто используемые компоненты в AWS. В последующих статьях я буду освещать конкретные варианты использования, проблемы, с которыми мы сталкиваемся, и как мы решили их в подробности.
Подписаться на мой блог Чтобы оставаться в курсе этих статей!
Если вы новичок в облачных вычислениях и хотите изучать концепции AWS, вот отличный курс Даниэля Вассалло, который работал в команде Amazon AWS более 10 лет.
Я очень рекомендую купить это курс Если вы думаете, что документации подавляют.
Связаться со мной на Twitter Там, где я обычно делюсь своими знаниями о концепциях AWS, создании продуктов SaaS и становлении лучшим разработчиком в целом.
Оригинал: «https://dev.to/sunilc_/most-commonly-used-aws-services-and-how-we-are-using-them-238n»