Как стать автором
Обновить

Комментарии 18

Видео спецально записывалось тем, кто плюет в микрофон? Слушать вообще не возможно. По существу: вот интересно, на сколько дороже использовать этот сервис, чем обычная виртуалка на linux в том же azure vm.
Смысл функций в том, как я понял, что их можно подвязать на события из storage. Новые записи в таблицах, очередях и т.д.
В теории да, но как работает их storage я думаю все знают — отваливается по timeout очень часто. Обязательно проверю, как работает привязка, надеюсь она получает данные не по триггеру на insert, а до вставки в таблицу или блоб. Это удобно для стриминговых проектов, когда лень писать инфраструктуру.
Нет тригера на таблицы, есть на очередь и BLOB. Работает по тестам вполне хорошо.
А что с надёжностью? Смотрю на них с беты. Вот приходит событие с queue например, а код упал (ну мало ли что) — событие пропадёт или перезапустится функция?
я так понимаю просто output не сработает именно для этого эвента и следующее обращение к функции будет уже как будто ничего не было

Читал только обзоры типа этого про serverless. Как я понял идею, по факту появления события в очереди, поднимается виртуалка/контейнер, читает событие из очереди, обрабатывает его, возможно генерируя новые и события и умирает. Красиво? Вроде. Вопрос — а насколько увеличивается время обработки события по сравнению с демоном, подписанном на ту же очередь? Запустить даже докер-контейнер может секунды занимать (


time docker run busybox


real 0m0.482s
user 0m0.012s
sys 0m0.012s
), не говоря о полноценной виртуалке.

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

Если интересно, как устроеные функции — это здесь https://github.com/Azure/azure-webjobs-sdk-script

Функции, если упростить, это несколько специализированные и заточенные под некоторые типы сценариев WebJob.
Вообще-то не совсем «там не совсем так» :) Практически у всех реализаций все обернуто либо в контейнер, либо, как минимум, в неймспейсы, изолирующие одни юзерские процессы от других. Да и если рабочее окружение контейнера с файловой системой уже находится в кэше, то запуск процесса в контейнера ничем не отличается от простого запуска процесса. То есть время на запуск процесса и загрузку в него библиотек требуется по-любому.

Где-то могут быть еще вариации, типа security manager в JVM, позволяющий в одной JVM запускать треды разных юзеров. Ну или PHP с safe_mode. Но это, честно говоря, кривая реализация и от таких нужно бежать — со всех сторон плохо: и плохо с безопасностью, и конкуренция за ресурсы, и неточный биллинг.

В Azure не стали же делать криво?
Функции — специализированные WebJob. WebJob запускаются в изолиованом окружении на базе Kudu — https://github.com/projectkudu/kudu

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

Вот здесь https://github.com/Azure/azure-webjobs-sdk-script/issues/298 и вот здесь https://github.com/Azure/azure-webjobs-sdk-script/issues/529 можно почитать обсуждение с разработчиками на тему холодного запуска для функций на js с большим деревом npm зависимостей, там можно и про детали реализации почитать, если нет желания смотреть в код.

Когда я тестировал «сами в себе» C#, собранные в библиотеки функции подобных проблем не наблюдал.
А на события можно и демона повесить?
Можно, но для этого нужен/предназначен WebJob. Другой способ масштабирования и он не совсем serverless.

JVM-языки поддерживаются?

Официально нет, но техническая возможность есть https://github.com/Azure/azure-webjobs-sdk-script/wiki/Creating-a-Java-Azure-Function

Спасибо. Было бы еще интересно почитать про сравнение с AWS Lambda, поскольку сервисы, по сути, конкурирующие.

Вот есть сравнение на StackOverflow http://stackoverflow.com/questions/40326085/compare-aws-lambda-azure-functions-and-google-cloud-function
Безсерверная — пишется через «з»
Согласно правилам правописания приставок русского языка, оканчивающихся на з/с, изучаемых приблизительно в 5 классе, там пишется «с».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий