Decuplare cu serviciile de mesagerie AWS

Dezvoltarea aplicațiilor pe AWS

Ricardo Sueiras

Principal Technologist

Noțiuni de bază Amazon SQS

 

sqs overview

  • Gestionează vârfurile de trafic independent de producători.
  • Coadă de mesaje gestionată pentru mesagerie asincronă.
  • Producătorii trimit mesaje într-o coadă.
  • Consumatorii preiau mesaje din coadă.
  • Mesajele sunt păstrate până când un consumator le preia.
  • Retenție: 4 zile implicit, maximum 14 zile.
  • Consumatorii interogă coada și procesează în ritmul propriu.
Dezvoltarea aplicațiilor pe AWS

Vizibilitatea mesajelor

  • Un mesaj devine invizibil imediat ce un consumator îl citește.
  • Timeout-ul de vizibilitate controlează cât timp rămâne ascuns.
  • Dacă procesarea eșuează și mesajul nu este șters:
    • Devine din nou vizibil.
    • Poate fi reprocesат.
  • Timeout de vizibilitate: 30 de secunde implicit.
  • Timeout maxim de vizibilitate: 12 ore.

 

message visibility

Dezvoltarea aplicațiilor pe AWS

Dimensiunea mesajelor

 

image size

  • Mesajele pot avea maximum 256KB.
  • Biblioteca SQS Extended Client permite mesaje mai mari.
  • Stochează payload-ul voluminos în Amazon S3.
  • Trimite un pointer către S3 în payload-ul mesajului.
Dezvoltarea aplicațiilor pe AWS

Interogare scurtă

  • Strategia de interogare influențează costul și eficiența.
  • Interogarea scurtă este implicită.
  • Interoghează un subset de servere SQS, returnează imediat.
  • Poate returna rezultat gol chiar dacă există mesaje.
  • Generează mai multe apeluri API și costuri mai mari.

 

polling

Dezvoltarea aplicațiilor pe AWS

Interogare lungă

  • Interogarea lungă interoghează toate serverele SQS.
  • Așteaptă până la 20 de secunde pentru un mesaj.
  • Elimină răspunsurile goale inutile.
  • Reduce apelurile API și scade costurile.

 

polling

Dezvoltarea aplicațiilor pe AWS

Cozi standard

  • SQS oferă două tipuri de cozi.
  • Cozi standard:
    • Livrare cel puțin o dată.
    • Ordonare prin efort optim.
    • Debit aproape nelimitat.

 

queue types

Dezvoltarea aplicațiilor pe AWS

Cozi FIFO

 

queue types

  • Cozi FIFO:
    • Procesare exact o dată.
    • Ordonare strictă a mesajelor.
    • Deduplicare nativă a mesajelor.
  • Implicit 300 TPS
    • Crește la 3.000 cu grupare sau mai mult cu modul de debit ridicat.
  • Alege tipul de coadă în funcție de caz de utilizare:
    • Standard pentru scalabilitate și debit.
    • FIFO pentru ordonare și deduplicare.
Dezvoltarea aplicațiilor pe AWS

Gestionarea mesajelor problematice

 

dlq

  • Cozile de mesaje moarte (DLQ) stochează mesajele care nu pot fi procesate.
  • Un mesaj este mutat în DLQ după ce depășește maxReceiveCount.
  • Astfel se evită reîncercarea indefinită a unui mesaj problematic.
  • DLQ trebuie să fie același tip de coadă ca sursa.
  • Mută mesajele înapoi în coada sursă pentru reprocesare.
Dezvoltarea aplicațiilor pe AWS

Securizarea cozilor

 

securing SQS

  • Criptează datele în tranzit prin HTTPS implicit.
  • Criptare pe server la repaus cu AWS KMS.
  • Criptează payload-ul pe client cu AWS Encryption SDK.
  • Politicile IAM controlează accesul la cozile SQS.
  • Politicile bazate pe resurse oferă control granular la nivel de coadă.
Dezvoltarea aplicațiilor pe AWS

Noțiuni de bază Amazon SNS

  • Serviciu gestionat de tip publish-subscribe (pub/sub).
  • Utilizează un model push.
  • Publicatorii trimit mesaje către un topic.
    • Dimensiunea maximă a unui mesaj este 256KB.
  • Consumatorii se abonează la topics.
  • Abonații primesc mesaje pasiv.

 

sns overview

Dezvoltarea aplicațiilor pe AWS

Scalabilitate

  • Suportă până la 12,5 milioane de abonamente per topic.
  • Fără retenție a mesajelor:
    • Mesajele se pierd dacă un abonat este indisponibil.
    • Folosește DLQ sau un abonat durabil (coadă SQS) pentru a evita pierderea mesajelor.
  • Distribuie un singur eveniment către mulți consumatori (fan-out).

 

scaling sns

Dezvoltarea aplicațiilor pe AWS

Filtrarea mesajelor

  • SNS suportă politici de filtrare a mesajelor.
  • Abonamentele primesc doar mesajele relevante.
  • Fără filtru, un abonament primește toate mesajele.
  • Politicile de filtrare se aplică la nivel de abonament, nu de topic.

 

filter

Dezvoltarea aplicațiilor pe AWS

Logica și evaluarea filtrelor

 

filter polices

  • Filtrele sunt definite în JSON.
  • Comparate cu atributele mesajului.
  • Condițiile multiple sunt evaluate ca AND.
  • Valorile multiple dintr-o condiție sunt evaluate ca OR.
  • Sunt suportate multe operații de filtrare:
    • Potrivire exactă de șir, numerică, prefix, excludere și interval.
Dezvoltarea aplicațiilor pe AWS

Securitatea SNS

 

sns security

  • Criptează datele în tranzit cu HTTPS implicit.
  • Criptare pe server la repaus cu AWS KMS.
    • Acordă permisiuni SNS pentru a utiliza cheia KMS.
  • Politicile IAM asigură controlul accesului.
    • Controlează cine poate publica în sau se poate abona la un topic.
Dezvoltarea aplicațiilor pe AWS

Hai să exersăm!

Dezvoltarea aplicațiilor pe AWS

Preparing Video For Download...