Имеет ли смысл использовать актер / агентно-ориентированное программирование в среде Function as Service?
Мне интересно, можно ли применить библиотеку агента / актера (Akka, Orbit, Quasar, JADE, Reactors.io) в среде Function as a Service (OpenWhisk, AWS Lambda)?
Имеет ли это смысл?
Если да, то каков минимальный пример, представляющий добавленную стоимость (чего не хватает, когда мы используем только FaaS или только библиотеку актеров / агентов)?
Если нет, то можем ли мы построить граф решений, который может помочь нам решить, должны ли мы для нашей проблемы использовать библиотеку актеров / агентов или FaaS (или что-то еще)?
1 ответ
Это вопрос, основанный на мнениях, но я думаю, что в нынешней форме нет смысла помещать актеров в FaaS - противоположные работы на самом деле довольно хороши: OpenWhisk реализован поверх Akka.
Есть несколько причин:
- Текущая форма FaaS по своей природе не имеет состояния, что значительно упрощает такие вещи, как маршрутизация запросов. Актеры по своей природе.
- Исходя из моего опыта, функции FaaS, как правило, не связаны друг с другом - вам нужны некоторые внешние ресурсы, но это ментальная модель: общие ресурсы и возможности. В моделях акторов мы склонны мыслить категорией отдельных сущностей, представленных как акторы, т.е. пользователь Макс, а не как таблица пользователей. Я не рассматриваю здесь область использования актеров исключительно как единицу параллелизма.
- Приложения FaaS имеют очень короткий срок службы - это один из основополагающих элементов. Поскольку создание, размещение и восстановление состояния для более сложных субъектов могут занять некоторое время, и вам обычно требуется много из них для выполнения одной задачи, вы можете оказаться в точке, когда восстановление состояния системы занимает больше времени, чем фактическое выполнение задача, для которой необходимо это состояние.
При этом, возможно, что в будущем эти два подхода в конечном итоге сойдутся, но за ним должны последовать изменения как в ментальной, так и в инфраструктурной модели (т.е. субъекты живут во время выполнения, о чем FaaS должен знать). IMO, устанавливающий существующие структуры акторов поверх существующих поставщиков FaaS, на данный момент неосуществим.