The importance of the asynchronous relationship in enterprise software

abstract-paintings-one-verse

An asynchronous relationship is a type of integration between two or more systems, or components within a system, that enables data to be exchanged without requiring an immediate result or action to be performed; a result is expected at some later time but does not immediately follow the request. The calling system has the ability to wait indefinitely by maintaining state until the partner system completes its processing.

Asynchronous relationships are critical to enterprise software, because they allow integrating partners to work together to solve complex problems more quickly and to develop scalable, long term architectures. This special type of relationship in effect enables integrating partners to use complex message exchange patterns (MEP) to manage the angle of approach and distribution of work and logic in the overall system that is the result of the integration.

For the enterprise business, the asynchronous relationship provides important benefits in speed of solution development and system longevity.

What are the benefits of the asynchronous relationship?

The asynchronous relationship provides many structural and organizational benefits:

  • Independence: individual systems or components are free to choose their processing strategy, including important variables of scheduling, throughput, and processing speed. Since many enterprise software use cases require accuracy, not speed, the asynchronous relationship breaks this important and frequently unnecessary dependency.
  • Backend implementation: systems integrated by this approach leave the door open to a vast number of choices for implementation. The architectures of backend systems can be completely different yet integrated using an asynchronous approach.
  • Request size: since the asynchronous relationship frees systems and components from response time requirements,  request size can be as big as necessary. This is a critical, long term strategic advantage for system roadmaps based on this approach.
  • Joint development: using complex MEP, logic required for processing can be distributed between systems. When applied correctly, following strong encapsulation principles fundamental to good architecture, this powerful aspect of integration enables separate teams to work together, cooperatively, to overcome big challenges and deliver great solutions.
  • Speed of implementation: asynchronous relationships provide powerful tools like joint development that enable software teams to complete project functionality much more quickly.
  • Roadmap: implementation independence, unlimited request size, and other benefits of the asynchronous approach can create high flexibility and long system lifecycles.
  • Outages: recovery from system or component unavailability due to operations issues or maintenance is much simpler with asynchronous integrations; partner systems simply wait until the services recover or are brought back online following maintenance.
  • Aggregation: because they remove response time requirements, asynchronous systems enable downstream systems or components to accept a single request from the upstream system, and in turn process many steps to complete the request. For the upstream system this means the logic involved in relating to the downstream system is greatly simplified.
  • Rollback: like aggregation, rollback -compensation for prior steps in case of failure- is another key benefit an asynchronous downstream system can provide. Rollback can take as long as necessary and can even include manual steps. Again this means greatly simplified logic for the upstream system relating to the downstream system.
  • Encapsulation/characterization: the asynchronous relationship naturally leads to distributed systems and processing, so that individual systems or components can build very strong encapsulation and characterization. This enables system owners to draw very clear architectural boundaries between systems, contributing to long architectural life cycles.

Ultimately, these benefits are valuable because they are extremely powerful business drivers for the enterprise; they enable the software team to quickly deliver strong, forward looking functionality and build positive synergy of successful delivery across the organization. This is the positive spiral that is a principal goal of enterprise software development.

Posted in Uncategorized