ru:https://highload.today/blogs/amazon-web-services-for-developer/ ua:https://highload.today/uk/blogs/amazon-web-services-for-developer/
logo
Облака      24/11/2021

Бери и пользуйся: 17 главных сервисов для веб-разработчика от Amazon

Владимир Чмуж BLOG

Full Stack Web developer & Solution Architect в NIX

Привет! Я — Владимир Чмуж, Full Stack Web developer & Solution Architect в NIX. На протяжении семи лет я занимаюсь веб-разработкой, у меня есть опыт взаимодействия с облачными платформами. Внимание к облачным технологиям ежегодно растет. Если вы планируете связать свою жизнь с разработкой программного обеспечения, то весьма вероятно, что вам придется столкнуться с той или иной cloud-платформой. На сегодняшний день Amazon Web Services — самая популярная из них.

Эта статья даст вам базовое понимание основных возможностей AWS и будет полезна тем, кто только начинает знакомство с платформой. Поехали!

Если однажды Amazon не станет, то каждый пользователь интернета ощутит это на себе

Amazon Web Services — это онлайн-платформа, которая предоставляет пользователям виртуальные вычислительные ресурсы, хранилища, инфраструктуру и сервисы, которые содержат функционал уже готовый к использованию.

Вместо того, чтобы покупать физический сервер и устанавливать его локально, вы арендуете виртуальные ресурсы онлайн.

AWS-сервисам доверяют крупнейшие корпорации, которые выбирают эту платформу для обслуживания рабочих нагрузок, включая мобильные и веб-приложения, разработку игр, обработку и хранение информации. Если бы вдруг AWS прекратил свою работу, это повлияло бы на многих пользователей интернета. Популярные сайты и сервисы прекратили бы функционировать, так как они широко используют мощности AWS.

График ниже показывает, что AWS занимает 32% рынка всех облачных платформ. На втором месте — Microsoft Azure, а на третьем — Google.

AWS занимает почти половину рынка всех облачных платформ / Canalys

Используя платформу AWS, проект Coursera может ежемесячно обрабатывать около 500 Тбайт трафика. В 2009 году Netflix стал самым известным первым пользователем AWS среди больших корпораций и сейчас использует более 100 000 серверных инстансов на AWS.

Успешные примеры использования возможностей AWS можно перечислять очень долго. Но прежде чем перейти к подробному разбору этих сервисов, рассмотрим основные способы взаимодействия с платформой.

Как управлять платформой AWS

Доступ и управление Amazon Web Services осуществляется через AWS Console — сайт, на котором можно управлять ресурсами через браузер. Это один из способ взаимодействия, но есть и другие:

  • SDK — способ программного взаимодействия с платформой. SDK реализованы для таких популярных языков программирования, как: C++, Go, Java, JS, .NET, PHP, Python, Ruby. Если же для того языка, на котором вы пишете код, нет официального SDK, вероятно, существует библиотека, которая поддерживается сообществом. Либо же можно написать свой SDK, который будет некой оберткой к предоставляемому HTTP-интерфейсу.
  • Онлайн-курс "English for Designers" від Vocabulaba.
    Навчіться описувати деталі своєї роботи, формувати CV англійською та вільно обговорювати флоу проєктів із замовниками.
    Детальніше про курс
  • AWS CLI — утилита командной строки, которую удобно использовать для автоматизации процессов. Также она подойдет тем, кому удобнее пользоваться командной строкой, а не графическим интерфейсом.

Главные преимущества AWS

Не требует больших вложений

Если вы хотите запустить свой стартап и создать мессенджер, вам понадобятся:

  • серверы, которые будут осуществлять коммуникацию;

  • сервер с базой данных, который будет хранить историю сообщений,

  • серверы для хранения файлов, чтобы пользователи могли обмениваться изображениями друг с другом.

Все это может стоить достаточно больших денег. При этом у вас не будет никаких гарантий, что бизнес станет успешным, и вы не потеряете то, что вложили.

Онлайн-курс Pyton від Powercode academy.
Опануйте PYTHON з нуля та майте проект у своєму портфоліо вже через 4 місяця.
Приєднатися

