A better programming model for reactive applications
Create web services without an app server, database, or cache needed. Embed them in current Spring/Guice/Java EE containers OR run them in standalone JVMs as Microservices.
✔ Less lines of code ✔ Automatic request batching ✔ Simple and clean asynchronous APIs ✔ Automatic persistence (No database code)
[Baratine is] an Object-Oriented toolkit that simplifies building distributed & reactive
applications for Cloud, Mobile or SOA environments. Baratine can be ran standalone or used as a library embedded in your current framework (5 MB).
Reactive Apps Meet Reactive Data
Working with data is the critical path of every application. Baratine guarantees only a single service owning thread will mutate a service's data. This unique threading & data model does three things: (1) Allows data to be operated on continuously (2) Eliminates database bottlenecks (3) Eliminates multi-threaded concurrency concerns
This improved programming model means you can code a Microservice Websocket chatroom, a real time auction, or simple & clean asynchronous REST services with straightforward Java 8 code. Baratine's internals guarantee every service to be highly available, recoverable, and operate within an isolated thread context.
Clean & understandable asynchronous REST services are the perfect fit for Baratine's model. Services are fast, as in millions of operations per second per instance fast, clients can be in any programming language, and applications operate entirely in-memory. Beyond high performance async REST services, Baratine can be used for:
Application APIs - Integrate existing or new APIs
With zero code modifications, you can turn existing libraries or services into fully asynchronous web services. We wrapped Apache Lucene and it outperformed Apache Solr by 3x!
Microservices - Messaging
Baratine services provide encapsulated functionality while automatically scaling across multiple servers. Integrate message queues and operate on the messages in the Baratine environment.
Our Inspiration: The Long Road Taken
When we first started Baratine, it was just an in-memory service platform backed by a queue. The problem Baratine was trying to solve was simple. It’s incredibly inefficient having to touch the database upon every read or update request. Baratine revolutionizes the traditional model by keeping data in memory. You only need to worry about updating your in-memory dataset. Baratine is responsible for persisting your data to the database at set intervals. In effect, Baratine takes the database out of the operational critical path. The in-memory data becomes operational data that it is live and always ready-to-use.Based on this simple idea, we started to build out Baratine over the years. Baratine has grown to be a complete reactive platform for web services. But the road getting there was not easy. To gauge user enthusiasm for a radically new model, we presented Baratine at several Java User Groups across the county. Based on feedback, we had to simplify Baratine’s programming model and scale back Baratine’s clustering features. In the end, it was worth the time and effort to be able to present a refined programming model for a v1.0.0 release.