Gestionați puncte de eșec în proiectarea de aplicații cloud

Patru modalități de a îmbunătăți fiabilitatea aplicațiilor cloud

Peter Bedll. Director Tehnic, Powwow

Peter Bell (Peter Bell) este directorul tehnic al Powwow de pornire macră, situat în New York. Prezentat la nivel internațional, și a scris pe larg pe teme de cloud computing, limbaje de domeniu, arhitecturi dinamice, NoSQL și cerințe și evaluări. A participat la mai multe conferințe, inclusiv conferințe DLD, ooPSLA, generare de cod, Linii practice de produse, British Computer Society Practici Software Avansarea, UberConf, Rich Web Experience și tur nr Puf Just Stuff. Publicat în IEEE Software. Dr. Dobbs. IBM developerWorks. Information Week. Metode - Instrumente. Codul Piure. NFJS revista. JSMag și GroovyMag. El este instructor regulat la adunarea generală - campus tehnologie, design și de afaceri din New York.

Care este fiabilitatea

Există mai multe definiții ale fiabilității software-ului. Eu cred că, în practică, cel mai important lucru este faptul că.
Utilizatorii ar trebui să poată să utilizeze sistemul pentru a atinge obiectivele lor.

Strict vorbind, pur și simplu nu contează dacă nimeni nu încearcă să utilizeze aplicația. Și în cazul în care cererea din punctul de vedere al lucrărilor de utilizatori, nu contează dacă persoanele cu dizabilități în momentul în care subsistemul din care sunt conștienți.

În mod similar, nu contează timpul de funcționare, în cazul în care utilizatorii nu pot efectua interventii chirurgicale care au nevoie din cauza unor erori în codul aplicației.

Această poziție importantă, deoarece acestea se concentreze pe lucrul cel mai important - la valoarea pentru utilizatorii sistemului, mai degrabă decât funcționarea nominală a unui subsistem.

Luați în considerare patru moduri de a proiecta aplicatii bazate pe web puternice și fiabile:

  • Reducerea numărului de puncte unice de eșec.
  • eșecuri de management al comportamentului.
  • de detectare a defecțiunilor.
  • Prevenirea eșecuri folosind strategii de proiectare, dezvoltare, testare și implementare.

Reducerea numărului de puncte unice de eșec

Primul mod de a îmbunătăți fiabilitatea este de a reduce numărul sau elimina puncte unice de eșec. Arhitectura aplicatii cloud simplifica acest proces, deoarece acestea sunt blocuri de calcul mai abstracte. Când se utilizează cloud computing nu trebuie să se îngrijoreze astfel de lucruri ca pune două plăci de rețea într-un singur server, calitatea conexiunilor și a cablurilor, precum și probabilitatea de deconectare accidentală. De asemenea, nu trebuie să vă faceți griji pentru niveluri RAID-sagetilor si ce modele de hard disk au un MTBF rezonabil.

Apariția unor puncte unice de eșec depinde de aplicație, dar, de obicei, ele apar în următoarele domenii:

  • DNS-servere.
  • Web-servere.
  • servere de baze de date.
  • servere de fișiere.
  • distribuitori de sarcină.
  • Alte servere specializate.
  • Interdependența cu aplicații de la terți.

Figura 1 arată punctul tipic de eșec.

Figura 1. Punctele tipice de eșec

DNS-servere

Multe organizații plasează aplicațiile lor în cloud, încă utilizați DNS-servere separate. Este important să vă asigurați că vă sau contactați furnizorul dvs. DNS-servicii au unele dintre DNS-servere care conțin DNS-înregistrările pentru aplicațiile dvs. în diferite centre de date. Fiabilitatea Web-hosting absolut nu contează dacă utilizatorii nu pot obține DNS-intrare pentru a accesa aplicația. Analizați setările de DNS-servere și verificați dacă acesta este un singur punct ușor corectabile de eșec.

Web-servere

Există mai multe tehnici avansate de arhitectură care merită atenție la, dacă doriți să aveți unele de Web-servere pentru failover în cazul defectării unuia dintre ele. În primul rând, nu este necesar să se utilizeze un sistem de fișiere local pe Web-servere pentru stocarea orice informații importante. Pentru cineva care scrie de obicei, o cerere pentru un singur server web, este neobișnuit. Cu toate acestea, ar trebui să presupună că orice server, în orice moment poate eșua, așa că, dacă un utilizator dorește să încărcați fișiere, sau doriți să înregistrați informațiile, face acest lucru într-un sistem de fișiere separat, sau o bază de date accesibilă tuturor de Web-servere. Astfel, utilizatorul poate încărca imaginea pe un server și apoi îl accesați folosind orice alte servere în cazul în care serverul principal eșuează.

