Комментарии 18
Видео спецально записывалось тем, кто плюет в микрофон? Слушать вообще не возможно. По существу: вот интересно, на сколько дороже использовать этот сервис, чем обычная виртуалка на linux в том же azure vm.
Смысл функций в том, как я понял, что их можно подвязать на события из storage. Новые записи в таблицах, очередях и т.д.
В теории да, но как работает их storage я думаю все знают — отваливается по timeout очень часто. Обязательно проверю, как работает привязка, надеюсь она получает данные не по триггеру на insert, а до вставки в таблицу или блоб. Это удобно для стриминговых проектов, когда лень писать инфраструктуру.
А что с надёжностью? Смотрю на них с беты. Вот приходит событие с queue например, а код упал (ну мало ли что) — событие пропадёт или перезапустится функция?
Читал только обзоры типа этого про serverless. Как я понял идею, по факту появления события в очереди, поднимается виртуалка/контейнер, читает событие из очереди, обрабатывает его, возможно генерируя новые и события и умирает. Красиво? Вроде. Вопрос — а насколько увеличивается время обработки события по сравнению с демоном, подписанном на ту же очередь? Запустить даже докер-контейнер может секунды занимать (
time docker run busybox
real 0m0.482s
user 0m0.012s
sys 0m0.012s
), не говоря о полноценной виртуалке.
Там не совсем так, нет контейнеров, поэтому время запуска в холодную меньше в любом случае. Но, в целом, правильный вопрос. Иногда возникали задержки при первом вызовые функции, когда они были в preview, обещали решить этот вопрос к релизу.
Если интересно, как устроеные функции — это здесь https://github.com/Azure/azure-webjobs-sdk-script
Функции, если упростить, это несколько специализированные и заточенные под некоторые типы сценариев WebJob.
Если интересно, как устроеные функции — это здесь https://github.com/Azure/azure-webjobs-sdk-script
Функции, если упростить, это несколько специализированные и заточенные под некоторые типы сценариев WebJob.
Вообще-то не совсем «там не совсем так» :) Практически у всех реализаций все обернуто либо в контейнер, либо, как минимум, в неймспейсы, изолирующие одни юзерские процессы от других. Да и если рабочее окружение контейнера с файловой системой уже находится в кэше, то запуск процесса в контейнера ничем не отличается от простого запуска процесса. То есть время на запуск процесса и загрузку в него библиотек требуется по-любому.
Где-то могут быть еще вариации, типа security manager в JVM, позволяющий в одной JVM запускать треды разных юзеров. Ну или PHP с safe_mode. Но это, честно говоря, кривая реализация и от таких нужно бежать — со всех сторон плохо: и плохо с безопасностью, и конкуренция за ресурсы, и неточный биллинг.
В Azure не стали же делать криво?
Где-то могут быть еще вариации, типа 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#, собранные в библиотеки функции подобных проблем не наблюдал.
В контейнер там не обёрнуто, безусловно, время на запуск процесса требуется, поэтому на первый холодный запуск фукнции в 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#, собранные в библиотеки функции подобных проблем не наблюдал.
А на события можно и демона повесить?
JVM-языки поддерживаются?
Безсерверная — пишется через «з»
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Микросервисы: Azure Functions — скажи серверу нет