TheDeveloper Platform
Modern backends sprawl into a mix of databases, queues, workers, and glue code. That fragmentation slows development and complicates operations.
Rama replaces that whole stack with a unified, fault-tolerant programming model that scales from one node to thousands.
Customer Testimonials
Multiply
"With databases, the conversation always started with 'what are we able to do?'. I rarely find myself asking what Rama is able to support, and rather 'how?'. The requirements of the application dictate how we utilise the platform, not the other way around. Rama as a tool allows us to think product first, while still delivering highly optimised and scalable features for specific use cases, something that would not have been possible without a much larger team."
→ Multiply used Rama to build a highly interactive AI-powered platform for collaboration and co-creation.AfterHour
"Rama provides exactly the type of persistence, routing, and data locality for processing that is required to handle chat as scale. We would have easily spent 3-6 months building an inferior backing to our chat system if it were not for Rama. We are running many rooms with thousands of concurrent users in each and do not see any reason why it won't continue to scale as we add more users, more features, and more rooms."
→ AfterHour used Rama to build an ultra-scalable chat service where users collaborate and learn from each other on stock trading.Netcetera
"Rama enabled us to improve the performance of two critical metrics for Forward Publishing by over 100x, and it reduced our AWS hosting costs by 55%. It sounds like a cliché, but learning Rama mostly involved us unlearning a lot of the conventional wisdom accepted by the software industry. It was a strange experience realising how much simpler software can be."
→ Netcetera used Rama to rebuild Forward Publishing, which powers digital newspapers serving millions of people in Switzerland and Germany.
LESS CODE FOR LARGE-SCALE BACKENDS
Building and managing large-scale backends involves juggling numerous tools for storage, computation, deployment, and coordination. Worse, custom tools frequently need to be built from scratch for specialized storage or computation needs.
By being a unified platform, Rama drastically reduces the amount of infrastructure needed. Additionally, it eliminates the need to build custom infrastructure since its simple building blocks can be composed in innumerable ways to satisfy any storage or computation use case.
For an example of this cost reduction, see our complete reimplementation of Mastodon to be Twitter-scale in 100x less code than Twitter wrote to build the equivalent.
REDUCED INFRASTRUCTURE COMPLEXITY
Since Rama can build an entire backend with diverse needs on its own, the amount of infrastructure needed is greatly decreased.
Rama makes it easy too. This greatly simplifies productionizing an application, as deploying, updating, and scaling applications are just one-line CLI commands.
See our post Rama in five minutes for an example of how a stack that normally requires Postgres, Kafka, Memcached, background workers, and glue code can be expressed as a single Rama application.
LESS GLUE CODE
Glue code takes many forms, such as ORMs to translate objects to database schemas, serialization between systems, cache invalidation logic, and retry and backoff handling at every system boundary.
Rama eliminates most of this. Logs, compute, and storage are integrated so data flows through without translation. Transactions span the entire module without coordination code. Datastores are composable data structures that match your application, so you store domain data directly.
Free consultation
Schedule a free 45-minute consultation to discuss your use cases, ask questions, or even pair program on using Rama to solve your problem.
UNIFIES ALL STORAGE, BUSINESS LOGIC, AND BACKGROUND WORK FOR A BACKEND
Rama's programming model eliminates the need to use multiple databases, operate background queues, have a separate stream processing system, or deploy custom workers. Rama can build applications as needed.
A single Rama cluster can host any number of applications on it. Deploying, updating, and scaling Rama applications are one-line CLI commands.
See short, self-contained, thoroughly commented examples of using Rama in the rama-demo-gallery repository.
INFINITE DATA MODELS
Unlike a database, which implements a fixed data model, datastores you materialize with Rama can be any shape. These datastores, called PStates, are defined in terms of data structures (e.g. maps, sets, lists). A data model is just a particular combination of data structures.
PStates are durable and incrementally replicated, making them suitable for any use case for which databases are used. Rama makes it easy to materialize any number of PStates of any number of shapes, all updated incrementally.
ACID SEMANTICS AS STRONG AS POSTGRES AND SIMPLER TO USE
Relational databases require you to configure isolation levels to balance performance with the exact semantics you get on a transaction. Rama provides ACID semantics as strong as any database, but you never need to specify isolation levels.
When processing data using microbatch topologies, all writes to all views are always a cross-partition transaction.
PROGRAMMED WITH A LIBRARY, NOT A DSL
Rama applications are programmed with any JVM language, with first-class Java and Clojure APIs available. Since Rama is programmed as a library instead of a DSL, there's no limitations on what you can code.
Clients to Rama applications written in a JVM language can use Rama's native APIs, and clients from other languages can use Rama's REST API to do reads/writes with HTTP.
EXTREMELY HIGH PERFORMANCE AND LINEARLY SCALABLE
In a set of benchmarks against MongoDB and Cassandra, Rama matched or exceeded their performance in every case. The performance of the Rama-based implementation was slightly better than Twitter's published performance numbers while being 100x less code.
ONLY SYSTEM TO SUPPORT ARBITRARY FINE-GRAINED REACTIVITY
Rama provides a new capability called "fine-grained reactivity". Traditional databases only support coarse-grained reactivity. Rama's reactive queries can be done at any level of any view, with minimal diffs.
EASY TO INTEGRATE WITH ANY OTHER INFRASTRUCTURE
Rama can easily be integrated with any other system, making it easy to add Rama incrementally to an existing backend.
ELIMINATES 90% OF DEVOPS WORK
Rama simplifies the deployment and management of applications in production. Launching, updating, and scaling applications are one-line commands at the terminal.
COMPREHENSIVE, BUILT-IN MONITORING
Rama provides detailed telemetry on all Rama applications viewable with its web-based Cluster UI. All aspects of Rama applications are measured, aggregated, and displayed in time-series charts.
FREE TO USE UP TO TWO NODES
Rama is free to use up to two nodes, sufficient for running small or medium-scale applications in production. Download at this page.
BUILD ANYTHING
Examples
- SOCIAL NETWORK
- WEB ANALYTICS
- BANKING APPLICATION
- RECOMMENDATION ENGINE
- AUCTION APPLICATION
- GRAPH SEARCH
- TEXT-BASED SEARCH ENGINE
- E-COMMERCE
- LOG ANALYTICS
Or anything you can imagine.
CONSULT WITH AN EXPERT
Book a free 45-minute consultation with a Red Planet Labs engineer to discuss your use cases, ask questions, or even pair program on using Rama to solve your problem.
TRY RAMA RIGHT NOW ON YOUR LOCAL MACHINE
Rama is available via a Maven dependency for experimentation.
USE RAMA IN PRODUCTION FOR FREE
Rama is free to use up to two nodes. See the pricing page for full details.
PURCHASE A LICENSE
A license lets you run larger clusters and use enterprise features. See the pricing page for details.