Sto sviluppando un'applicazione web based il cui obiettivo principale è quello di recuperare i dati dal database, visualizzarli sull'interfaccia utente, prendere gli input dell'utente e scriverli nuovamente nel database. L'applicazione non eseguirà alcun algoritmo di resistenza industriale, ma riceverà un numero molto elevato di hit nelle ore di punta (descritte di seguito) che cambieranno durante il giorno.
I livelli sono la tipica presentazione, azienda, dati. Il livello dati è gestito dal server del database. Il livello aziendale conterrà il componente DAL per accedere al server database su TCP. Le scelte che devo separare questi livelli in livelli sono:
- La presentazione e i livelli aziendali possono essere mantenuti sullo stesso livello.
- Il livello di presentazione su un livello separato di per sé e il livello aziendale su un livello separato di per sé.
Nel caso della scelta 2, il livello aziendale sarà accessibile dal livello di presentazione utilizzando un servizio WCF su http o tcp.
Non vedo alcuna elaborazione pesante eseguita sul livello aziendale, quindi mi sto appoggiando all'opzione 1 di cui sopra. Mi sento anche per lo stesso motivo, aggiungendo un nuovo livello introdurrà solo la latenza della rete. Tuttavia, in termini di scalabilità, nel caso avessi bisogno di scalare o ridimensionare, che è un modo migliore per andare? Questa applicazione dovrà essere in grado di supportare fino a 6 milioni di utenti all'ora. Ci sarà una quantità ragionevole di dati in ogni sessione utente, memorizzando le preferenze dell'utente e altri dettagli. Userò anche il caching a livello di pagina.