lundi 5 février 2018

How to live with mutual dependency and how to move from it?

Warning : I post this on stackoverflow because I think that this is the stackexchange site where I can target the more people able to answer to such a question.

I would like a bit of advice about a setup at work we are facing problems with.

To make it simple : my team 1 modelizes "stuff", and this results in a (c#) API 1 (nuget package) that we deliver to a team 2. The stuff we modelize arrives at the end in the global database of the firm, and we want to query it to get our objects back. So that the team 2 delivers to us an API 2 based on our API 1.

To make it even simpler : let's say team 1 delivers to team 2 a function T CreatTFromData(...) where T is in team's 1 model, and team 2 uses CreatTFromData an provides to team 1 a fonction T QueryDBForT(int id).

Each time we (team 1) update our model, team 2 should upgrade their code with our update, deliver a new package that we team 1 in turn should update in our code. This is extremely error prone, and I feel that this setup is inherently wrong.

The constraints are the following :

  • team 2 doesn't want to have a DEV and a PROD branches and has only one main branch and we have quite little room to push them doing it
  • team 2 only accepts to have a DEV and a PROD servers : so when we deliver something new to team 2 and when they update their code in consequence, they deliver to us their updated packages on the DEV servers where we can test, and when it's validated, they deliver it on PROD servers etc etc ...
  • team 1 cannot absorb team 2 (the absorption would be logical from the mutal dependency pov and is for me the only good solution ...)
  • naively I would have prefered to only exchange strings (xml or json) with team 2 and not objects, to make it simpler, but apparently this was the case before, and history tells it was even worse.

My question is : in such a wrong setup (mutual dependency = bad interaction design) with such constraints, how can I improve the interaction to minimize problems ? How could I gradually shift to something better ?

Remark. Typically this week-end team 2 upgraded the OS on the PROD server leading to big issues today, and the have to revert the package they are delivering to us to an older version. We deliver a lot of tools based on this packages, so you imagine the impact ...

Aucun commentaire:

Enregistrer un commentaire