1

We are working on a large (legacy) distributed system with various applications, messaging (soap services, database dblinks, rest services)... We are lacking for documentation and a big view of this complex system. and we are searching a way to know if a certain update on a shared datatype could or not impact our system, and if yes how ? as for now I started to do some work in excel but I am feeling that this is a no go...

  1. first this documentation will not be synchronized with the code.
  2. some data is mutated during its life in the system (ie. concatenation of various data to make a unique id etc...)
  3. I cannot automaticaly filter my excel file and found all the application using a certain datatype and how...
  • Are you sure your existing IDE doesn't already provide the necessary tools? Visual Studio provides Code Lens, Find all References and several visualization tools for this purpose. Have a look at Resharper. – Robert Harvey Jan 25 '18 at 20:22
  • As said before we have a very big enterprise system and not only one application : for example a customer could be registered in a database by a large batch loading, or by a call to a soap webservice (c#), this call could be made by our wpf point of sale application, or by our public website... So a change on the customer entity could potentially impact : the batch script, the web service and its callers etc... – Dypso Jan 25 '18 at 20:29
  • The techniques are the same regardless of the size of the system. Resharper (and Visual Studio Professional) both provide dependency maps that help you visualize the relationships between different parts of the system. Check your existing tools. – Robert Harvey Jan 25 '18 at 20:32
  • Sorry I think I am not clear enought : I a new functional/technical architect and I have inherited a poor documentation of this big enterprise system wich contain various software (in various technology stack : sql, pl/sql, wpf, c#,c++, java) interactions... And I am searching a way to detect impact on changes without having to search in all the codebase each time... – Dypso Jan 25 '18 at 20:53
1

I've been part of a similar project before. Unfortunately I don't know any magic tricks.

We had all the various code bases in github so were able to search for things like nuget package files, Message Queue names, Database connections strings and the like across the whole platform.

Also, we logged everything to elastic search, with app name and server included. So were able to see what was running where.

Even so, essentially it came down to reading through a lot of code and manually checking. Turning stuff off and seeing what broke etc.

1

methodology to use to do impact analysis in a distributed system?

When in doubt, try it out.

Stop developing in production. Make your changes first on a development build. Watch what actually happens when you update in a safe place that isn't going to bring down the system.

This will be a fair bit of work but you'll find it paying off again and again as every change becomes less and less of a nail biter. You'll need to learn how to deploy to production in a reliable way but once you master that this wild beast will seem more tame.

As for your other points:

1 first this documentation will not be synchronized with the code.

Never assume any documentation is synchronized with the code. Documentation is not a picture of what is happening. It's war stories told of days gone by. Use it to get into the head of the designer not to check on what is or will happen. For that look at the code.

2 some data is mutated during its life in the system (ie. concatenation of various data to make a unique id etc...)

You mean like a composite key? That's not that weird and I don't see how it's relevant. It doesn't surprise me that data changes. Just means your system isn't immutable. Not sure what your concern here is.

3 I cannot automaticaly filter my excel file and found all the application using a certain datatype and how...

This bit flat out scares me. I've seen people capture their ignorance by thrusting tons of effort into making massive impressive spreadsheets that clearly show the amount of work that's been done yet doesn't do a single useful thing.

It's not that spread sheets are useless. But they can be a deep rabbit hole to get lost in. Any spreadsheet thats usefulness takes more than 5 minutes to explain to others is not a tool. It's a time consuming hobby.

I started to do some work in excel but I am feeling that this is a no go

Since you haven't been able to clearly explain what this work is I'm forced to agree with you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.