The world of enterprise applications has undergone a dramatic change. Business drivers such as globalization, multichannel access, round-the-clock computing and domain specific changes are pushing data and transaction processing requirements to previously considered ‘extreme’ levels. Simultaneously, trends such as service orientation, cloud computing and multi-core processing are moving application architectures from being monolithic in nature to being more network-centric, multi-agent and distributed. The future of the enterprise applications lies not in heavy-weight monolithic application architectures. Rather, it lies in light-weight collaborative multi-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. If we approach application development the same way we always have, we will lack the agility, foresight, and the ability to execute on the demands modern businesses place on our applications. To deliver high quality applications that are still reliable on aggressive timelines we need a platform that allows us to focus squarely on the problem at hand, the business domain, as well as allows us to remain insulated from the supporting infrastructure. Every line of code application developers write that tightly couples their application to the underlying infrastructure can potentially slowdown development, increase complexity and increase maintenance costs leading to an overall increase in the total cost of ownership of the application and lower developmental agility. 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.
To cater to these newer application models and to the extremely agile next-generation enterprise, the mechanisms by which application data is managed, business logic is authored and transactions executed need to be rethought. These newer mechanisms need to make functional decomposition, component reuse and, consequently, business agility a viable reality. Not only do the newer mechanisms need to elevate each of the application tiers’ to the next performance level through the adoption of next generation underlying technologies such as low latency messaging, distributed caching and transaction-aware application clustering but also eliminate inefficiencies that exist at tier boundaries. 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)
- 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.
“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.
“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.
“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.
“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.
“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.
“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
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.
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.
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.
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
“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.
“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.