Поваренная книга AWS CDK Serverless: введение

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

Обзор веб-сервисов Amazon

Amazon Web Services[1] (AWS) — это служба облачных вычислений от Amazon. Облачные вычисления — это модель, в которой услуги вычислений и данных (например, серверы и хранилища) размещаются у другой компании и доступны через Интернет. В традиционных моделях используется локальный хостинг, при котором все серверы и хранилища данных размещаются внутри зданий, в которых организации осуществляют свою деятельность. В некоторых организациях используется гибридная модель, в которой используются как локальные, так и облачные решения. В этой книге основное внимание будет уделено облачным вычислениям, несмотря на то, что локальное создание бессерверного решения возможно.

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

В 2014 году AWS представила AWS Lambda. Lambda позволяла разработчикам запускать код без необходимости выделять сервер. Внедрение Lambda представило «бессерверные вычисления».

Обзор бессерверных вычислений

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

На протяжении многих лет безсерверные технологии ассоциировались с определенными ключевыми преимуществами:

  • Более быстрая разработка
  • Услуги по запросу
  • Улучшенная эластичность
  • Повышенная масштабируемость
  • Упрощенное обслуживание
  • Уменьшенные поверхности атаки

Эти преимущества связаны с архитектурами, управляемыми событиями, которые обычно используются для бессерверных приложений. Архитектура, управляемая событиями, предполагает, что системная активность управляется событием. Например, компьютер отправит HTTP-запрос в интерфейс прикладного программирования (API). API перенаправит событие HTTP в функцию Lambda. Функция выполнит код и отправит ответ API. API перенаправит ответ на компьютер. В этом примере функции API и Lambda не будут активны, пока не получит HTTP-запрос.

Архитектуры микросервисов можно использовать в бессерверных вычислениях. Эта парадигма дизайна позволяет нам разделить ресурсы на логические группы. Например, у нас может быть API и функции Lambda для создания, чтения, обновления и удаления пользовательских данных. Приложение будет выполнять вызовы API к микросервисам для обработки соответствующих данных.

Бессерверные приложения могут страдать от чрезмерно сложной архитектуры, которую сложно поддерживать. Например, событие HTTP отправляется в API. API перенаправляет запрос функции Lambda. Функция Lambda отправляет событие в очередь и ответ API. Другая функция Lambda опрашивает очередь и использует ее данные для записи данных в базу данных. База данных отправляет событие другой функции Lambda, которая записывает данные в корзину S3. Ведро S3 отправляет событие другой функции Lambda, которая обновляет значение в хранилище параметров. Мы можем легко попасть в эти запутанные ловушки дизайна, когда разрабатываем бессерверное приложение ad-hoc.

В этой книге мы больше сосредоточимся на построении нашего приложения, чем на архитектурном дизайне. Эта книга предназначена для практиков, которые хотят шаг за шагом научиться создавать бессерверные приложения. Мы постараемся максимально упростить дизайн бессерверного приложения. Мы будем использовать принцип Keep It Super Simple (KISS).

Обзор инфраструктуры как кода

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

В 2010 году AWS запустила AWS CloudFormation, позволяющую пользователям записывать свои облачные конфигурации в форматах файлов JSON и YAML. Пользователь может использовать интерфейс командной строки AWS (CLI) или комплект средств разработки программного обеспечения (SDK), чтобы запросить у CloudFormation создание ресурсов с использованием шаблона CloudFormation. Теперь команды могут использовать «код» для развертывания своей облачной инфраструктуры и поддерживать свою облачную конфигурацию в репозиториях исходного кода.

В 2015 году была запущена Serverless Framework[2], чтобы упростить создание шаблонов CloudFormation для бессерверных вычислений. Платформа предоставила простой настраиваемый шаблон YAML, упрощающий создание и развертывание бессерверных проектов.

В 2018 году AWS создала комплект AWS Cloud Development Kit (CDK). Вместо написания шаблонов CloudFormation разработчики могут создавать свои облачные ресурсы, используя JavaScript, TypeScript, Python, Java, C# и Go. В отличие от Serverless Framework, CDK позволяет писать код для развертывания любого ресурса AWS, который можно развернуть с помощью CloudFormation. Serverless Framework может развертывать шаблоны CloudFormation для небессерверных облачных ресурсов. Обе структуры имеют свои преимущества и недостатки. Пожалуйста, прочитайте сообщение ниже для более подробной информации. Мы создадим нашу облачную инфраструктуру с помощью кода с помощью платформы AWS CDK.



Обзор комплекта для разработки облака AWS

Фреймворк AWS CDK позволяет нам создавать инфраструктуру как код с приложениями CDK. Приложение CDK используется для развертывания группы облачных ресурсов AWS. Приложение CDK состоит из следующих компонентов:

  • Исполняемый bin-файл, который запускает приложение
  • Стеки, в которых есть группа облачных ресурсов
  • Облачные ресурсы, определяемые конструкциями

Стек CDK создаст стек CloudFormation. Таким образом, приложение CDK позволяет нам разрабатывать несколько стеков CloudFormation, используя код приложения CDK.

CDK предоставляет конструкции для настройки облачных ресурсов. Существует три типа конструкций:

  • Конструкции уровня 1 позволяют нам напрямую настраивать ресурс CloudFormation. Конструкция L1 предоставляет те же свойства, что и шаблон CloudFormation.
  • Конструкции уровня 2 — это абстракция конструкций L1 для настройки группы ресурсов CloudFormation для развертывания логической группы. Например, пакет aws_lambda предоставляет конструкцию Function, которая создаст лямбда-функцию и необходимые ей ресурсы CloudFormation. AWS записывает конструкции L2.
  • Конструкции уровня 3 — это следующий уровень абстракции, позволяющий нам группировать конструкции уровня 2. Например, мы можем создать конструкцию L3 для создания функции Lambda, связанной группы журналов CloudWatch и добавления пользовательских тегов. Мы создаем конструкции или получаем их из Construct Hub.

Концепции станут более очевидными, когда мы создадим наше бессерверное приложение.

Обзор главы

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

Далее мы настроим нашу учетную запись AWS и среду разработки для создания нашего приложения.





Электронная книга «AWS CDK Serverless Cookbook
Пошаговое руководство по созданию бессерверного приложения в облакеmedium.com»



Перед тем, как ты уйдешь

Подпишитесь на мою рассылку, чтобы получать новые главы на свою электронную почту.



Сноски

[1] Amazon Web Services является зарегистрированным товарным знаком Amazon Web Services, Inc.

[2] Serverless Framework является зарегистрированным товарным знаком Serverless, Inc.