Devoxx Baratine
Raw notes from Baratine talk. Unfortunately, Simone Bordet and I were the only two attendees in a very large room. On the bright side, I can say that what the room lacked in quantity of attendees, it made up for in quality, at least in terms of depth of understanding of the space of Servlet, HTTP/2, and web technologies in general.
Sean Wiley, from Caucho Resin.
Architecture Overview
-
Described using the same boundaries as SOA.
-
But these are the same thing as microservices.
Baratine Service
-
strong encapsulation boundaries
-
Each service has its own thread and efficient lock-free inbox. Batches to the service.
-
Inside of a service, code can be single threaded.
-
Persistent services load and store to a document style key/value database
-
Services use their data in-memory. Loading and storing is transparent.
Database persistence.
- Built in. Cannot swap it out. Called Kraken.
Use cases
-
API engine. Baratine service can operate as a REST service. Can shard based on its own data.
-
DEMO: hello world rest service.
-
Simone asked about performance. He answered: they use the disruptor pattern in the implementation.
Has its own set of annotations similar to JAX-RS.
-
-
DEMO 2: Bookstore
Showed how persistence can be enabled with two simple single annotations.
-
REST service details
Gave some performance numbers to show 2x performance over RESTEasy.
-
“faster because it removes the database from the critical path”.
-
How do you do backpressure?
The inbox concept allows them to do backpressure. Requests are journaled into the inbox.
-
Performance is achieved from implicit batching.
-
Use case 2: Auction Microservice https://github.com/baratine/auction A complete worked example.
-
Baratine can be used as a library, or embedded for fat-jar style.
Bottom line analysis. Baratine looks like a good solution if you can afford to live within in a proprietary stack.*sh