Купив физический сервер и заплатив за него, вы, вероятнее всего, не будете использовать его круглосуточно и на полную мощность. Если же вы задействуете облачную платформу, то ваша виртуальная машина сможет поделить физическое «железо» с виртуальными машинами других пользователей. Благодаря этому обеспечивается его более низкая стоимость.

В случае с AWS вы можете арендовать только те ресурсы и мощности, которые необходимы прямо сейчас, и платить за них почасово, либо за количество выполненных запросов.

Если вы замечаете, что что-то идет не так, вы сможете просто отключить все серверы и ресурсы, которые были задействованы. Тем самым вы не рискуете потерять огромные вложения.

Предоставляет крупнейшую среди всех облачных провайдеров инфраструктуру

На сегодня инфраструктура AWS состоит из 25 регионов, в каждом из которых присутствует несколько availability zones (зоны доступности). Это один или несколько дата-центров.

AWS предлагает множество облачных сервисов, которые можно использовать в комбинациях, соответствующих вашим бизнес-требованиям и организационным задачам. 

Вы можете легко отключать сервисы, которыми не пользуетесь

Вы можете легко отключать серверы и ресурсы, которыми не пользуетесь

Основные сервисы Amazon

AWS предлагает огромное количество сервисов. Это и сервисы для выполнения разных вычислений, файловые хранилища и базы данных, виртуальные сети, сервисы для машинного обучения и AI, для оркестрации контейнеров, медиа-сервисы. Ниже я опишу самые основные, на мой взгляд, которые пригодятся веб-разработчикам.

IAM (Identity Access Management)

IAM (Identity Access Management) — это сервис, без которого невозможна командная работа в AWS. Он позволяет создавать и управлять уровнем доступа пользователей.

Когда вы регистрируетесь в AWS, создается аккаунт. Внутри этого аккаунта вы можете формировать различные ресурсы. Чтобы участники вашей команды также получили доступ к этим ресурсам, вы создаете пользователей и распределяете их между собой.

Например, можете объединить их в отдельные группы — администраторов, тестировщиков, разработчиков. Далее вы сможете создавать полиси (policies), которые будут определять доступы и разрешения внутри вашего аккаунта. Например, вы можете создать полиси, которая позволяет читать и изменять все ресурсы и передать эту политику группе администраторов. А можете разрешить читать все ресурсы, но запретить их изменять и назначить эту политику группе тестировщиков.

Курс-професія "Flutter & Dart Mobile Developer" від robot_dreams.
Навчіться створювати застосунки, які працюватимуть на всіх платформах, і розпочніть кар’єру в мобільній розробці.
Детальніше про курс

Еще одна сущность, которую вы можете создавать — это роли. Пользователей вы создаете для людей, а роли — для сервисов. Например, у вас есть веб-сервер и это значит, что вы можете создать для него роль, в которой будут policies, разрешающие доступ к базе данных. Так вы откроете доступ к БД, но у других сервисов его не будет.

S3 (Simple Storage Service)

S3 (Simple Storage Service) — это сервис объектного хранилища, который предлагает автоматическую масштабируемость.

S3 хранит копии данных на разных физических девайсах, что и позволяет обеспечить высокую доступность и надежность. Для доступа и управления данными S3 предоставляет HTTP-интерфейс.

Это именно тот сервис, который мы бы использовали, если бы создали свою версию Dropbox или Google Drive. Также, например, его можно использовать для хранения статических файлов сайта. S3 предоставляет безграничное хранилище, которое расширяется автоматически. Вам не придется беспокоиться о доступном размере для файлов. Вы сможете хранить файлы размером до пяти терабайт.

Также есть разные классы хранения. Например, если у вас есть файл, а доступ к нему осуществляется нечасто, вы можете поместить его в класс хранения infrequent access и будете платить за хранение данных значительно меньше. Дополнительная плата в этом случае зависит от количества выполненных запросов. Актуальные цены можете посмотреть по ссылке.

