Sunteți pe pagina 1din 9

CLIENT AMAZON S3

Moișan Ionel-Felician
Lixandra Bogdan
Popescu Constantin Sergiu
Buzuleac Mihaela Florentina Georgiana

Proiect BIG DATA Echipa HAMAS Master ABD, AN 1

1. Descriere Amazon S3
Un număr din ce în ce mai mare de utilizatori și organizații depinde din ce în ce mai mult
de cloud, deoarece infrastructurile bazate pe cloud sunt folosite astăzi pentru a oferi un set tot
mai mare de servicii și aplicații. Progresele în tehnologiile de rețea și creșterea nevoii de resurse
de stocare au determinat multe companii să își externalizeze nevoile de stocare.
Această cerere vizibilă conduce la investiții uriașe din partea furnizorilor, pentru a
implementa în mod adecvat paradigma cloud public și pentru a pune la dispoziția clienților atât
avantaje tehnice cât și economice remarcabile. Stocarea în cloud (cunoscută și sub numele de
stocare ca serviciu) denotă o familie de servicii on-line din ce în ce mai populare pentru arhivare
și backup de date. Datorită serviciilor de stocare în cloud, clienții pot depune, accesa și distribui
diferite tipuri de date, fără a fi nevoie de niciun plan, furnizare sau investiție inițială și fiind
supuși unui model de plată pay-as-you-go.
În conformitate cu reticența clienților în externalizarea informațiilor și resurselor critice,
furnizorii de cloud oferă de obicei garanții ridicate în ceea ce privește disponibilitatea și
fiabilitatea serviciilor, care sunt adesea bine reglementate prin acorduri de nivel de serviciu
(SLA). Pe de altă parte, rareori fac promisiuni cu privire la performanța așteptată de la acest tip
de servicii În timp ce mai multe lucrări din literatură au abordat probleme legate de securitate
(cum ar fi confidențialitatea, integritatea, disponibilitatea etc.), câteva dintre ele au vizat
performanța în rețea a acestui tip de serviciu. Din această perspectivă, rețeaua este într-adevăr o
componentă cheie pentru serviciile cloud, așa cum s-a remarcat și în literatura recentă. Deoarece
cloud-ul este accesibil doar de la distanță, caracteristicile și cifrele de performanță ale colecției
de căi între centrele de date cloud și gazde de pe Internet pot avea impact asupra performanței
sistemului general și asupra calității serviciului (QoS) experimentat de clienți.
În această lucrare, ne propunem să testam performanța serviciilor de stocare în cloud,
avand in prim plan Amazon Simple Storage Service (S3). Amazon Simple Storage Service (S3)
este un serviciu care asigură stocarea și preluarea oricărei cantități de date, printr-o interfață
simplă de servicii web. Acesta folosește aceeași infrastructură de stocare scalabilă pe care o
utilizează și Amazon.com pentru a rula rețeaua sa de comerț electronic. Amazon S3 poate fi
utilizat pentru a stoca orice tip de obiecte, precum: aplicații web, fișiere pentru backup și
recuperare în caz de dezastru, arhive de date.
Serviciile Amazon S3 sunt folosite la scară largă deoarece permit stocarea datelor într-o
manieră ierarhică, fiind foarte rentabile ca preț (0.023$/GB), având latență scăzută și high
throughput access. Au redundanță extrem de crescută (99.999999999%), putând fi folosite ușor
pentru hostarea site-urile web statice. Permit integrarea cu SNS (Simple Notification Service -
serviciu de comunicare între aplicații, sau între aplicație și persoană), SQS (Simple Queue
Service - ajută la construirea aplicațiilor distribuite) și Lamda pentru creare unor aplicații
puternice, bazate pe evenimente.
Amazon S3 are diverse funcții pe care le puteți utiliza pentru a vă organiza și gestiona
datele în moduri care susțin cazuri de utilizare specifice, permit eficiența costurilor, asigură
securitatea și îndeplinesc cerințele de conformitate. Funcțiile S3 includ capacități de a atașa
etichete de metadate la obiecte, de a muta și stoca date în clasele de stocare S3, de a configura și
de a aplica controale de acces la date, de a proteja datele împotriva utilizatorilor neautorizați, de
a rula analize de date mari și de a monitoriza datele la obiect, si de a vizualiza utilizarea stocării
și tendințele de activitate din organizația dvs. Obiectele pot fi accesate prin punctele de acces S3
sau direct prin numele gazdei.
Folosind Amazon S3, putem:
● crea bucket-uri (containere fundamentale) care stochează date. Configurarea bucket-
urilor permite crearea acestora într-o anumită regiune AWS. De asemenea, puteți
configura un bucket astfel încât, de fiecare dată când i se adaugă un obiect, Amazon S3
generează un ID de versiune unic și îl atribuie obiectului. Un obiect este identificat în
mod unic într-o bucket printr-o cheie (nume) și un ID de versiune. Exista opțiunea de a
alege regiunea unde Amazon S3 va stoca bucket-urile, cu scopul de a optimiza latența, a
minimiza costurile sau pentru a aborda cerințele de reglementare. Obiectele stocate într-o
regiune nu părăsesc niciodată regiunea decât dacă le transferați în mod explicit într-o altă
regiune.
● stoca o cantitate enorma de date intr-un bucket (un bucket poate contine oricate obiecte,
iar un obiect poate contine pana la 5TB de date). Obiectele constau din date și metadate
ale obiectelor. Metadatele sunt un set de perechi nume-valoare care descriu obiectul.
Acestea includ unele metadate implicite, cum ar fi data ultimei modificări, și metadatele
HTTP standard, cum ar fi Content-Type. De asemenea, puteți specifica metadate
personalizate în momentul stocării obiectului. Amazon S3 are un serviciu de încărcare
multipart care permite încărcări mai rapide și mai flexibile în Amazon S3. Multipart
Upload ne permite să încărcăm un singur obiect ca mai multe diviziuni. După ce toate
părțile obiectului sunt încărcate, Amazon S3 prezintă datele ca un singur obiect. Cu
această caracteristică putem crea încărcări paralele, întrerupe și relua încărcarea unui
obiect și de asemenea, putem începe încărcările înainte de a cunoaște dimensiunea totală
a obiectului.
Pentru a urmări obiectele și etichetele acestora, bucket-urile și prefixele respective, puteți
utiliza un raport S3 Inventory care listează obiectele stocate într-un bucket S3 sau cu un prefix
specific, precum și starea lor respectivă de metadate și criptare. Inventarul S3 poate fi configurat
pentru a genera rapoarte zilnic sau săptămânal. Folosind modulul de Replicare, se pot replica
obiecte (și metadatele și etichetele obiectelor respective) pe unul sau mai multe bucket-uri de
destinație în aceleași sau diferite regiuni AWS pentru o latență redusă, conformitate, securitate,
recuperare în caz de dezastru și alte cazuri de utilizare.
● descărca datele stocate
● folosi interfețe bazate pe standardele REST si AWS SDKs;
Un utilizator al serviciilor S3 poate permite sau poate nega accesul altor utilizatori care
doresc să descarce, sau să încarce, fișiere în/din bucketul lor. De asemenea, fiecare obiect dintr-
un bucket este identificat printr-o cheie unică, atribuită utilizatorului.
Boto este SDK-ul Amazon Web Services (AWS) pentru Python. Permite dezvoltatorilor
Python să creeze, să configureze și să gestioneze servicii AWS, cum ar fi EC2 (Elastic Compute
CLoud) și S3.
În ceea ce privește performanța atunci când se încarcă sau extrage un anumit obiect de pe
platforma Amazon S3, aceasta se ridică automat la rate de solicitare ridicate. De exemplu, o
aplicație poate realiza cel puțin 3.500 de cereri PUT/COPY/POST/DELETE sau 5.500 de cereri
GET/HEAD pe secundă per prefix într-un bucket. Nu există limite la numărul de prefixe dintr-un
bucket. Prin prefix ne referim la o grupare logică a obiectelor dintr-un bucket, iar valoarea
prefixului este similară cu un nume de director care ne permite să stocăm datele într-o manieră
ierarhică. Atunci când se încearcă optimizarea performanței, trebuie să analizăm cerințele privind
capacitatea rețelei, CPU și DRAM. De asemenea, este util să observăm timpul de căutare DNS,
latență și viteza de transfer de date utilizând instrumentele de analiză HTTP atunci când
măsurăm performanța.
Distribuirea cererilor pe mai multe conexiuni este un model comun de proiectare pentru a
scala performanța pe orizontală. Atunci când ne dorim să realizăm o aplicație de înaltă
performanță, trebuie să ne gândim la Amazon S3 ca la un sistem distribuit foarte mare, nu ca la
un server de stocare tradițional. Cele mai bune performanțe le putem obține prin emiterea de
cereri multiple, simultane, către Amazon S3, iar pentru a maximiza lățimea de bandă trebuie să
răspândim aceste cereri pe conexiuni separate.
Deși numele bucket-urilor S3 sunt unice la nivel global, fiecare este stocat într-o regiune
pe care o selectăm atunci când creăm bucket-ul. Pentru a optimiza performanța, este recomandat
să accesăm bucket-ul din aceeași regiune AWS atunci când este posibil. Acest lucru ajută la
reducerea latenței rețelei și a costurilor de transfer de date.
Dacă o sarcină de lucru trimite cereri GET repetate pentru un set obișnuit de obiecte, se
poate utiliza o memorie cache precum Amazon CloudFront, Amazon ElastiCache sau AWS
Elemental MediaStore pentru a optimiza performanța. Adoptarea cu succes a memoriei cache
poate duce la o latență scăzută și rate de transfer de date ridicate. Aplicațiile care utilizează
stocarea în cache trimit, de asemenea, mai puține solicitări directe către Amazon S3, ceea ce
poate ajuta la reducerea costurilor solicitării.lunar
Amazon S3 Transfer Acceleration gestionează transferurile rapide, ușoare și sigure de
fișiere pe distanțe geografice mari între client și un bucket S3. Accelerarea transferului este
ideală pentru transferul de GB în TB de date în mod regulat pe continente. Este, de asemenea,
util pentru clienții care încarcă într-un bucket centralizat din întreaga lume. Instrumentul
Amazon S3 Transfer Acceleration Speed Comparison compară viteza de încărcare accelerată și
neaccelerată în toate regiunile Amazon S3. Instrumentul de comparare a vitezei utilizează
încărcări multipart pentru a transfera un fișier din browser în diferite regiuni Amazon S3 cu și
fără utilizarea Amazon S3 Transfer Acceleration.
Vom folosi Amazon S3 Transfer Acceleration pentru a micșora valorile latenței cauzată
de distanța.

