Future Work
This section provides some insight into our plans to extend RIDDL or use it in novel ways:
Akka source generation
Kubernetes deployment descriptors
Protobuffers message and service definitions
Fast data message streaming infrastructure
Analyses - Produce analytical data structures from the AST for use by translators.
BAST - Binary Abstract Syntax Tree. Generates files that capture the abstract syntax tree (AST) in a transportable binary format
Diagrams - Data flow, sequence, entity, context maps, and others
OpenAPI - OpenAPI (formerly called Swagger) specifications for APIs implied in the RIDDL model
Kalix - Kalix protobuffers source generation as input to the Kalix code generator.
Akka - Akka, protobuffers, Alpakka infrastructure code & skeleton
Others - plugins can be written to convert the AST into any other kind of needed data
This project is currently nascent. It doesn’t do anything yet, but eventually we hope it will do all the following things:
- Generate Kalix Protobuffers
- Generate Swagger (OpenAPI) YAML files containing API documentation for REST APIs
- Generate Akka Serverless based microservices to implement bounded contexts
- Generate Akka/HTTP server stubs
- Generate Akka/HTTP client library
- Generate Kafka server stubs
- Generate Kafka client library
- Generate graphQL based on domain model
- Supporting a SaaS system for the generation of the above items working something like https://www.websequencediagrams.com/ by allowing direct typing and immediate feedback
- Serve as the de facto (or real) standard for defining business domains and reactive systems.
- Be designed to be used with event storming
- Designed for a fully reactive implementation with messaging between contexts
- Support pluggable code generators for targeting different execution environments.
- Potential executors: Akka Data Pipelines, Akka Serverless, Akka/Scala
- Incorporate the best interface language ideas from CORBA, Reactive Architecture, DDD, REST, DCOM, gRPC, etc.
- Support for Read Projections and Read Models (plugins for databases)
- Support for graphQL and gRPC