Büyük yazılım projelerinde çalışma zamanında oluşan geçişli bağımlılık sorunlarına normal olarak nasıl yaklaşıyorsunuz?
Son üç haftadır, yazılımın başka bir bileşeninde büyük bir yazılımın bir bileşenini başlatmaya çalışıyorum, ancak yalnızca çalışma zamanında bilinen geçiş bağımlılığı sorunları nedeniyle zaman zaman ölüyor.
Geçişli bağımlılık sorunları ile, belirli bir projenin bağımlılıklarının belirli bağımlılıklarının çalışma zamanında diğer bağımlılıklarla çarpışarak kararsızlığa veya anlık başarısızlığa neden olduğunu kastediyorum.
Yüzlerce, kullanımda yüzlerce bağımlılık vardır ve araçla ilişkili, tüm modüllerin birbirleri arasında derinden iç içe bağımlılıklara sahip olduğu diğer ekipler tarafından ayrı ayrı çalışılan yaklaşık 50 alt proje vardır. Kimse, projenin ölçeği ve karmaşıklığı göz önüne alındığında, tüm alt projelerin ne için kullanıldığını bilmiyor.
Bu durumda, etkilenen bileşenin bağımlılıklarının her biri için DAG'ın görsel bir temsilini oluşturmaya ve çalışma zamanında çarpışmaların nerede meydana gelebileceğini belirlemeye çalışır mısınız? Bağımlılıkların diğer alt projelerde nasıl yönetileceği konusunda hiçbir denetimim yok ve diğer geliştiriciler tarafından yazılan Java kodlarını değiştiremiyorum
Ortaya koyduğum çözümler sadece bir ya da iki saat çalışıyor ve sonra yukarı akış bileşenlerindeki değişiklikler nedeniyle çalışmayı bırakıyorlar. Akış yukarı bir bileşene örnek olarak, üzerinde çalıştığım projenin CI boru hattında daha erken bir aşamada inşa edildiği, bağlı olduğu bir eser vardır.
Başkalarının taleplerine göre , hangi teknolojinin kullanıldığına dair, çok fazla bilgi sağlamak için soruyu kapatma riski veya vücudun çok uzun sürmesi riskiyle ilgili bilgileri ekleyeceğim:
- Maven bağımlılık yönetimi için kullanılır; ve
- Yay, bir DI kabı olarak kullanılır;
- Bağımlılık sorunlarının çoğu, diğer modüllerin bağlamlarının çalışma zamanında yüklenmesinin bir sonucu olarak çakışan fasulye bağlamlarını içerir.
- Ürün düzgün çalışıyor ve programın işlevsel doğruluğundan kaçınmak için birim testlerin ve entegrasyon testlerinin smorgasbordları var
Genel olarak, belirli bir projenin bağımlılıklarının tüm olası kombinasyonları ile numaralandırılmadan bağımlılık çatışmalarını çözmenin yollarını tanımlamak için dile agnostik bir yaklaşım arıyorum .
Projeyi yeniden tasarlayamıyorum, ek kaliteli kapılar ekleyemiyorum, şirket genelinde paradigma kaymaları için zorlayamıyorum veya dil olarak çözüm olarak değiştiremiyorum.