Cateva dintre metricile pe care Amazon S3 le trimite către CloudWatch sunt:


● Metrici de stocare pentru buckets:
- BucketSizeBytes: Cantitatea de date în octeți stocată într-un bucket din clasa de
stocare STANDARD, clasa de stocare INTELLIGENT_TIERING, clasa de
stocare Standard - Acces rar (STANDARD_IA), OneZone - Acces rar
(ONEZONE_IA), clasa Redundancy Storage (RRS), Deep Archive Storage
( Clasa S3 Glacier Deep Archive) sau clasa de stocare Glacier (GLACIER).
Această valoare se calculează prin însumarea mărimii tuturor obiectelor din
bucket (atât obiecte curente, cât și obiecte necurente), inclusiv dimensiunea
tuturor componentelor pentru toate încărcările incomplete multipart în bucket.
- NumberOfObjects: Numărul total de obiecte stocate într-o găleată pentru toate
clasele de stocare. Această valoare este calculată prin numărarea tuturor
obiectelor din bucket (atât obiecte curente, cât și obiecte necurente) și a numărului
total de componente pentru toate încărcările incomplete multipart în bucket.
● Metrici de cereri
- PutRequests - Numărul de solicitări HTTP PUT efectuate pentru obiectele dintr-
un bucket.
- DeleteRequests - Numărul de solicitări HTTP DELETE efectuate pentru obiectele
dintr-un bucket. Acesta include și solicitările de ștergere a mai multor obiecte.
Această valoare indică numărul de solicitări, nu numărul de obiecte șterse.
- HeadRequests - Numărul de solicitări HTTP HEAD efectuate către un bucket.
- PostRequests - Numărul de solicitări HTTP POST efectuate către un bucket.
- FirstByteLatency - Timpul pe cerere de la primirea cererii complete de către un
bucket până la momentul în care răspunsul începe să fie returnat.
- TotalRequestLatency - Timpul de solicitare scurs de la primul octet primit până la
ultimul octet trimis către un bucket. Aceasta include timpul necesar pentru
primirea corpului de solicitare și trimiterea corpului de răspuns, care nu este
inclus în FirstByteLatency.
● Metrici de replicare
- ReplicationLatency - Numărul maxim de secunde în care Regiunea de destinație
de replicare se află în spatele Regiunii sursă pentru o regulă de replicare dată.
- BytesPendingReplication - Numărul total de octeți ai obiectelor în așteptarea
replicării pentru o regulă de replicare dată.
- OperationsPendingReplication - Numărul de operațiuni în așteptarea replicării
pentru o regulă de replicare dată.
Se pot utiliza următoarele proceduri pentru a vizualiza valorile de stocare. Pentru a obtine
valorile, trebuie setat un timestamp de început și de sfârșit. Pentru valori curpinse in orice
perioadă dată de 24 de ore, setați perioada de timp la 86400 de secunde, numărul de secunde
dintr-o zi. De asemenea, trebuie setate dimensiunile BucketName și StorageType.
2. Implementare
Proiectul constă în măsurarea performanțelor prin implementarea unui program Client
care încarcă cateva tipuri fișiere de diferite mărimi pe Platforma Amazon S3 și măsoară latenta
pentru fiecare operație de scriere, viteza de încărcare, viteza de descarcare a fișierelor și memoria
utilizata. Programul primește ca parametru un director care conține fișiere de diferite mărimi care
vor fi scrise secvențial.