Servere de baze de date

Este important să se înțeleagă cerințele la serverul de baze de date și selectați tehnologia corespunzătoare și strategia de scalare. De exemplu, dacă utilizați un sistem de management de conținut cu un număr mare de citește și un număr relativ mic de operații de scriere, este posibil să se ia în considerare numai un singur punct de eșec pentru a scrie la baza de date. În acest caz, este posibil să se pună în aplicare o replicare bază de date relațională de master-slave de tip (master-slave), atunci când există un singur nod principal și slave poate continua să servească operația de citire, chiar și în caz de eșec al serverului master. Dacă fiabilitatea este importantă atât citește și scrie, ar trebui să ia în considerare folosind o varietate largă de stocare SQL nu care simplifică distribuite pe mai multe noduri de stocare, creșterea fiabilității și scalabilitate.

Când se utilizează, trebuie să te gândești, de asemenea, cu privire la consistența cerințelor bazei de date. În prezent, multe aplicații la scară Web se deplasează de la unitățile de coordonare directe mai fiabile și mai productiv în cele din urmă sisteme convenite. Sistemul a fost de acord în cele din urmă nu garantează că unul și același timp, o bază de date diferite noduri vor genera aceleași date. Evident, pentru pregătirea cererilor bancare într-unul și același timp, diferite valori ale soldului contului de noduri diferite este inacceptabil, așa că este număr surprinzător de mare de sisteme care permit consistența finală a datelor în schimbul pentru performanță și fiabilitate mai bună.

servere de fișiere

Așa cum am menționat mai devreme, crearea unui sistem de încredere, probabil că nu va păstra informații importante despre Web-servere individuale. În schimb, toate Web-servere va utiliza un server dedicat pentru a stoca și de a prelua fișiere statice. Asigurați-vă că punctul unic de eșec nu creează un server de fișiere pe care îl utilizați, fie că este vorba de sistem de fișiere nor cu built-in redundanță și failover, sau propriul sistem cu o distribuție volumului de lucru și servere de fișiere multiple care se conectează la sistemele de unul sau mai multe fișiere sincronizate.

loturile distribuitori

Este important să înțelegem că stresul și distribuitorii se pot crea un singur punct de eșec. Ia timp pentru a studia punerea în aplicare a distribuției de încărcare în arhitectura nor și să se asigure că un singur eșec nod nu se oprește funcționarea întregii aplicații.

Alte servere specializate

Cel mai important momentul creării unor astfel de sisteme - determinarea gradului de importanță a timpului de funcționare a acestora fără probleme pentru percepția uptime a întregului sistem. Este clar că, în sistemul de mesagerie corporativă, care utilizează e-mail pentru a oferi cea mai mare parte a mesajului, serverul de e-mail este critică pentru percepția uptime, astfel încât să puteți obține în jurul valorii de refuzul de mai multe servere de e-mail. În cazul în care serverul de mail trimite doar ocazional mesaje de e-mail, cum ar fi „parolă uitată“ sau „statut“, este posibil pentru a preveni potențialul de nefuncționare prin furnizarea de un singur server de e-mail.

Interdependența cu aplicații de la terți

Foarte des, funcționarea cu succes a cererii depinde de accesul la servicii furnizate de terțe părți. Dacă furnizați de intrare prin intermediul Facebook, apoi serverele sistemul OAuth Facebook sunt punctul de eșec. Dacă furnizați date capabilități de căutare LexisNexis, acest portal este pentru punctul de aplicare a eșecului. Atunci când se decide modul în care să se ocupe legate de punctul potențial de risc eșec, ar trebui să fie analizate, ca fiind critică pentru experiența utilizatorului este un serviciu terță parte, cât de repede ar trebui să fie interacțiunea și ceea ce este de natură să întrerupă serviciul.

Figura 2. Puncte suplimentare de eșec

de management al erorilor

