Μην βιάζεσαι! Το in-memory cache είναι πάντα περίεργη υπόθεση, επειδή κάθε εφραμογή έχει διαφορετικές απαιτήσεις στο συγχρονισμό των αλλαγών. Αν η εφαρμογή απαιτεί όλα τα μηχανήματα να έχουν την τελευταία έκδοση των cached δεδομένων περιορίζεται το scalability. Μία εφαρμογή η οποία αρκείται και σε "μπαγιάτικα" δεδομένα θα έχει και καλύτερο scalability και θα μπορεί να εκμεταλλευτεί την cache καλύτερα. Επιπλέον, ένα web site χρησιμοποιεί πολύ περισσότερα read-only δεδομένα από ένα Web Service/WCF component.
Η ιδέα του Velocity δεν είναι καινούρια. Ήδη από το COM+ (ουδεμία σχέση έχει με DCOM) υπήρχε η IMDB (In Memory Database) η οποία όμως αποσύρθηκε πολύ σύντομα γιατί δεν έλυνε το πρόβλημα του distribution. Με δεδομένο ότι όποιος χρησιμοποιούσε COM+ το έκανε για να μπορεί να βγάλει όσο το δυνατόν περισσότερα transactions, το IMDB δεν είχε επιτυχία. Μην βιάζεσαι να ξεφορτωθείς το δικό σου σύστημα γιατί μπορεί το Velocity να μην μπορεί να προσαρμοστεί στις δικές σου ανάγκες.
Κοιτάζωντας το concurrency model του Velocity πάντως, βλέπω ότι υποστηρίζει pessimistic locking (κλειδώνω τους πάντες μέχρι να κάνω update, χάλια scalability), optimistic (ελέγχω για αλλαγές μόνο στο update, αρκετά καλύτερο scalability), ίσως και καθόλου locking (το documentation της Put δεν ξεκαθαρίζει αν μπορεί να δουλέψει και χωρίς locking). H Put πάντως εκτελείται σύγχρονα, το οποίο σημαίνει ότι είτε η εφαρμογή σου θα πρέπει να περιμένει μέχρι να πάρει απάντηση από τους cache servers ότι έγινε η αποθήκευση, ή να γράψεις κώδικα για να την εκτελέσεις ασύγχρονα.
Τέλος, δεν βλέπω πουθενά στο API ή στο ... Reflector τη δυνατότητα να μπορεί ςνα δουλέψεις και με μπαγιάτικα δεδομένα. Αυτό σημαίνει ότι η ταχύτητα του δικτύου μπορεί να είναι θέμα σε περίεργες καταστάσεις, π.χ. σε ασύρματα δίκτυα ή WAN.
Αν δανειστούμε λίγη ορολογία από τις τηλεπικοινωνίες, φαίνεται ότι το Velocity είναι σχεδιασμένο για εφαρμογές HS (High Scalability) και VHS (Very High Scalabitliy, π.χ. τραπεζικές) όχι όμως και UHS (Ultra High Scalability, Amazon, eBay αλλά και κάποιες μικρότερες εφαρμογές distributed control).
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos