| Leonardo is almost production ready, we usually just add some lines to tune the caching parameters as needed. This is the code for the Jolie website if you're curious about an example: https://sourceforge.net/p/jolie/code/HEAD/tree/web/trunk/jol... We launch leonardo/leonardo.ol on the server. The reason for which Leonardo works is that "execution { concurrent }" line which tells Jolie to start a new (light) process whenever a top-level operation is invoked. In this case we have only default, a catch-all operation for serving requests for files. So each time a client invokes Leonardo, a new process handles the request. Jolie processes are implemented as threads (cached in a thread pool when possible) with a local state (no data sharing, only communications). Notice that in Leonardo we are embedding frontend.ol, which means that it will be run as a sub-service. And we also aggregate it in the HTTP input port, which means that its operations become available to clients. So now clients can not only invoke the catch-all default operation, but also the operations in frontend.ol. Looking at frontend.ol, you will find one of these operation, e.g., "news". That's what you access when you go to http://www.jolie-lang.org/news What does it do? It uses another sub-(micro)service, a blog reader, to fetch blog entries from our news blog, and then displays it to the user. It's all a bit crude, in the enterprise we don't usually build html from scratch, but the Jolie website was so simple that we just went for it. |