Добрый день!
Собираемся написать бекенд для специфического чата. Хочу разобраться, насколько применимы akka streams с их flow, graph & dsl, GraphStage.
Так получилось, что мнения у нас разделились на диаметрально противоположные:
Одни считают, что надо писать все на сабже, от сетевого стека до работы с базой данных, включая всю бизнес логику. Приложение, грубо говоря, выглядит как один большой graph из сотен отдельных flow, graph, GraphStage. При этом, в большинстве случаев, следует писать логику именно как компонент GraphStage.
Вторые считают, что сабж - дичайший оверинжиниринг. В реальном окружении, с реальной нагрузкой базы данных, сетью, ceph, и другими компонентами толку от backpressure просто не будет. Оверхед на использование стримов так же довольно значительный. Писать код практически полностью на GraphStage - сложно, багоемко, требует внимания к деталям, понимания как именно работает backpressure на уровне имплементации этого относительно низкоуровневого компонента.
Был бы признателен, если бы кто-нибуть поделился опытом.
PS. Я лично согласен со вторыми, но опыта именно на scala у меня всего год.
PPS. Раньше считал, что самый зашквар это обмазываться свободными монадными трансформерами hlist-ов, но теперь я знаю про akka streams.