3. Rezultate
Testarea se va realiza în condiții diferite: conexiune la internet prin cablu, conexiune la
internet prin Wi-fi, sisteme mai performante și mai puțin performante (scalare orizontală).
Testele le vom inițializa încărcând jumătate din setul de date în S3 bucket. Dorim să putem testa
performanța de a face cereri unice introducând date în bucket-ul S3. De asemenea, vom face un
test de performanță pentru paralelizarea mai multor cereri. Pentru a monitoriza performanța S3 și
a valorifica valorile disponibile, vom utiliza tablourile încorporate în consola de administrare S3
și AWS CloudWatch (ne propunem să folosim propriile noastre tablouri de bord).

Amazon CloudWatch Metrics ajuta la îmbunătățirea performanței aplicațiilor care


utilizează Amazon S3 și oferă următoarele beneficii:
● Monitorizarea spațiului de stocare pentru buckets - CloudWatch colectează și procesează
datele de stocare de pe Amazon S3 în valori zilnice lizibile. Aceste valori de stocare sunt
raportate o dată pe zi și sunt furnizate tuturor clienților fără costuri suplimentare.
● Valori de solicitare - Monitorizarea solicitărilor Amazon S3 pentru a identifica rapid și a
acționa asupra problemelor operaționale. Valorile sunt disponibile la intervale de 1 minut,
după o anumită latență de procesare. Valorile solicitării sunt raportate pentru toate
operațiunile obiectelor. În mod implicit, aceste valori de 1 minut sunt disponibile la nivel
de bucket. De asemenea, se poate defini un filtru pentru valorile colectate utilizând un
prefix partajat sau o etichetă obiect. Acest lucru permite alinierea filtrelor de măsurare la
anumite aplicații comerciale, fluxuri de lucru sau organizații interne.
● Valori de replicare - Monitorizarea numărului total de operațiuni API S3 care sunt în
așteptarea replicării, dimensiunea totală a obiectelor în așteptarea replicării și timpul
maxim de replicare către regiunea de destinație. Regulile de replicare care au S3
Replication Time Control (S3 RTC) sau valorile de replicare S3 activate, vor publica
valorile de replicare.
Toate statisticile CloudWatch sunt păstrate pentru o perioadă de 15 luni, astfel încât să se
poată accesa informații istorice pentru o perspectivă mai bună asupra performanței aplicației sau
a serviciului web.
În urma testării pe sistemele de operarea Windows 10 și Mac OS 11.1, pe o conexiune
wifi, pentru fiecare test prima imagine este reprezentată de rularea programului în Windows și a
doua în Mac OS.
Pentru primul test s-a utilizat un singur document de tip arhivă zip.

Pentru al doilea test s-au utilizat mai multe fisiere de tipuri diferite: mp4, zip și docx.
4. Concluzii
După cum se poate observa mai sus viteza de upload este mai mare decât cea de
download indiferent de sistemul de operare pe care programul rulează, dar se mai poate observa
o diferență între sistemul de operare Windows și MacOs și anume atât pentru upload cât și pentru
download performanță a fost mai bună pe sistemul de operare windows, se mai poate observa și
că latență diferă și anume de exemplu 2 se observa ca pe windows la download latența e mai
mare față de Mac Os, dar nu și la upload, dar aceasta valoarea este dependentă de rețeaua wifi la
care este conectat dispozitivul.
5. Bibliografie
[1] https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html
[2] https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-configure-bucket.html
[3] https://docs.aws.amazon.com/AmazonS3/latest/dev/optimizing-performance-guidelines.html
[4] https://www.cloudways.com/blog/aws-benchmarking-test/
[5]https://www.linkedin.com/pulse/better-performance-measurement-s3-compatible-object-
stores-martin
[6] https://www.instana.com/supported-technologies/aws-s3-monitoring/

S-ar putea să vă placă și