Ежегодный AWS re:Invent, проходивший в конце 2021 года, принёс массу новостей про бессерверные технологии Я нашёл самые интересные: под катом мы поговорим про запуск функций на Graviton2, новых возможностях для машинного обучения, перенос разработки в облако и визуальный редактор для step-функций.
AWS продолжает упрощать разработку
AWS Lambda создавался, чтобы упростить разработку приложений. С годами развивался параллелизм, уменьшалось время старта функций, росло число поддерживаемых языков, появилась поддержка контейнеризации. Сейчас развитие идёт в сторону более гибкой настройки биллинга и простой интеграции бессерверных вычислений даже в экзотичные бизнес-процессы.
Тюнинг Lambda: новый процессор, улучшена многопоточность и работа с большими объемами данных
AWS не только анонсировала процессор третьего поколения Graviton3, но и рассказала о доступности новых высокопроизводительных инстансов на базе Graviton2 для EC2. Они ориентированы на работу с базами данных и аналитику. Нововведение доступно и для бессерверных вычислений — при настройке запуска лямбды можно выбрать архитектуру x86 или ARM/Graviton2.
По данным AWS, обновление увеличивает производительность в среднем на 19% и сокращает время выполнения кода. Это позитивно отражается на стоимости: тут AWS оценивает бонус в 20%. Особенно улучшения заметны на многопоточных вычислениях или в ситуациях, где много операций ввода-вывода. Если у функции нет особенностей, привязанных к архитектуре, — то есть используется интерпретируемый язык — настройки даже позволяют переключаться между платформами.
По данными собственной аналитики, бессерверные функции всё чаще используются для машинного обучения, поэтому в Lambda появилась возможность запускать нагруженные функции:
включающие большие контейнеры;
работающие на масштабных датасетах;
требующие до 10 Гб оперативной памяти.
А в ближайшем будущем появится доступ к эфемерным томам до 10 Гб по модели оплаты только за используемое хранилище.
Новые возможности для разработчиков
Дэвид Ричардсон анонсировал целый набор возможностей, сокращающих время разработки, — SAM Accelerate. В условиях, когда разработчик старается писать код как можно быстрее, появилась возможность отказаться от локального тестирования, перенести этот процесс в облачную инфраструктуру и:
собирать только ту часть артефактов, которая изменилась с последнего билда. Благодаря этому теперь нет большой задержки между внесением изменений и возможностью их протестировать;
быстро синхронизировать изменения кода с облаком за счёт команды sam sync, которая различает код и конфигурации, а поэтому может гибко настраиваться;
получать логи со всех ресурсов с помощью одной команды, чтобы быстро понимать, что происходит в приложении.
Всё это теперь — часть набора инструментов для построения облачной инфраструктуры AWS SAM CLI.
Прямо перед re:Invent разработчики AWS выкатили ещё одну особенность, улучшающую гибкость, — возможность фильтрации событий по источникам. Благодаря ей можно не тратить мощности лямбды на обработку лишнего. Поддерживается фильтрация Amazon Kinesis Data Streams, Amazon DynamoDB Streams и Amazon SQS.
В AWS серьёзно поработали над процессом деплоя и в июле 2021 года представили AWS SAM Pipelines — автоматическую генерацию пайплайнов для деплоя бессерверных приложений. AWS SAM Pipelines содержит набор шаблонов, с помощью которых можно быстро создавать безопасные конвейеры непрерывной интеграции и развёртывания для популярных CI/CD-систем. На данный момент поддерживаются AWS CodePipeline, Jenkins, GitHub Actions и GitLab CI/CD. А ещё в 2021 году наконец-то выкатили Lambda-расширения (AWS Lambda Extensions), предварительный доступ к которым появился за год до этого. Теперь в среде Lambda можно использовать привычные средства мониторинга приложений или поиска уязвимостей.
Новые возможности для архитекторов приложений
Как я уже писал, в AWS Lambda теперь поддерживает образы контейнеров до 10 Гб, поэтому в Lambda можно завернуть более сложные приложения с зависимостями.
В последнее время в AWS задумались об оптимизации затрат на запуск Lambda при нестабильных нагрузках. Если раньше биллинг рассчитывался с точностью до 100 мс, то с конца 2020 года доступна точность в 1 мс. Это немного меняет баланс при сравнении аренды инстансов и бессерверных вычислений с точки зрения стоимости владения. По оценкам Amazon, изменения в биллинге позволяют некоторым клиентам избежать до 70% расходов. Ощутимо сэкономить поможет и описанная выше фильтрация событий по источнику.
Второе направление развития бессерверных технологий AWS — сокращение объёма сопутствующего кода, который необходимо написать, чтобы запустить свою функцию и соединить между собой различные части инфраструктуры проекта. Одно из самых заметных преобразований — возможность интегрировать Step Functions через шину событий. Теперь можно объединять части, ориентированные на события, и части, где нужна оркестрация. Благодаря SDK можно реализовать интеграцию с 200 сервисами и 900 API.
Стало проще конструировать step-функции: теперь это можно делать с помощью AWS Step Functions Workflow Studio — визуального интерфейса, который фокусируется на бизнес-логике, а не на коде. В редакторе из готовых блоков можно составить весь рабочий процесс, включая преобразование данных и интеграции. Потом Workflow Studio проверит и сгенерирует код, который можно экспортировать. По факту редактор сокращает усилия, необходимые для конфигурации бизнес-процесса, и ускоряет разработку.
Немного ностальгии
А знаете ли вы, что в прошлом году у Amazon EC2 был юбилей? Он был запущен в 2006 году.
На re:Invent участники запуска рассказывали, что всё начиналось с идеи предоставить инструменты и сервисы, которые позволили бы разработчикам строить любые приложения прямо в интернете. Развитие EC2 началось со стопки ноутбуков в офисе: разработка стартовала в Кейптауне (Южная Африка), и пинг до ближайшего дата-центра был слишком велик, чтобы использовать специализированные мощности. Клиенты могли арендовать ресурсы одного из этих ноутбуков под свои задачи.
Через десять лет лет идея шагнула за рамки типового инстанса — к бессерверным вычислениям, которые решают всё более сложные задачи и сейчас AWS активно развивает это направление. Будем надеяться, что следующий re:Invent принесёт ещё много интересного!
Если вам интересна экосистема Serverless-сервисов и все, что с этим связано, заходите в сообщество в Telegram, где можно обсудить serverless в целом.