Questa è più una domanda "indirizzami nella giusta direzione".
Il mio team di tre e io abbiamo creato un'app web ospitata che accoda e indirizza le richieste di chat dei clienti agli agenti di servizio clienti disponibili (fa anche altre cose, ma questo è sufficiente per illustrare il problema).
L'architettura di sviluppo di base oggi è:
- un'interfaccia utente Web ajax a una sola pagina (ASP.NET MVC) con finestre di chat mobili (si pensi a Gmail)
- un servizio di back-end di Windows per accodare e instradare le richieste di chat
- questo servizio registra anche le chat, calcola i livelli di servizio, ecc.
- un prodotto server Comet che indirizza i dati tra il front-end Web e il back-end
Servizio di Windows
- questo ci aiuta anche a rilevare quali agenti sono ancora connessi (online)
E la nostra architettura hardware oggi è:
- 2 server per ospitare la parte dell'interfaccia utente Web dell'applicazione
- un servizio di bilanciamento del carico per indirizzare le richieste verso i 2 diversi server di app Web
- un terzo server per ospitare il DB di SQL Server e il servizio di back-end di Windows responsabile dell'accodamento / recapito di chat
Così com'è oggi, uno dei server di app web potrebbe andare giù e noi staremmo bene. Tuttavia, se accadesse qualcosa al server SQL Server / Windows, verremmo disossati.
La mia domanda: come posso rendere questo backend la logica di servizio di Windows in grado di essere distribuita su più macchine (distribuite)? Il servizio Windows è stato scritto per accettare richieste dal server Comet, controllare gli agenti disponibili e instradare la chat a tali agenti. Come posso renderlo più distribuito? Come posso fare in modo che possa distribuire il lavoro del back-end. Il servizio Windows può essere distribuito su più macchine per ridondanza e tempi di attività? Dovrò riscriverlo pensando al calcolo distribuito?
Dovrei anche notare che sto ospitando tutto questo su istanze di Rackspace Cloud - quindi forse è qualcosa di cui dovrei essere meno preoccupato?
Grazie in anticipo per qualsiasi aiuto!