È multilivello architettura per un sito web scalabile è un'ottimizzazione prematura?
-
11-10-2019 - |
Domanda
Sto progettando l'architettura di un nuovo sito web. Dal momento che l'architettura multi-tier sicuramente hanno tutti i sintomi di ottimizzazione prematura (per complessità, lunghezza dello sviluppo, ecc) mi piacerebbe evitare a questo punto, però, credo che l'introduzione di una simile architettura dopo che il sistema è scritto (e introducendola correttamente) sarà molto costoso. Credo che se il sito ottiene abbastanza grande, tale architettura è imperativo.
Cosa ne pensi?
Soluzione
Dipende da quale piattaforma stai andando a fare affidamento su.
È possibile sviluppare un'architettura n-livelli utilizzando le buone pratiche e di evitare le dipendenze tra gli strati, e che sta avendo un design che può crescere fino a un approccio a più livelli.
Per esempio, se siete in .NET Arena, il porting di un'architettura non-n-tier a n-tier è facile grazie a Windows Communication Foundation, che si evita di scrivere un sacco di codice per esporre i propri servizi tramite HTTP , TCP crudo o qualsiasi protocollo che si desidera utilizzare per comunicare i livelli, e anche il codice client per consumare loro.
Date un'occhiata al Domain-Driven Design e le relative modelli di progettazione e vincerai.
Riassumendo, è necessario analizzare se distribuire la soluzione a diversi livelli migliorerebbe la sua scalabilità nella vostra prima versione. E preparare il disegno di supportare facilmente n-tier.
Questo è separare le preoccupazioni in modo da evitare le dipendenze e lasciare che ogni parte del vostro programma di lavoro insieme con le interfacce condivise.
siti webIn ogni caso, n-tier devono eseguire male rispetto a un non-n-tier uno in un basso di scenario di utilizzo medio, il che significa che si dovrebbe pensare se l'applicazione sarà necessario per servire contenuti a migliaia o Milioni di utenti contemporaneamente e che sarebbe il costo per avere uno scenario a più livelli.
N-tier avrebbe bisogno di un hosting dedicato.
Si può fornire ulteriori informazioni sugli obiettivi del progetto? (Intendo in termini di scalabilità).