Support for Roadrunner application server?

Hi there,

I stumbled over https://roadrunner.dev/ already some longer time ago but just now took some time to play with Roadrunner and Flow.

It should be quite possible to integrate Flow via the Roadrunner workers and have a PSR-7 request handler. I got it working (Neos frontend output basically) in an hour - but memory/state leaks und proper shutdown / cleanup is another story :wink:

I always find it hard to run PHP applications with PHP-FPM etc. in the long run. Also container setups either have to use multiple processes (e.g. Supervisord) or be composed of multiple containers (e.g. FPM + Nginx) which adds unnecessary complexity. Single (root) process applications are much easier to handle IMHO. We could also get rid of a lot of caching when (optionally) embracing this kind of architecture.

My first naive approach results in response times of <10ms for cached requests with the demo site, which would be very nice. But performance is not my main concern here - I’d rather reduce operational complexity. Having less resource requirements wouldn’t hurt though.

Is anyone interested in pursuing this topic further?

7 Likes

Really interesting topic. Some time ago i already tried to get php-pm (https://github.com/php-pm/php-pm) working, but that was long before the PSR-7 rewrite.

Memory leaks are going to be a huge challenge. The current Flow object scopes don’t really make sense in this context. Java EE applications have a Request, Session and Application scope for objects.

2 Likes

Hey Christopher, I think supporting Roadrunner out-of-the-box is a must have for the future of Flow and Neos - many big companies will switch their production environment to roadrunner. I’m using roadrunner with Laravel in production and it just rocks. Everything is so fast and you can use rpc to optimize the setup even further (e.g. using the key value cache for response caches, etc…).

2 Likes

I’ve never heard of it… :thinking: So I guess it’s a target group thing…

That’s what I was thinking too.

And for me it’s really about making the whole stack easier to run in dev and in production. No fiddeling with webserver - FCGI - FPM and so on. This is really a mess and hard to get right (in my experience).

It shouldn’t be required to run Flow this way - but I think a somewhat opinionated default setup where you can just start a single process (in dev and production!) would be really compelling for me.

I implemented a very basic first working version of Neos running on Roadrunner (very much experimental): GitHub - Flowpack/roadrunner-distribution: (Experimental) Neos / Flow via Roadrunner

2 Likes

Hey everybody,

FYI I also experimented with it and have some code locally somewhere :slight_smile: :slight_smile: Have to check that.

All the best,
Sebastian