- PVSM.RU - https://www.pvsm.ru -

AWS Lambda и никаких серверов

AWS Lambda и никаких серверов - 1 Лично для меня Amazon Web Services всегда ассоциировался с Infrastructure as a Service (IaaS), на базе которого каждый строил свои сервисы и приложения. Но есть и претендующие на роль платформы в виде сервиса, например, Elastic Beanstalk и OpsWorks. Хотя, по моему мнению, их с натяжкой можно считать PaaS, так как остается доступ к инфраструктуре, и вместе с тем головная боль по её администрированию.

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

Итак, по словам представителей AWS, Lambda позволит забыть об инфраструктуре и запускать приложения в облаке, при этом получая интеграцию с другими сервисами Amazon, масштабируемость, низкую цену использования вычислительных ресурсов. Все, что нужно для старта, — написать функцию, ассоциировать её с событиями. После этого амазон автоматически выполнит функцию при каждом новом событии. О масштабировании и высокой доступности можно не думать: наша функция сможет обработать десятки тысяч запросов в час без каких-либо усилий с нашей стороны, без бекенда в традиционном его понимании.

Концепция

Основной рабочей лошадкой является лямбда-функция (или Лямбда-выражение [1]). Лямбда-функция связывается с контекстом:

  • Окружение: ЯП, количество оперативной памяти, настройки доступа
  • Ресурсы, изменения которых нужно отслеживать
  • Код — та самая функция, выполняемая при получении сообщения об изменении ресурса

Как это работает

При изменении ресурса генерируется сообщение, которое активирует функцию. В свою очередь она (функция) имеет досутп к JSON объекту, который содержит всю необходимую информацию об этом изменениии, или о другом сообщении.

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

Необходимо помнить о том, что наша функция не сохраняет свое состояние (stateless), поэтому результаты работы нужно сохранять в каком-либо хранилище данных. В нашем примере — это S3 bucket.

Окружение

На данный момент поддерживается только Java Script + Node,js. Также можно загружать библиотеки и использовать AWS SDK. Насколько я понял из видео презентации, под капотом используется Docker, запущенный на EC2 инстансе.

Текущие ограничения и планы на будущее

В первую очередь бросилось в глаза:

  • отсутствие готового CI/CD
  • нет интеграции с системами контроля версий (git, svn)

Также, как было сказано выше, поддерживается только Java Script, как язык программирования.

В планах расширить список поддерживаемых сервисов (сейчас это S3, DynamoDB и Amazon Kinesis) и увеличить количество поддерживаемых ЯП.

Цена

Этот сервис оплачивается по двум параметрам: количество запросов и их суммарное время выполнения с учетом потребляемой памяти.

Количество запросов

  • первый миллион запросов в месяц — бесплатно
  • все, что сверх этого предела, — $0.20 за 1 млн запросов ($0.0000002 за один запрос)

Суммарная продолжительность выполнения запросов

  • время запуска считается от начала работы функции до возврата результата, либо до остановки по таймауту (задается для каждой функции)
  • время округляется в большую сторону до ближайшего кратного 100 мс числа
  • стоимость каждой секунды зависит от количества выделенной памяти, т.е. $0.00001667 за каждую Гигабайт-секунду

По обыкновению, AWS предоставляет бесплатный период (free tier). Подробнее о ценах можно посмотреть здесь [2]. Там же есть несколько примеров. Я приведу один из них.
Если время выполнения функции равно 1 секунде, и она будет запущена 3 млн раз в течение месяца, то мы получим счет в $18.34.

Ссылки по теме

Официальный блог [3]
Стартовая страница сервиса [4]

P.S.

AWS Lambda находится в стадии «preview», чтобы зарегестрироваться и получить доступ, необходимо заполнить запрос по ссылке [5]. Учитывая очень хороший free tier, попробовать стоит. Если будет время, то я обязательно поделюсь практическим опытом использования.

Автор: morkot

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/77368

Ссылки в тексте:

[1] Лямбда-выражение: https://ru.wikipedia.org/wiki/%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F

[2] здесь: http://aws.amazon.com/lambda/pricing/

[3] Официальный блог: https://aws.amazon.com/blogs/aws/run-code-cloud/

[4] Стартовая страница сервиса: http://aws.amazon.com/lambda/

[5] ссылке: https://aws.amazon.com/lambda/preview/

[6] Источник: http://habrahabr.ru/post/245949/