Sono parte di una piccola azienda di software specializzata in applicazioni aziendali di piccole e medie dimensioni e la mia esperienza con architetture distribuite / SOA è limitata. Per favore fatemi sapere se sto sbagliando tutto questo.
Spesso iniziamo lo sviluppo su applicazioni di piccole imprese, in cui un'architettura distribuita sembra eccessiva e non verrà implementata come tale. Tuttavia, in alcuni casi, il progetto si espande ben oltre l'ambito originale e la soluzione preferita può successivamente essere distribuita.
Come ci assicuriamo fin dall'inizio che questa transizione diventi il più agevole possibile, con un costo minimo di prestazioni e (principalmente) tempo? In particolare, sto cercando consigli riguardo all'architettura della soluzione per raggiungere questo obiettivo.
Prendi questo semplice esempio:
- All'inizio un'applicazione Windows è in esecuzione su diversi computer, invocando tutta la logica di business localmente in un assembly che viene distribuito insieme all'applicazione.
- Successivamente, la logica aziendale viene spostata su un server centrale e l'applicazione Windows deve ora comunicare con il livello aziendale tramite un servizio WCF.
La risposta ovvia qui sarebbe semplicemente creare il servizio WCF sin dall'inizio e farlo girare localmente su ogni macchina, ma il mio pensiero iniziale era che ciò potesse causare un indesiderato consumo di tempo su progetti con scadenze rigide, a causa di un sovraccarico in fase di sviluppo (dovendo mantenere lo / gli strato / i intermedio / i ecc.).
Uno dei problemi concreti con l'architettura iniziale è che le istanze degli oggetti vengono passate dall'applicazione Windows al livello aziendale, creando così una dipendenza che potrebbe violare il codice quando si passa a una soluzione distribuita.
"Simulando" una soluzione distribuita, potremmo garantire che i nostri sviluppatori non introducano involontariamente questo tipo di problemi.
- Qual è il modo migliore per raggiungere questa scalabilità?
- Ho sbagliato le mie ipotesi riguardo il consumo di tempo e le prestazioni?