There’s Just No Getting around It:
You’re Building a Distributed System

Sommario:

  • INTRODUCTION
  • ARCHITECTING A DISTRIBUTED SYSTEM
  • BREAK DOWN INTO SERVICES
  • IMAGE API DETAILS
  • MESSAGING
  • AUTOMATING FAILOVER
  • IMAGE-PROCESSING SERVERS
  • PLATFORM COMPONENTS

Sommario:

  • IMPLEMENTATION
  • VALIDATION/TESTING
  • OPERATIONS
  • Conclusion

SLA

Service Level Agreement

  • Viene solitamente misurato in base al numero di 9
  • Es.: 99,9% 99,999%
  • Ogni 9 aggiuntivo diventa sempre più difficile da raggiungere

SLA

Consumer API

Le richieste verso un sito/API o una applicazione Multi-tenant eccedono le capacità dei computer dell'azienda di gestirle.

Risparmiare

Una azienda decide di muovere una applicazione three-tier su un service cloud per risparmiare sul costo di gestione e dell' hardware

Esempi di casi d' uso:

Consumer API

  • Problema tipico degli ultimi anni
  • Non esistono pattern
  • Nel peggiore dei casi sono necessarie soluzioni create ad hoc!

Risparmiare con il Cloud

  • Si trasferiscono datacenter nel cloud per risparmiare sull' infrastruttura
  • Per permettere il trasferimento parti del sistema devono essere riscritte

Creare un sistema distribuito

Entrambe le applicazioni, anche se con scopi diversi, dovranno affrontare gli stessi problemi

Troppo spesso si creano sistemi distribuiti senza una solida progettazione.

Questo documento vuole dare un workflow generale per la progettazione di un sistema distribuito.

ARCHITECTING A DISTRIBUTED SYSTEM

Service

  • L' idea principale è avere diversi servizi e usare il principio di basso accoppiamento
  • Sono alla base di un sistema resiliente

Progettazione di un Service

Alcune cose da tenere in considerazione durante la progettazione di un Service:

  • Geographies
  • Data segregation
  • SLAs
  • Security
  • Usage tracking
  • Deployment and configuration management

Progettazione di un Service

Non solo bisogna tenere in considerazione i bisogni particolare di un sistema distribuito, ma restano tutti i problemi ingegneristici legati al software comune:

  • Gestione versioni
  • Supporto
  • Aggiornamenti

Ovviamente parleremo solo dei problemi specifici dei sistemi distribuiti

Sistema di esempio:

Image resize

Un web service che offre un servizio di ridimensionamento di immagini.

Sistema di esempio:

Image resize

  1. Carica l' immagine
  2. La ridimensiona
  3. La ripropone all' utente ridimensionata nel minor tempo possibile.

Sistema di esempio:

Image resize

  • Le immagini vengono hostate in un sistema esterno
  • L' utente deve potersi autenticare
  • Il sistema ha un prezzo usagebased

Sistema di esempio:

Image resize

  • 100.000 utenti
  • 10.000 richieste al secondo per regione
  • 99% una latenza inferiore a 500 ms per immagini da 1mb

BREAK DOWN INTO SERVICES

BREAK DOWN INTO SERVICES

  • A costumer-facing API ( REST)
  • Distribuited Message queue
  • Sistema di autenticazione
  • Un rapido sistema per operazioni

ImageAPI details

  • Lo state aggiunge complessità!

ImageAPI Details

  • Geographies: Una singola regione
  • Data Segregation: Stateless, ma multitenant
  • SLA Availability: 99.9% dai requisiti
  • SLA Latency: fino a 10 millisecondi per il 99%

ImageAPI Details

  • SLA throughtput: 10.000 richieste al secondo
  • SLA consistency and durability: Stateless API.
  • IAAA: Sistema di accesso, e log delle richieste
  • Usage Tracking: Statistiche sulle dimensioni delle immagini
  • Deplyment and configuration management: gestire tutto in un modo. 

ImageAPI Details

  • Sarà necessario un sistema di Load Balancing
  • Sarà necessario sviluppare da zero la tier delle API

Messaging

  • Verrà utilizzato un sistema di messaging per comunicare fra le API e i server incaricati del resizing delle immagini.
  • Si utilizza una FIFO dove i server quando pronti vanno a prendere le richieste
  • Verrà utilizzata una message queue preesistente

Messaging

  • Geographies: Non applicabile. Una mq per deployment
  • Data Segregation: Multitenant
  • SLA Availability: Failover automatizzato 
  • SLA Latency: Più breve possibile.

Messaging

  • SLA Throughtput: Vista la bidirezionalità, dovrà supportare 20.000 richieste.
  • SLA Consistency and durability: Semantica della FIFO, necessaria alta consistenza.
  • IAAA: Non applicabile
  • Usage Tracking: Non applicabile
  • Deployment and configuration management: automazione dei failover

Automatizzare il FailOver

  • Per automatizzare il failover, il sistema ha bisogno di un sistema di Leader Election.
  • Verrà utilizzato il protocollo Paxos

Image Processing Server

In base alle premesse, sono server stand-alone e quindi non c'è bisogno di trattarli nel dettaglio

Platform components

Vedremo le parti rilevanti dei servizi di autenticazione e usage collection

Identity and Authentication

Gli eventi delle richieste di autenticazione non possono essere cacheati

I dati per servire le richieste si.

 

Usage Collection

  • Problema inverso all' autenticazione
  • Ogni API server raggruppa le richieste e le invia ad uno staging system

 

Usage Collection

  • Staging system altamente write scalabile e consistente.
  • Ci si aspetta che i dati vengano archiviati per anni, magari su dischi economici.

Architecture wrap-up

  • Decomporre l' applicazione in servizi discreti 
  • Rendere le cose più stateless possibili
  • Se abbiamo gli stati, tenere in considerazione latenza, throughtput, consistenza, affidabilità, durabilità, persistenza.

Implementazione

  • Cercare soluzioni off-the-shelf
  • Essere consapevoli dei trade-off e dei punti di forza

Implementazione

  • Valutare lo stato dell' arte delle tecniche
  • Spesso la soluzione si trova in altri sistemi 

Testing e validation

  • Il testing di sistemi distribuiti è molto difficile.
  • Soggetto ad heisenbugs

Testing e validation

  • Validare sistemi distribuiti è un compito difficile.
  • Rimuovere le dipendenze per verificare le reazioni

Operations

  • Catturare e analizzare tutti gli aspetti del Sistema operativo, network, e application software.
  • Visto che i dati generati dal sistema potrebbero superare quelli usati dal sistema stesso, avremo bisogno di un Sistema Distribuito per gestire il Sistema Distribuito

Conclusione

  • I sistemi distribuiti sono difficili da implementare ed operare.
  • Viene usato l' approccio "Hopefully it works"
  • Usare un approccio metodico per i requisiti

There’s Just No Getting around It: You’re Building a Distributed System

By Federico Ponzi

There’s Just No Getting around It: You’re Building a Distributed System

https://queue.acm.org/detail.cfm?id=2482856

  • 848