Файлы можно архивировать с помощью сервиса S3 glacier. Например, если законодательно вам нужно хранить данные не меньше трех лет, этот сервис как раз то, что нужно. Он позволит снизить расходы на оплату. Но есть минус — получение доступа к данным может занять несколько часов.

S3 предусматривает функцию версионирования. Как она работает: после изменения файлов вы всегда сможете вернуться к предыдущим версиям и восстановить их. Управление жизненным циклом позволяет назначить такой файл, который после создания попадет в архив, а через два года — полностью удалится. S3 поддерживает мультифакторную аутентификацию для удаления файлов. Это значит, что вы можете настроить хранилище так, что пользователь сможет удалить файлы, только пройдя мультифакторное подтверждение.

CloudFront

CloudFront — это, по сути, Content Delivery Network — система серверов по всему миру, которая кэширует статический контент.

Пользователя, который хочет получить статический контент, система направляет к ближайшему серверу, который выдаст данные оперативно. Такие серверы называются edge locations. Их система существует независимо от регионов и зон доступности. Это дополнительный уровень инфраструктуры Amazon. Система работает не только на быструю отдачу файлов, но и на получение.

Курс Digital Marketing від Mate academy.
З нами легко почати кар'єру в IT, бо ми опитуємо найбільших IT роботодавців щодо вимог до junior Digital-маркетологів і навчаємо наших студентів. А після завершення курсу гарантуємо працевлаштування!
Дізнатися більше про курс

Если у вас есть S3 bucket в Европе, а пользователь пытается загрузить файл из США, то благодаря функционалу S3 Transfer Acceleration система направит его на ближайший edge location, что позволит загрузить файл на платформу быстрее, а затем он по специализированной частной сети Amazon с высокой доступностью и низким уровнем задержек попадет в нужный регион.

EC2 (Elastic Computer Cloud)

EC2 (Elastic Computer Cloud) — сервис, позволяющий создавать виртуальные машины с разными операционными системами и устанавливать на них программное обеспечение.

Создание такой виртуальной машины занимает всего несколько минут. EC2 предлагает разные типы и конфигурации серверов. Например, заточенные под определенные вычислительные задачи с мощными процессорами. Или другой вариант — серверы для работы с большими объемами данных.

EC2 позволяет подключать разные виртуальные хранилища, например, общего назначения, с повышенной пропускной способностью — в зависимости от ваших потребностей. Детальнее об этом можете почитать здесь.

EC2 позволяет создавать bootstrap-скрипты, которые будут задействованы на этапе создания виртуальной машины. С помощью этих скриптов можно произвести предварительные настройки и установить необходимое ПО. Также можно делать snapshot — снимки состояния виртуальной машины в определенное время. На их основании создают желаемый образ виртуальной машины, а после — делают копии с уже установленным ПО и настройками.

EC2 предлагает разные ценовые модели:

  • OnDemand-сервер — вы платите за серверы почасово и только в момент их работы.
  • Reserved-сервер — заключаете контракт с Amazon на использование сервера на протяжении года или трех лет. Тем самым вы обязуетесь использовать сервер в установленные сроки. Есть скидка в зависимости от сроков использования.
  • Spot-сервер — цена может варьироваться, но вы сами устанавливаете планку, выше которой платить не готовы. Может быть полезно, например, для вычислений, для которых не очень важно, чтобы они были выполнены непрерывно и в строго в определенный срок, но при этом они нерентабельны при цене выше какого-то уровня.
  • Онлайн-курс "Power BI" від Laba.
    Розширте пул інструментів для імпорту даних з різних джерел, їхнього аналізу, візуалізації та побудови звітності.Пришвидшість виконання завдань для підвищення ефективності бізнесу.
    Дізнатись більше
  • Dedicated-сервер — позволяет устанавливать виртуальную машину на одно и то же физическое железо. Это полезно, если, например, лицензия обязывает использовать программное обеспечение на конкретной машине. Может быть и так, что вы приобрели ПО и зарегистрировали его на конкретном компьютере и тогда уже не сможете использовать эту же лицензию. Новое «железо» требует новой лицензии.

ELB (Elastic Load Balancer)