Este important să se analizeze modul în care lucrările vor fi eșecuri, și să le testați pentru a se asigura rezultatele scontate. În cazul în care nu sunt utilizate sesiuni nacela, cu un eșec sarcini distribuitor Web-tier bine conceput nu este de obicei vizibil. Este necesar să se examineze cu atenție eșecul bazei de date pentru sistemul de stocare selectat, dar cele mai multe baze de date au o buna documentare care descrie cu exactitate ceea ce se întâmplă atunci când un eșec nod. Trebuie să planifice cu atenție eșecurile de management între subsisteme care interacționează. Ce se întâmplă, de exemplu, în cazul în care Web-serverul va trimite solicitarea către serverul de e-mail prin care va accepta solicitarea și apoi nu reușesc să transmită un mesaj?

O altă abordare tipică de astăzi este utilizarea de cozi de mesaje, procesul de mesaje între subsisteme în mișcare și oferă o asigurare de livrare (a se vedea. Figura 3).

Figura 3. failover fără stocare locală

Există un număr de cozi de mesaje. Doar asigurați-vă că ați înțeles modul în care va rula punerea în aplicare selectată, în cazul în care mesajul a fost primit, dar nu sunt prelucrate, precum și cea a tot ce se comportă predictibil în caz de eșec al computerului pe care rulează.

de detectare a defecțiunilor

Dacă vă pasă de fiabilitate, este important să se monitorizeze durata de funcționare a tuturor elementelor sistemului. Puteți implementa un sistem de monitorizare simplu „batai de inima“ pe toate serverele, asigurându-se că acestea sunt responsabile, și pot complica monitorizarea, verificarea, de exemplu, succesul de a trimite mesaje către serverul de e-mail și succesul răspunsului serverului de fișiere la un anumit fișier.

Este deosebit de important să se ia în considerare solicitările de monitorizare trimise pe Web-servere pentru un sistem de verificare cuprinzător. Nu testați pagina de start pentru a încărca în cazul în care este static, iar restul site-ului dinamic preia informațiile din baza de date. Dacă aveți o aplicație care necesită autentificarea utilizatorului prin intermediul sistemului de administrare a contului corporativ și extrage date din sistemul de planificare a resurselor întreprinderii (ERP), asigurați-vă că scriptul de monitorizare se conectează ca un utilizator de test pe care l-ați adăugat la sistemul ERP, și că datele din sistemul ERP sunt afișate corect într-un răspuns mesaj de web-server. Este important să se utilizeze monitorizarea de trecere de acest tip, în plus față de subsisteme de monitorizare pentru a asigura corectitudinea aplicației.

failover

Unele eșecuri sunt inevitabile, dar de multe ori într-un sistem tolerant la defecte bine conceput, o proporție substanțială a tuturor nefuncționare este rezultatul unor erori în codul aplicației. Nu contează dacă cererea dvs. rulează - în cazul în care unii utilizatori nu pot să o folosească pentru a rezolva problemele lor pentru ei pe site-ul nu funcționează cu adevărat. Prin urmare, pentru a maximiza durata de funcționare a aplicațiilor este important să aibă o strategie de design bun, scris, de testare, și codul de implementarea.

Test de Driven Development

Una dintre cele mai eficiente modalități de a se asigura că cererea este bine conceput și oferă funcționalitatea așteptată, este dezvoltarea prin testare (bazate pe testul de dezvoltare - TDD). Acest proces garantează corectitudinea codului, și îmbunătățește semnificativ flexibilitatea și calitatea designului.

integrarea continuă

Una dintre cele mai importante principii de dezvoltare software prevede: dacă este dat în serios ceva, o fac mai des. În cazul în care testele de integrare este dificil de a efectua lunar le urmeze săptămânal, automatizarea procesului, atâta timp cât este nevoie doar un singur clic pentru a rula teste după fiecare actualizare a codului sursă dezvoltator în controlul versiunilor.

desfășurarea continuă

concluzie

Cine poate fi mai ușor decât a fost vreodată, pentru a construi aplicații robuste folosind infrastructura cloud, dar este important să se analizeze toate punctele de eșec, în scopul de a dezvolta o strategie failover și de a salva datele importante în caz de eșec. De asemenea, este necesar să se ia în considerare posibilitatea de a utiliza abordări, cum ar fi dezvoltarea prin testare, integrare continuă și desfășurare continuă pentru a asigura aplicații de lucru cum era de așteptat. Nu contează dacă serverele se execută, în cazul în care utilizatorii nu pot rezolva problemele din cauza erorilor din codul aplicației.

articole similare