AWS Lambda і жодних серверів

Особисто для мене Amazon Web Services завжди асоціювався з Infrastructure as a Service (IaaS), на базі якого кожен будував свої сервіси і додатки. Але є і претендують на роль платформи у вигляді сервісу, наприклад, Elastic Beanstalk і OpsWorks. Хоча, на мою думку, їх з натяжкою можна вважати PaaS, так як залишається доступ до інфраструктури, і разом з тим головний біль за її адміністрування.

Вся принадність PaaS — це нульові витрати на адміністрування, простота використання і, як наслідок, можливість сфокусуватися на коді програми, забувши про те, як його розгортати, інтегрувати і підтримувати.

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


Концепція
Основною робочою конячкою є лямбда-функція (або Лямбда-вираз). Лямбда-функція пов'язується з контекстом:
  • Оточення: ЯП, кількість оперативної пам'яті, налаштування доступу
  • Ресурси, зміни яких треба відслідковувати
  • Код — та сама функція, виконувана при отриманні повідомлення про зміну ресурсу


Як це працює
При зміні ресурсу генерується повідомлення, яке активує функцію. У свою чергу вона (функція) має досутп до 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). Детальніше про ціни можна подивитися тут. Там же є кілька прикладів. Я наведу один з них.
Якщо час виконання функції дорівнює 1 секунді, і вона буде запущена 3 млн разів протягом місяця, то ми отримаємо рахунок в $18.34.

Посилання по темі
Офіційний блог
Стартова сторінка сервісу

p.s.
AWS Lambda знаходиться в стадії «preview», щоб зареєструватися і отримати доступ, необхідно заповнити запит посилання. Враховуючи дуже хороший free tier, спробувати варто. Якщо буде час, то я обов'язково поділюся практичним досвідом використання.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.