Central IT groups and CIO’s have always been accountable for the governance of their software portfolios. Historically this has been through top down approaches. For certain aspects of the business, such as accounting, real time computing, manufacturing, etc, such heavy handed governance is critical to prevent the loss of life, money or physical goods. These approaches become far less effective, however, as software development moves away from these mission critical use cases. The result is frustrated line-of-business’ adopting tactical, “Shadow IT” solutions that let them get to market more quickly without having to navigate often bureaucratic Central IT groups.Continue reading this post
Errors frequently occur when processing records in transactional applications. Often times the underlying issue causing the error is transient, for example a remote system might be briefly offline or temporary network latency may cause a timeout. In these scenarios, frameworks like Mule and Spring have the ability to backoff and retry the operation until the underlying issue resolves itself.
When these errors occur because of a semantic issue with the record itself, however, the record will never be processed. A malformed XML payload or a CSV record with anContinue reading this post
Decoupling monitoring infrastructure from an application’s behavior and infrastructure is a foundational technique for scaling a distributed system. There is unfortunately no escape from the “Observer Effect”, even in application development. Attempting to “observe” an application generally involves either adding code with the associated complexity costs or using agent based techniques. Either of which, when applied incorrectly, can introduce unnecessary performance overhead on both the application and the upstream monitoring systems they are feeding data into.
A particular challenge we’ve seen with our clients over the last year or so has been directly coupled central monitoring aggregation servicesContinue reading this post
Combining API-Led and Domain Driven Design to Govern Your Microservices Architecture (MSA)
API-Led Connectivity is a technique of organizing the API's microservices expose into three categories: System, Process and Experience. In previous blog posts I've covered how System API's act as an Anti-Corruption Layer on top of systems-of-record and how Experience API's enable business agility through modern development platforms. In this post I'll consider the role Process API's play in Service Meshes and Application Networks, and how leveraging hexagonal architectural patterns and Domain Driven Design (“DDD”) for identifying and managing microservices that will be surfaced as API’s.
Determining theContinue reading this post
As alternative modern development platforms, such as SalesForce Lightning, Mendix and even analytics platforms like R proliferate, the role and value of API's can be a critical component to unleash their full potential. While these platforms promise rapid application development by trading off the amount of freedom developers have to "go off the rails" of the framework and enable developers to become productive more quickly by limiting the amount of onboarding and knowledge required to rapidly deliver applications on the platform, the use of “Experience” API's are a foundational component to rapidly deliver applications by exposing data inContinue reading this post
Anti-Corruption Layers (ACLs) are an important Domain Driven Design pattern. ACLs translate data from foreign systems into the Ubiquitous Language (the practice of developing a common and rigorous vocabulary between the developers and users within a given business domain to minimize miscommunication, ambiguity, delays, and errors) of the Bounded Context.
ACL's serve a tangential purpose in the context of enterprise integration. In addition to data translation, ACL's also hide the complexity of integration with external systems. Combined with resiliency patterns like Circuit Breakers, the ACL can become an integration abstraction in its own right.
While generally implemented as a tacticalContinue reading this post