Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Esempi pratici di applicazioni serverless ad alta disponibilità

Esempi pratici di applicazioni serverless ad alta disponibilità

Public talk presented in Italian at the Serverless Italy Meetup.

Serverless consente agli sviluppatori di concentrarsi sull'implementazione della logica backend piuttosto che sul provisioning dei cluster, sulla manutenzione dei sistemi operativi e sull'orchestrazione dei container. Fornisce inoltre un' incredibile disponibilità e tolleranza ai guasti.
Tuttavia niente al mondo è infallibile, e bisogna sempre cercare di essere preparati ad errori inaspettati. Esaminerò alcuni esempi di modalità di errore non scontate e come mitigarle, da un punto di vista backend.

Sara Gerion

April 23, 2020
Tweet

More Decks by Sara Gerion

Other Decks in Technology

Transcript

  1. @Sarutule 9 Disponibilità dei servizi AWS •Distribuzione dalla edge location

    •Disponibile con una percentuale di uptime mensile di almeno il 99,9% •Più vicino al client
  2. @Sarutule 10 Disponibilità dei servizi AWS •Distribuzione dalla edge location

    •Disponibile con una percentuale di uptime mensile di almeno il 99,9% •Più vicino al client •Distribuzione dalla AWS region •Disponibile con una percentuale di uptime mensile di almeno il 99,9% (DynamoDB) e 99,5% (API Gateway & Lambda) •Ridondanti in ogni AZ
  3. @Sarutule 12 Possibilità di tornare indietro nel tempo Maggiore chiarezza

    sulle modifiche fatte Collaborazione più efficace Alcuni benefici
  4. @Sarutule 16 Struttura tipica dei file: • └── service ├──

    backend.tf ├── data.tf ├── locals.tf ├── main.tf ├── provider.tf └── variables.tf Terraform - Le componenti
  5. @Sarutule 23 • JavaScript “coi tipi” :-) • Tradotto da

    un compilatore in JavaScript puro • Codice compilato viene eseguito nei Lambda runtime Node.js • Possibile intercettare errori già in fase di compilazione • Relativamente semplice da capire per sviluppatori frontend TypeScript
  6. @Sarutule 24 Linter del codice https://github.com/eslint/eslint Test https://github.com/facebook/jest Mocking delle

    dipendenze (sia remote che non) https://github.com/florinn/typemoq Mocking dei servizi AWS https://github.com/dwyl/aws-sdk-mock Immancabile ;-) https://github.com/aws/aws-sdk-js Librerie utili
  7. @Sarutule 30 GIt push to branch (non master): - Tests

    (unit) - Security audit - Linters - Terraform validate & plan Git push to master / deploy: - Tests (unit) - Security audit - Linters - Terraform validate & plan & apply - Test aggiuntivi (e2e, …) Esempio di strategia CI/CD
  8. @Sarutule 31 Tipi di release Nuova versione Vecchia versione Nuova

    versione Vecchia versione Blue-green deployment Canary deployment 5% 95%