For most software projects, the primary focus should be on the domain and domain knowledge
— ERIC EVANS, DOMAIN DRIVEN DESIGN

The world of enterprise applications has undergone a dramatic change. The future of the enterprise applications lies not in heavy-weight monolithic application architectures. Rather, it lies in light-weight collaborative micro-agent architectures in which business functionality is developed, deployed and managed in an agile, flexible and continuous manner.

Applications can no longer take even a single year, to write. Requirements are changing rapidly as are the business needs that drive them. To deliver high quality applications in the compressed timelines that modern businesses demand, we need a platform that insulates the application developer from non-functional concerns thus allowing focus squarely on the problem at hand, the business domain. Just as a good user interface disappears into the background allowing users to focus on problems rather than buttons, a good platform also melds with its environment allowing developers to focus on solving business problems without worrying about infrastructure details.

The X Platform™ is such a platform. Rooted in memory oriented computational techniques and next generation messaging, data and transaction management technologies, the platform's core goal is to make extreme applications the norm rather than the exception, to unobtrusively satisfy the extreme infrastructural needs of applications and provide a platform that enables developing applications that process 100s of thousands of transactions per second not only easy but commonplace. The X Platform™ enables us to build extreme applications without extreme effort.

TO MAKE IT VERY EASY TO author ultra-fast ENTERPRISE applications without compromise on reliability, scalability or developer productivity”

An X Platform™ application exhibits the following characteristics:

  • Memory Oriented Business Logic
  • High Availability
  • High Performance (Low-Latency & High Throughput)
  • Persistence
  • Horizontal Scalability
  • Continuous Delivery
  • Zero plumbing domain Logic

Note that in the preceding figure there is a firm barrier between the highly available, high performance, persistent, scalable application in middle and the infrastructure that supports it. If any of these aspects of the infrastructure are allowed to bleed into the domain, it can have a very negative impact. Maintaining each of bleed-through spots takes valuable time and effort away from the real business at hand. Before long, rather than being ignorant of the infrastructure, developers will become ignorant of the areas of their application that are no longer separable from the infrastructure. It is this firm barrier, this clear separation and isolation of concerns that is absolutely critical to the long term success of applications and application developers. The presence of this barrier frees developers to build applications with laser focus on domain models and logic resulting in better designed, better built and more easily supportable applications.

Memory Orientation

“Allow a developer to manage application state purely using in-memory java objects”

The X Platform™ allows developers to hold and manipulate their application state purely using in-memory Java objects. A developer uses Java objects and collections to hold state and authors message handlers in which the Java state objects and collections are manipulated using regular Java code. Thats it. The platform takes care of the rest ensuring that there is no loss of messages/state in the event of a failure or planned downtime. Memory oriented computing effectively inverts the traditional role that memory and disk play in an application and enterprise architecture. It treats "memory as the new disk" and, in doing so, uses memory as the core storage mechanism for application state. The disk plays the role of the cache only holding information for the transient stage when applications are brought down for maintenance or due to catastrophic failure. In inverting the model as such, memory oriented computing allows for tremendous developer productivity, extreme performance and extreme developmental agility.

High Availability

“Process messages exactly once across network, process and machine failures”

In recovering from network, process and/or machine failures, X Platform™ ensures that (1) applications suffer no message and/or data loss and (2) applications receive messages for processing exactly once during steady state operations and through failure recovery. Through this, developers should be able to assume that their applications will be highly available without them having to expend any extra effort to make it so.

Performance

“Process messages at extreme throughput rates with minimal in-process latency”

The X Platform™ imposes a minimal performance overhead on application throughput and processing latency. Appropriate mechanisms and machinery in X Platform™ enable a ‘no-op’ application usingTalon to process messages at throughput rates of 100s of thousands of messages/transactions per second with in-process latencies in low 10s of microseconds.

Persistence

“Durably store application state for recovery from planned and unplanned downtime”

The X Platform™ implements application clustering and replicate application state to the memory of other backup cluster members in real-time for recovery from a failure of the primary cluster member. In addition, X Platform™ persists the application’s state to durable media. The application state is also journaled to a transaction log to enable applications to correctly resume operations without data loss from planned or unplanned application downtime as well as for support and reporting purposes. The X Platform™ implements cluster durability and shared nothing storage in conjunction with adaptive commit batching and persistence quorums to ensure extremely high processing throughput while ensuring zero data loss.

Horizontally Scalable

“Enable application partitioning for higher throughput through parallel processing”

The X Platform™ enables inbound messaging traffic to be horizontally partitioned and processed in parallel by more than one instance of the application. Furthermore, it is designed to enable such a partitioning to be performed along the axis of a business entity (such as customer) with consistently hashed partitions to ensure ordered and consistent processing for transactional traffic.

Enterprise Integration

“Enable asynchronous and conflated integration with middle and back office”

The extreme applications that X Platform™ enables authoring typically reside in the enterprise 'front-office'. Data manipulated by these applications need to be integrated with the middle and back-office systems for querying, analytics and recording purposes. The platform enables asynchronous and conflated movement of transactional state to the middle and back-office systems via transaction log CDC and/or messaging based Inter-Cluster-Replication (ICR)

Monitoring, Management, Administration

