Repository navigation
Stable abstractions vs. version-specific elements: best practices for architecture modeling #1209
Unanswered
thinkscape-gmbh
asked this question in
Q&A
Replies: 1 comment
|
Hi @thinkscape-gmbh, In other words, I would set up the following: At the end of the day, you always have to ask yourself: What data—or analyses—do I really need? When in doubt, always start with less, rather than ending up with too much data that just becomes outdated if no one maintains it. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Stable abstractions vs. version-specific elements: best practices for architecture modeling
I’m trying to understand the best way to model applications, interfaces, and their implementations so that the architecture remains understandable and manageable as implementations are replaced.
Consider a client application that currently uses Service API v1 and will eventually migrate to Service API v2. I see two possible modeling approaches.
Approach 1: Stable logical elements with versioned implementations
In this approach, business applications and interfaces represent stable logical concepts, while IT components represent their concrete implementations.
For example:
The idea is to keep relationships at the logical level where appropriate, while replacing the implementation components underneath. This would allow the business application and interface elements to remain relatively stable across implementation changes.
However, it introduces an additional layer of abstraction, which requires a lot more initial modeling and maintenance. It may also be less intuitive for people who are not familiar with the distinction between logical elements and concrete implementations.
Approach 2: Version-specific elements throughout the model
Alternatively, I could model the versions directly:
This seems more straightforward because each element represents a specific version.
My concern is replacement effort. These elements may have many relationships with other applications, teams, components, and data objects. When introducing a replacement, those relationships would need to be reviewed and potentially recreated or reassigned.
Possible ways to manage replacements
I’m considering a few options, but I’m unsure which would be most appropriate:
Thank you!
All reactions