ELB (Elastic Load Balancer) — это сервис, который позволяет регулировать и распределять нагрузку между существующими серверами.

Load Balancer умеет периодически проверять серверы на работоспособность. Если произошла авария и сервер не отвечает, Elastic Load Balancer прекращает отправлять на него трафик и распределяет его между оставшимися серверами.

Amazon предлагает несколько видов Load Balancer:

  • Application — дает возможность гибкой маршрутизации на основе HTTP-параметров.
  • Network — без продвинутой маршрутизации позволяет распределить трафик поровну. Оперативно выполняет запросы, обрабатывая миллионы запросов в секунду.
  • Classic — устаревший вид LB. Для новых систем лучше использовать Application LB или Network. 

Auto Scaling

Auto Scaling — сервис, позволяющий создавать группы серверов и автоматически управлять их количеством.

Auto Scaling может поддерживать минимальное, но при этом необходимое количество экземпляров. Он позволяет проводить масштабирование вручную или настроить по событию. Допустим, если средняя загрузка центрального процессора превышает 60%, значит, нужно добавлять серверы. Доступна и масштабируемость по расписанию. Представьте: в своем интернет-магазине вы запустили акцию. Вы уверены, что огромный наплыв покупателей будет именно в воскресенье. Значит, в этот день необходимо масштабироваться вдвое.

Онлайн-курс "Communicative Business English" від Vocabulaba.
Прокачайте професійну англійську для роботи в бізнесі та заговоріть впевнено — на співбесіді, презентації чи перемовинах.
Детальніше про курс

Cloud Watch

Cloud Watch — сервис для мониторинга ваших ресурсов в AWS.

Этот сервис позволяет мониторить сотни разных предопределенных метрик (например, загрузку процессора, диска, сети и так далее) и определять индивидуальные. Также в CloudWatch есть возможность собирать и анализировать логи всей вашей инфраструктуры, приложений и сервисов в одном месте.

На основе собранной информации можно определять «сигналы тревоги» для тех или иных событий. Например, создать такое правило: если средняя загрузка процессора на вашем сервере на протяжении определенного времени не опускается ниже 80%, CloudWatch сообщит об этом с помощью письма на электронную почту или SMS на телефон. Или же у вас есть определенный бюджет на использование ресурсов Amazon, вы точно так же можете установить сигнал, который предупредит о том, что вы превысили свой лимит.

RDS (Relational Database Service)

RDS (Relational Database Service) — сервис реляционных баз данных от Amazon, который поддерживает несколько движков: MySQL, MariaDB, PostgreSQL, Oracle, Microsoft SQL.

В случае использования Amazon RDS, администрирование программного обеспечения — это не ваша зона ответственности.

Все необходимое ПО для функционирования системы БД уже установлено управляется и поддерживается платформой AWS. RDS предоставляет функциональность Multi Availability Zones для аварийного восстановления. Например, создаете копию своей БД на отдельном сервере в другой зоне доступности. Эта база данных будет постоянно синхронизироваться с основным экземпляром. Когда основной сервер придет в нерабочее состояние, RDS автоматически переключит все запросы на копию, размещенную в другой зоне. При этом работоспособность приложения не будет нарушена.

Также здесь есть функционал Read Replicas, который позволяет создавать копии базы данных для масштабирования производительности. Допустим, есть один экземпляр, который не справляется с нагрузкой. Чтобы решить эту проблему, необходимо создать одну дополнительную или несколько реплик, которые могут распределить нагрузку на чтение между собой и увеличат производительность.

Amazon Aurora

Amazon Aurora — это управляемый движок реляционных баз данных, совместимый с PostgreSQL и MySQL, который предлагает автоматическое масштабирование. Amazon заявляет, что его производительность в пять раз больше, чем в MySQL, и в три раза больше, чем в PostgreSQL.

Благодаря автоматическому масштабированию вам не придется постоянно следить за оставшимся количеством места. Для высокой доступности и сохранности по умолчанию все ваши данные хранятся в виде шести копий по две в трех зонах доступности (availability zones). Если в каком-то из дата-центров возникнут «‎пожары», Aurora все равно продолжит свою работу.

