L'architettura di eBay...e la parte di accesso ai dati

Girobloggando qui e li...sono arrivato in questo post interessantissimo di Frank Sommers da cui ho scaricato il pdf di una presentazione fatta da due degli architetti di eBay.

Premessa:
credo che eBay sia una, se non la più pesante applicazione software distribuita presente al mondo...
Il pdf (mi sarebbe piaciuto assistere live alla sue spiegazione) è illuminante, fatto bene e ci fa capire la storia delle evoluzioni dalla prima alla attuale versione.

Segno alcuni punti (sparsi) che ritengo interessanti:

Le statistiche sono eccezionali, ne riporto alcune:

  • 212,000,000 Utenti registrati 
  • 1 miliardo di page views al giorno 
  • 26 miliardi di SQL query e updates al giorno
  • 2 petabytes di dati (che andando a ripassare nella scala delle grandezze, sono 2000 Tera) 
  • 99.94% uptime

Queste sono condizioni che impattano fortemente sulle scelte architetturali (Scalabilità).

Nella sezione dedicata all'accesso ai dati ho notato:

  • Il middle tier è scritto in J2EE ma hanno dovuto riscrivere il connection pool, in effetti sotto certe condizioni, ci si scontra inevitabilmente anche con i limiti delle class library ufficiali dei linguaggi adottati. Stessa cosa capitò a me tempo fa con la Datagrid di .NET che sotto particolari stress test evidenzio debolezze non indifferenti.
  • Nessuna Business Logic sul database. No Stored procedure. Solo qualche trigger...
    Non posso che trovarmi d'accordo. Se a certi livelli si può sopravvivere senza SP...figuriamoci al di sotto.
  • Move CPU-intensive work to Application: Referencial Integrity, Joins, Sorting
    Sinceramente non ho mai spostato controlli di Integrità referenziale sugli application layer...ma sta cosa mi fa rivedere in un ottica diversa l'argomento...credo che investigherò di più in questa direzione...

    Cache where possible...
    Questo è SACRO. Io fondamentalmente cerco sempre di applicare la cache sui dati in modo intelligente, e il supporto dato dagli ORM in questo settore è fondamentale. Avere in modo gratuito da NHibernate dei provider su sistemi di cache evoluti gratuiti e non, è il massimo...vedi Memcahed, NCache o altri.

Ah... e si sono scritti un loro ORM per il mapping, in Java...notevole!

Ai posteri le riflessioni...

Print | posted on venerdì 29 dicembre 2006 12:35

Comments on this post

# re: L'architettura di eBay...e la parte di accesso ai dati

Requesting Gravatar...
"Nessuna Business Logic sul database. No Stored procedure. Solo qualche trigger...
Non posso che trovarmi d'accordo. Se a certi livelli si può sopravvivere senza SP...figuriamoci al di sotto.
"

Non far confusione tra BL e SP. Nelle SP non deve essere messa la logica di business.

Left by Davide Mauri on dic 29, 2006 12:16

# re: L'architettura di eBay...e la parte di accesso ai dati

Requesting Gravatar...
Ah dimenticavo :-) Il terzo punto non lo commento perchè lo trovo davvero "particolare"...in pratica hanno re-inventato l'acqua calda. O la ruota. Scegliete voi.
Devo cmq dire che un caso particolare come eBay *potrebbe* giustificare la cosa. Spero però che nessuno leggengo questo post si metta a fare la stessa cosa.

Cmq non mi stupisco che abbiano dovuto riescrivere tutto questo...usano Oracle :-D

Parlando seriamente, le slide sono pò troppo markettare...non dicono quanto gli costa (immagino tanto visto che ogni mese producono 100.000 linee di codice ogni 2 mesi)

Una cosa la condivido al 100%: "Prefer Asyncronous Integration".

Nel caso di eBay sono ovviamente anche daccordo un pesante utilizzo di caching, che aumenta la complessità del sistema ma offre ovviamente benefici notevoli per quanto riguarda la scalabilità.
Left by Davide Mauri on dic 29, 2006 12:27

# re: L'architettura di eBay...e la parte di accesso ai dati

Requesting Gravatar...
@Davide
"Non far confusione tra BL e SP. Nelle SP non deve essere messa la logica di business. "

Sfondi una porta aperta, e magari fosse sempre così.
Il mio commento era però riferito al secondo periodo del primo punto.

Sul terzo punto come ho scritto...anche io l'ho trovato un po particolare...non avevo mai pensato a questa strategia...mi riservo di investigare per capire pro e contro.
Non voglio essere assolutista. Magari la loro scelta è stata fatta per arrivare ad una scalabilità che non poteva essere garantita altrimenti. Non possiamo giudicare più di tanto.

Una sola cosa però va detta. Ebay è cmq un caso di "successo" planetario palese. Quindi tutte le informazioni le prendo con grandissima considerazione, marchettare o no...e a prescindere dal costo.
Left by Giancarlo Sudano on dic 29, 2006 3:09

# Sull'architettura di eBay...

Requesting Gravatar...
Left by PhilloPuntoIt on dic 29, 2006 5:02

# Sull'architettura di eBay...

Requesting Gravatar...
Left by PhilloPuntoIt on dic 29, 2006 5:11

# re: L'architettura di eBay...e la parte di accesso ai dati

Requesting Gravatar...
non vorrei dire una castroneria, ma da quello che ho capito il discorso della integrità referenziale via "application" serve a favorire la suddivisione "funzionale" dei DB, tra i quali però rimangono legami e dipendenze.

ciao
-papo-
Left by papo on dic 29, 2006 5:12
Comments have been closed on this topic.