Vlingo, creators of a platform designed to simplify building reactive systems using an actor model, has joined the Reactive Foundation. Launched in September, the Reactive Foundation was formed under the Linux Foundation to accelerate technologies for building the next generation of networked applications. Vlingo is the newest charter member, joining Alibaba, Facebook, Lightbend, Netifi and Pivotal.
The vlingo/platform is an open source system for building distributed, concurrent, event-driven, reactive microservices that supports Domain-Driven Design (DDD) at the framework level. Vaughn Vernon, speaker, trainer, and author of several books on DDD and reactive programming, recognized that many engineers saw a high barrier to entry to getting started with DDD, reactive, and event-driven architectures. The goal of Vlingo is to reduce the complexity of using these techniques, and make DDD something tangible, rather than an abstract concept.
Like other software included in the Reactive Foundation, the open source vlingo/platform includes the source code along with samples, and is available via GitHub. The initial focus has been on the JVM version, with a port to .NET Core nearly complete. The reference implementation, and a recommended way to get started, is called vlingo/zoom.
In a recent blog post introducing vlingo/zoom, Kenny Bastani, developer advocate at Kalele, provided insight into the open source mindset of its creators. Rather than being a competitor to or replacement for heavyweight frameworks like Spring Boot, the vlingo/platform "is a set of libraries that provide differentiated capabilities for developers building JVM applications." The hope in adopting a pragmatic approach is that it will increase innovation and creativity.
InfoQ spoke with Vaughn Vernon about the latest updates and future plans for the vlingo/platform.
InfoQ: When is the general availability release (JVM and .NET) expected?
Vaughn Vernon: For JVM, we are working on our second official production release candidate; 0.9.1-RC2. For .NET, GA is a ways off, but not more than a few months. The biggest challenge here is when the toolset comes up against the .NET Core vs the Java implementation. It's a pretty big deal to keep the two platforms in close harmony and still be idiomatic implementations.
InfoQ: You were a guest on the InfoQ podcast about a year ago. What are the major highlights to Vlingo since then?
Vernon: Yes, thanks again for the podcast opportunity. Since then, we launched our new vlingo.io website. On the platform, there have been many features added and numerous improvements, but I will try to limit to the highlights.
- vlingo/actors:
- Fast mailboxes (~20 million messages per second);
- Completes<T> (Future- and Task-like monad with continuations;
- support for actor protocols with Future<T> and CompletableFuture<T> return types;
- multiple named actor stages (actor registry);
- common and overriding supervision in addition to parent hierarchy supervision;
- standard actor routing, including Broadcast, ContentBased, Random, RoundRobin, SmallestMailbox;
- message stowing and actor suspension and resumption.
- vlingo/http:
- full async request-response;
- fluent route specifications;
- with custom media types with auto-mapping on request and response;
filters;- async client;
- async SSL client;
- correlation id request-response;
- load balancing client;
- round-robin client;
- SSE (server-sent events);
- feeds (e.g. atom logs) for REST pub/sub.
- vlingo/symbio:
- Object Store (ORM, JPA and Hibernate, as well as simple mapping with Jdbi);
- State Store for key-value for CQRS Command and Query persistence;
- Journal storage for Event-Sourced, Command-Sourced, and Any-Sourced support;
- all store types, including Object and State, support atomic appending of sourced values, whether event or command or any;
- databases: DynamoDB, Postgres, YugaByte, MySQL, MariaDB, Vitess, HSQLDB, Apache Geode Grid/Fabric, experimental FoundationDB.
- vlingo/lattice:
- reactive, actor based aggregate root entities for Object Store, State Store, and Journal, supporting ORM, CQRS, and Event/Command Sourcing;
- projections to CQRS query/read models;
- process managers (sagas) for Object, State, and Command/Event Sourced;
- message exchanges for pub/sub and queues with built-in anti-corruption forward and reverse translations;
- feed-based exchanges (see vlingo/http feeds for REST frontend);
- CQRS actor-based query/read model mechanisms; actor-based command routing.
- vlingo/schemata:
- schema registry with service-based hierarchical design:
- org/unit/context/schema/version(s);
- schema draft creation, publishing, deprecation, removal;
- dependency declaration;
- schema to target source generation.
InfoQ: What is on the roadmap for Vlingo?
Vernon: Developer and production support; developer advocacy; community building; dedicated platform development organization; further improve ease of adoption and use; reduce required keystrokes; more examples, improved documentation, and advanced training; development acceleration tools; cloud native intimacy; more advanced reactive innovations.
InfoQ: How can people get involved and contribute to the platform?
Vernon: Ping me on Twitter @VaughnVernon or send an email me: vaughn at kalele dot io
We prefer that you first contribute a bug fix or implement a desired feature via GitHub pull request. After the contributor has demonstrated due diligence, we offer an on-boarding program for both JVM and .NET. For those who are very committed to our vision, we are hiring. If you have advanced senior Java architecture and development experience, please contact me.