This post is also available as a pdf
In our previous article, we introduced the main features of our flagship product, Integral, a platform for real-time architecture. Unlike previous attempts at architecture diagramming, Integral starts with the premise that code is the only source of truth. Despite best intentions, architecture diagrams become outdated once they are created, or at least as soon as the next commit is made. To solve this problem, Integral enables teams to track, visualize, and manage enterprise architecture as it evolves through a process of continuous source code review.
But haven’t UML-based tools been doing something similar through reverse engineering for decades? Not really. UML does a fine job of modeling the class structure or behavior of an application. However, the technologies we use to create applications have evolved significantly in the past twenty years. There is now a myriad of languages, frameworks, programming models, APIs, configuration, containers, IaaS, PaaS, service discovery, and runtime metrics we use in our daily engineering lives. All of these comprise critical parts of an enterprise architecture.
Integral is designed to reflect this technology reality through what we call deep architecture analysis. Deep architecture assembles information from all technology layers used by your applications to provide a clearer and more accurate picture of their structure.
Let’s first consider a simple example of deep architecture analysis using the Spring PetClinic reference application, before proceeding to a more complex illustration. The following shows a UML class diagram of Spring PetClinic:
If you are like me, you may have a hard time reading that diagram. Even with a simple application, it’s difficult to make out important aspects such as which APIs are offered, how components connect, and which parts access a database. The application’s class structure is shown but not the things we typically need to know about an application in our daily engineering tasks. In fact, we could have chosen another UML diagram type and had similar results.
The following is the same application analyzed by Integral:
Deep architecture analysis detects the application uses the Spring Framework and shows how its beans (classes) are wired together. It also maps the REST API the application exposes, identifies database access, and stratifies its componentry according to role (controller, service, repository). By weaving together an analysis of these diverse aspects, deep architecture is able to both simplify visuals as well as more accurately convey the application’s important structural characteristics.
As applications grow in complexity, deep architecture becomes more essential as a way to separate the wheat from the chaff. For example, deep architecture can be used to highlight modularity, microservice boundaries, and message queue flows. The following diagram is an analysis of a set of Java EE microservices, organized by module:
Another innovation of deep architecture is that it accounts for the fact that modern applications do not exist in isolation. The proliferation of MOM, DCOM, CORBA, Web Services, REST, and now microservices has resulted in enterprise architectures comprised of a web of interconnected systems.
In addition to analyzing intra-application componentry, deep architecture also maps inter-application connections. REST, RPC and async patterns are discovered to convey a view of how a particular application fits into its enterprise context. Deep architecture combines “vertical depth” (languages, frameworks, APIs, etc.) with “horizontal breadth” (communication protocols, message queues, etc.).
UML collaboration diagrams can be used to detail interactions between systems but they must be manually generated. Deep architecture produces automated inter-application mappings from source and evolve as those applications change. The following enterprise architecture diagram was generated from an analysis of three microservice applications that use REST and JMS to communicate:
Integral’s deep architecture analysis is designed to provide you with an automated, accurate and relevant view of your application architecture, in real-time. In future installments, we will discuss aspects of deep architecture in more detail. We will also cover other features of our platform built on deep architecture, such as triggers, that provide events and notifications as architectures evolve. Stay tuned! In the meantime, if you would like more information or just want to get in touch, please contact us at email@example.com.
www.massiv.io offers the first platform for real-time architecture. Free trials, downloads, and video demos are also available for Integral, which allows you to make code the source of truth.