Next Generation Development For Distributed Applications
From State Driven To Event Driven
New Old ConceptsEvent modeling, domain models, and event-driven architectures are the concepts that drive many of today’s newest software system designs. None of these concepts are new, especially events. Today the sheer number of events and the decisions driven by those events have brought these concepts to the forefront of system architecture and design. Unlike J2EE, there is no standard specification for event driven systems. CQRS defines a pattern that lends itself nicely to event driven systems. Since it is a pattern, it does not offer a standard implementation. For better or worse, the predictability of J2EE guaranteed that Java code written according to the specification could run on a variety of vendor J2EE implementations (an application server). If we consider these concepts a new means of development for distributed applications, we can define a new high level Event Driven Application Specification (EDAS) with the following elements:
- Model Driven – define the interesting things in our system
- Event Driven – define the interesting occurrences in our system
- CQRS Enabled – define a means of creating and handling commands and queries
- Event Sourcing – define a means of creating and handling an event such that any event in the system over any time period can be accurately recalled from a dedicated store.
- Messages – the packaging and mechanism by which things communicate
- Test Suite – standard means of testing CRUD events
Implement Our Event Driven Application SpecificationSuppose we have a well defined project with nicely written specifications. Let’s assume the event modeling is complete. All the events, commands, queries, interactions and so forth are clearly identified. We put the finishing touches on the perfect domain model. Remember that unlike the J2EE spec, the EDAS specification has the ability to turn a domain model into event-driven code. More on this later. Part of your non-functional requirements include the usual suspects:
- Location Transparency
- High Availability
- Low Latency
- Messaging Infrastructure
Enterprise Microservices Is Like A RailwayTime for an analogy. Think of an enterprise grade microservices operational environment as a railway. A railway has two major components:
- the infrastructure (the permanent way, tracks, stations, freight facilities, viaducts, tunnels, etc.)
- and the rolling stock (the locomotives, passenger coaches, freight cars, etc.)
Jumpstart a Project Using The Domain ModelThe event model defines all the execution conditions (good and bad) of the railroad system. Between it and our domain model, there is a lot of contextual information about our microservices ecosystem. We already learned Axon provides the API for using and extending the services needed to make our application come to life. The problem is there is no standard way to quickly turn the things in the domain model into code and configuration to leverage our microservices tech stack which includes Axon, Spring Boot, a datastore (ex. MongoDB) and more.
Enter HarbormasterHarbormaster is a platform that can ingest a domain model and output fully functional projects. These projects are based on many of today’s most popular tech stacks, including an Axon/Spring Boot tech stack. Instead of starting from scratch, read on to discover how you can start writing the innovation code from day one. Just in case you were wondering, Harbormaster is not a “no-code” or “low-code” platform. It is a “project generation” platform which, at no cost, instantly generates the code we would have written over the next month or two. If you don’t like what it generates, it’s all template based so everything is easily modifiable.
Axon + Harbormaster = Next Generation Development For Distributed ApplicationsFrom a single domain model, out of the box using Harbormaster and our Axon4 technology stack, project generation yields a fully functional application with the following components:
Speed To Innovation
Event Driven Architecture, Microservices, DDD, and CQRS all demonstrate clear benefits in helping create systems that have great benefits to the business. Unfortunately there is still significant training and coding required before those benefits are realized.
For any project, the time it takes to start innovating is critical. Innovation is where a system expresses capabilities that make it unique. The innovative services of an application are often what makes the system different from a competitive system. Unfortunately, innovation cannot take place until the foundation aspects of the system have been developed. This usually means weeks to months or more. Time truly is of the essence where weeks to months could mean the difference between success and failure.
Benefits of Project Generation on Axon
Innovate From The Start
When the core functionality of any application is generated, project development and more quickly start with the innovative features of the application. This means more time is spent innovating, failing faster, and so forth. This all leads to a more agile software delivery process, higher customer satisfaction, and more features delivered sooner
Do More With Fewer Resources
A natural byproduct of project generation is the need for less development resources especially in the beginning. The makeup of a development team changes with fewer specialists which presents an opportunity for more generalists, all of which leads to a drastic reduction in cost.
Concepts such as CQRS, event driven architectures, Microservice design patterns, event store and event sourcing all introduce a learning curve. Being able to generate the functional foundation atop a purpose built framework like Axon gives time for upskilling of development resources while building out the remaining parts of the application.
Axon is the first purpose built framework and server to address the needs of today’s event driven architectures. Its support for CQRS, events and event sourcing are only a few of the capabilities that make Axon the only platform to address all the requirements of an enterprise grade microservices ecosystem. With Harbormaster, instantly bridge the gap between your model and an instantiation of your model running on a Axon-based technology stack..