Онлайн-курс "Marketing Basis" від Skvot.
Навчіться проводити аналіз конкурентів і цільової авдиторії, формувати місію та позиціювання. Розберіться з бюджетами і метриками, щоб обирати ефективні канали комунікації.Поєднайте цифри і креатив.
Про курс

Aurora Serverless дополнительно предлагает автоматическое масштабирование мощности экземпляров. Например, в зависимости от текущей нагрузки сервер баз данных может использовать один vCPU или восемь. Функционал автоматического старта/стопа позволяет остановить сервер, если, например, на протяжении пяти минут к нему не поступают запросы.

DynamoDB

DynamoDB — это основное NoSQL-решение от Amazon. DynamoDB умеет автоматически масштабироваться до огромных размеров без потери производительности.

Копии данных хранятся в трех физически разных местах, что обеспечивает высокую доступность «из коробки». Важно понимать, что, несмотря на скорость и простую масштабируемость, NoSQL не предоставят вам такой мощности языка, запросов и строгости структуры данных, которые существуют у реляционной базы данных. Возможно, не стоит использовать DynamoDB как основную базу данных для приложений в сфере финансов или охраны здоровья.

Route53

Route53 — это DNS-сервис, который позволяет зарегистрировать доменное имя и привязать его к разным таргетам внутри инфраструктуры AWS.

Например, EC2 instance, Load Balancer или любой другой IP вне Amazon. Route53 предлагает разные виды маршрутизации.

Виды маршрутизации Route53:

  • аварийная — если какой-то из таргетов не отвечает, Route53 прекращает посылать трафик;
  • по величине задержки — сервис перенаправляет трафик к тому таргету, который отвечает пользователю быстрее всех;
  • по географическому расположению — Route53 выбирает таргет, который географически ближе к пользователю.
  • Курс Project Manager від Powercode academy.
    Онлайн-курс Project Manager. З нуля за 3,5 місяці до нової позиції Без знання коду, англійської та стресу.
    Зарееструватися

Подробнее со всем видами маршрутизации вы можете ознакомиться по ссылке.

Cognito

Cognito — сервис авторизации и аутентификации.

Поддерживает современные стандарты OAuth 2.0, OpenID Connect, SAML 2.0 и предлагает функционал регистрации, мультифакторную аутентификацию через email/sms, готовый пользовательский интерфейс, возможность интеграции со сторонними провайдерами (Facebook, Google и т.д.) и Microsoft Active Directory. 

SQS (Simple Queue Service)

SQS (Simple Queue Service) — это сервис для обмена сообщениями через очереди.

Позволяет обеспечить эластичность и слабую связанность между компонентами (сервисами) системы. Популярным опенсорс-аналогом SQS можно назвать RabbitMQ.

SQS предлагает два вида очередей:

  • Standart — более быстрый и масштабируемый вариант, но порядок доставки сообщений не гарантирован;
  • FIFO (first in-first out) — гарантирует порядок сообщений, но его скорость ограничена до 3000 сообщений в секунду.

SNS (Simple Notification Service)

SNS (Simple Notification Service) — сервис для отправки сообщений, который работает по модели publisher-subscriber.

Онлайн курс UI/UX Design Pro від Hillel IT School.
Навчіться проєктувати інтерфейси з урахуванням поведінки користувачів, розв'язувати їх проблеми через Customer Journey Mapping, створювати дизайн-системи і проводити дослідження юзабіліті, включаючи проєктування мобільних додатків для Android та iOS і розробку UX/UI на основі даних!
Дізнатися більше

Предположим, у вас есть издатель (publisher), который отправляет сообщение в SNS-топик. SNS рассылает сообщение нескольким подписчикам топика. В роли подписчиков может выступать SQL-очередь, e-mail, push-уведомления в мобильном приложении (подробнее об этом можно почитать здесь).