“Administer, manage and introspect”

The X Platform™ implements sophisticated runtime facilities that aim to extend the development and deployment agility into the runtime sphere. X Platform™ enables centralized command and control, management and monitoring of running applications. Facilities offered by the X Platform™ related to administration, management and monitoring include:

  • Script and ad-hoc based command and control
  • Centralized application lifecycle management
  • Centralized log viewing and management
  • Centralized viewing of application and platform statistics
  • Centralized and dynamic configuration changes.

Zero Plumbing Code

"Enable the domain model to contain no infrastructural footprint”

An application’s main asset, its Domain Model, should be as free as possible from ‘infrastructural infection’. The X Platform™ enables POJO based Domain Models comprised of code that focuses solely on the business problem at hand and is devoid of any ‘infrastructural’ code specific to its execution environment. In particular, X Platform™ enables an application’s Domain Model to possess Persistence Ignorance (PI), Messaging Ignorance (MI), Transactional Ignorance (TI) and Configuration Ignorance (CI).

  • Persistence Ignorance implies that an application is devoid of code relating to the persistence infrastructure such as managing storage formats, object serialization/de-serialization etc.
  • Messaging Ignorance implies that an application is devoid of code relating to the messaging infrastructure such as sequencing, recovery, message wire formats, etc.
  • Transactional Ignorance implies that an application is devoid of code relating to maintaining transactional integrity of application state such as state/event replication, persistence atomicity, rollback functionality, etc.
  • Configuration Ignorance implies that an application is devoid of code relating to the configuration infrastructure such as the formats/locations/management of configuration artifacts.

General Infrastructure Ignorance

In general, from a code standpoint, Talon does not impose any of the following on the domain model:

  • Inherit from X Platform™ specific classes
  • Implement platform specific interfaces
  • Require class constructors with specific signatures

Persistence Ignorance

Talon enables the Domain Model to work with regular Java objects to represent state without undue restriction. For example, Talon does not impose any of the following on the domain:

  • Restrict the usable type system. Supporting the full Java type system is a core X Platform™ goal.
  • Require the use of specific implementation classes for, say, collections
    • The X Platform™ provides specific implementations for performance reasons but continues to support the Java SDK implementations
  • Require any knowledge/machinery to reconstitute state on recovery from failure/restarts.
    • In other words, X Platform™ isolates the domain from the knowledge that even a failure occurred and always presents the domain with fully reconstituted state.

Messaging Ignorance

The X Platform™ provides the Domain Model is simple and easy to use messaging interface. The X Platform™ elevates messaging to a much higher level that traditional messaging systems and enables the domain to simply send and receive messages to/from other collaborating agents isolating the domain from the following:

  • Connection/session/subscription management
  • Message sequencing, flow management and duplicate detection
  • Message recovery on restart from planned/unplanned downtime
  • Merging live message streams with replayed streams
  • Message serialization/deserialization
  • Message processing acknowledgement management.

Transaction Ignorance

The X Platform™ isolates the Domain Model from all code relating to HA, Transactions and any machinery required to ensure zero data and message loss across failures. The X Platform™ enables the domain to assume failover and rollbacks occur transparently, assume that its state will always be presented to it in a fully constituted manner and messages are always delivered to the domain for processing exactly once transparent to failures that can occur even mid transaction. In doing so, X Platform™ alleviates the domain from the infrastructural burden of handling the following:

  • State/event replication and/or persistence
  • Transaction rollbacks
  • Recovery on failover/restart
  • Reconstitution of object based state from a fragmented form as persisted on durable media
  • Message sequencing/duplicate detection to ensure exactly once delivery/processing.

Configuration Ignorance

The X Platform™ enables the Domain Model to be devoid of any code related to the management, structure and format of configuration artifacts. As far as the domain is concerned, configuration information required by it is injected into the appropriate portions of the code without being concerned with where and how the information was persisted and obtained. This isolates the domain from participation in the following:

  • Durable storage of configuration artifacts
  • Distribution/centralized management of the artifacts
  • Format of the stored artifacts e.g. property files, LDAP, RDBMS, etc

Continuous Delivery

“Minimal concept-to-production delivery time"

The X Platform™ permits seamless and continuous delivery of code into production. This enables an agile pipe that carries continuously changing business functionality from the factory to the floor without compromise on the quality of the deliverables. The goal is to enable X Platform™ developers to have no fear of frequent production rollouts because the only volatile parts of their application are easily tested in isolation within their domain code. Among other features, X Platform™ supports deployment versioning and rollback.

Pluggable Technologies

 “To assist in managing the customer’s technology risk-reward ratio”

The X Platform™ has been designed keeping in mind the technology risk vs reward ratio that customers face on a regular basis when making technology choices. The X Platform™ has been designed as a pluggable framework that, on one end of the risk-reward spectrum, supports traditional technologies such as JMS for messaging and an RDBMS for persistence while, on the other hand, can swap out an RDBMS by a journaled log based persister and JMS by a pipelining messaging system for extreme performance with zero impact on the domain. What is key here is that X Platform™ supports such as swap seamless to the domain thus enabling the customer to manage the technology risk-reward ratio in an optimal manner by enabling switching to higher reward but higher risk technologies in the moment only when the business demands it.