Приведу пример использования SNS. Допустим, в системе происходит регистрация нового пользователя. Мы отправляем сообщение об этом действии в SNS. Сервис посылает сообщение пользованию с текстом о том, что регистрация прошла успешно. В это же время сообщение отправляется в SQS-очередь, откуда данные потребляются, обрабатываются и отправляются в хранилище для последующего анализа. Также параллельно сообщение уходит в еще одну SQS-очередь, обработчик которой на базе предоставленной информации попробует получить дополнительные данные о пользователе со стороннего сервиса.

Lambda

Lambda — сервис, позволяющий выполнять определенный код в результате событий, не беспокоясь о настройке и поддержке инфраструктуры. В данном случае разработчик абстрагирован от такого понятия как сервер и может больше сосредоточиться на реализации своих бизнес-задач.

Разработчик пишет код, загружает его в AWS, и на его основе создается Lambda-функция. Затем он определяет триггер (событие), который будет запускать созданную функцию. Код должен содержать главную функцию-обработчик (точку входа), которая в виде аргументов получит детали о событии, запустившем выполнение функции.

Lambda поддерживает различные runtime: Node.js, Python, Ruby, Java, Go, .NET. Custom runtime позволяет настроить свой рантайм и использовать любые другие языки программирования (детальнее об этом — здесь).

AWS API Gateway

AWS API Gateway — позволяет определять HTTP RESTfull API или websocket-интерфейсы для других AWS-ресурсов.

Вы можете определять HTTP endpoints или websocket routes на разные бэкенды, например, AWS Lambda, SQS или DynamoDB.

API Gateway — это управляемый сервис, который не требует настройки и поддержки инфраструктуры. При этом он предоставляет масштабируемость и отказоустойчивость. Также «из коробки» поддерживается логирование, throttling запросов и кэширование. На уровне API Gateway можно определить авторизацию на основе интеграции с упомянутым выше AWS Cognito. А на базе API Gateway и Lambda — создать Serverless Application.

Суть в том, что в Lambda может загрузить не только простую функцию, но и полноценное веб-приложение. В этом случае API Gateway будет работать как прокси, перенаправляя запросы в пайплайн вашего приложения.

Онлайн-курс Бізнес-аналіз. Basic Level від Hillel IT School.
В ході курсу студенти навчаться техніці збору і аналізу вимог, документуванню та управлінню документацією, управлінню ризиками та змінами, а також навчаться моделювати процеси і прототипуванню.
Приєднатися

CloudFormation

CloudFormation — это сервис для автоматизации развертывания инфраструктуры.

Вы описываете ресурсы, из которых состоит ваша система, в файле формата YML или JSON. На его основе можно воссоздавать копии системы. CloudFormation удобен тем, что вся система управляется как единое целое. Удалить все ресурсы системы, обновить или воссоздать копию можно практически одной командой.

Время еще немного поучиться!

Время еще немного поучиться!

Материалы для самостоятельного обучения

Существует несколько способов изучения возможностей AWS. Можно воспользоваться техническими описаниями, руководствами, онлайн-курсами и видеороликами. Из личного опыта скажу, что мне довольно хорошо базово познакомиться с платформой помогла подготовка к сертификации AWS Certified Solutions Architect. Поэтому советую обратить внимание на этот курс, даже если в ближайшее время вы не собираетесь проходить сертификацию. Курс обзорный и поможет вам изучить основные компоненты AWS и в будущем подготовиться к тестированию на роль AWS Solution Architect.

Также среди других источников для обучения рекомендую ADV-IT — YouTube-канал, на котором как начинающий, так и опытный разработчик найдет информацию о сервисах AWS, основных способах взаимодействия с платформой, а также об инфраструктуре облачных вычислений.

И вообще — все полезные материалы вы найдете на официальном сайте Amazon Web Services. Удачи!

Читайте также: Как быстро впрыгнуть в DevOps, где зарабатывают по $5000, если вы уже разработчик

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Онлайн курс UI/UX Design Pro від Hillel IT School.
Навчіться проєктувати інтерфейси з урахуванням поведінки користувачів, розв'язувати їх проблеми через Customer Journey Mapping, створювати дизайн-системи і проводити дослідження юзабіліті, включаючи проєктування мобільних додатків для Android та iOS і розробку UX/UI на основі даних!
Дізнатися більше

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: