Nexthink se extinde la trilioane de evenimente pe zi cu Amazon MSK | Amazon Web Services

Nexthink se extinde la trilioane de evenimente pe zi cu Amazon MSK | Amazon Web Services

Nodul sursă: 2530223

Streamingul de date în timp real și procesarea evenimentelor prezintă provocări de scalabilitate și management. AWS oferă o selecție largă de gestionate servicii de streaming de date în timp real pentru a rula fără efort aceste sarcini de lucru la orice scară.

În această postare, Nexthink împărtășește cum Streaming gestionat de Amazon pentru Apache Kafka (Amazon MSK) le-a împuternicit să atingă o scară masivă în procesarea evenimentelor. Experimentând o hiper-creștere a afacerii, Nexthink a migrat la AWS pentru a depăși limitările de scalare ale soluțiilor on-premise. Cu Amazon MSK, Nexthink procesează acum fără probleme trilioane de evenimente pe zi, ajungând la peste 5 GB pe secundă de debit agregat.

În secțiunile următoare, Nexthink își prezintă produsul și nevoia de scalabilitate. Apoi, ei evidențiază provocările aplicației lor on-premise vechi și își prezintă tranziția către o arhitectură software ca serviciu (SaaS) centrată pe cloud, susținută de Amazon MSK. În cele din urmă, Nexthink detaliază beneficiile obținute prin adoptarea Amazon MSK.

Nexthink are nevoie de scalare

Nexthink este lider în experiența digitală a angajaților (DeX). Compania modelează viitorul muncii, oferind liderilor IT și nivelurilor C informații despre experiențele tehnologice zilnice ale angajaților la nivel de dispozitiv și aplicație. Acest lucru permite IT-ului să evolueze de la rezolvarea reactivă a problemelor la optimizarea proactivă.

Platforma Nexthink Infinity combină analiza, monitorizarea, automatizarea și multe altele pentru a gestiona experiența digitală a angajaților. Prin colectarea evenimentelor legate de dispozitive și aplicații, procesându-le în timp real și stocându-le, platforma noastră analizează datele pentru a rezolva problemele și pentru a spori experiențele pentru peste 15 milioane de angajați de pe cinci continente.

În doar 3 ani, afacerea Nexthink a crescut de zece ori, iar odată cu introducerea mai multor date în timp real, aplicația noastră a trebuit să se extindă de la procesarea de 200 MB pe secundă la 5 GB pe secundă și trilioane de evenimente zilnic. Pentru a permite această creștere, ne-am modernizat aplicația de la un monolit cu locatar unic la o soluție SaaS scalabilă bazată pe cloud, alimentată de Amazon MSK.

Următoarele secțiuni detaliază călătoria noastră de modernizare, inclusiv provocările cu care ne-am confruntat și beneficiile pe care le-am realizat cu noua noastră arhitectură centrată pe cloud, bazată pe AWS.

Soluția locală și provocările acesteia

Să explorăm mai întâi soluția noastră anterioară, Nexthink V6, înainte de a examina modul în care Amazon MSK și-a abordat provocările. Următoarea diagramă ilustrează arhitectura acestuia.

Nexthink v6

V6 a fost alcătuit din două aplicații Java și C++ monolitice, cu un singur locatar, care erau strâns cuplate. Portalul era o aplicație Java backend-for-frontend, iar motorul de bază era o aplicație internă de bază de date C++ în memorie, care gestiona și conexiunile dispozitivelor, asimilarea datelor, agregarea și interogarea. Prin gruparea tuturor acestor funcții împreună, motorul a devenit dificil de gestionat și îmbunătățit.

De asemenea, V6 nu avea scalabilitate. Sprijinind inițial 10,000 de dispozitive, unii noi chiriași aveau peste 300,000 de dispozitive. Am reacționat prin implementarea mai multor motoare V6 pentru fiecare chiriaș, crescând complexitatea și costurile, împiedicând experiența utilizatorului și întârziind timpul de lansare pe piață. Acest lucru a dus, de asemenea, la cicluri mai lungi de demonstrare a conceptului și de onboarding, care au afectat afacerea.

În plus, absența unei platforme de streaming precum Kafka a creat dependențe între echipe prin cuplarea strânsă HTTP/gRPC. În plus, echipele nu au putut accesa evenimente în timp real înainte de a fi introduse în baza de date, limitând dezvoltarea caracteristicilor. De asemenea, ne lipsea un buffer de date, riscând pierderea potențială a datelor în timpul întreruperilor. Astfel de constrângeri au împiedicat inovarea și au crescut riscurile.

Pe scurt, deși sistemul V6 și-a îndeplinit scopul inițial, reinventarea acestuia cu tehnologii centrate pe cloud a devenit imperativă pentru a îmbunătăți scalabilitatea, fiabilitatea și pentru a stimula inovația de către echipele noastre de inginerie și de produs.

Trecerea la o arhitectură centrată pe cloud cu Amazon MSK

Pentru a ne atinge obiectivele de modernizare, după cercetări și iterații amănunțite, am implementat un design de microservicii bazat pe evenimente pe Serviciul Amazon Elastic Kubernetes (Amazon EKS), folosind Kafka pe Amazon MSK pentru stocarea și streamingul de evenimente distribuite.

Tranziția noastră de la soluția on-prem v6 la platforma centrată pe cloud a fost treptată în patru iterații:

  • Faza 1 – Am trecut și am trecut de la mașini on-premise la mașini virtuale în cloud, reducând complexitățile operaționale și accelerând ciclurile de verificare a conceptului în timp ce migrăm în mod transparent clienții.
  • Faza 2 – Am extins arhitectura cloud prin implementarea de noi funcții de produs cu microservicii și Kafka autogestionat pe Kubernetes. Cu toate acestea, operarea clusterelor Kafka s-a dovedit prea dificilă, conducându-ne la Faza 3.
  • Faza 3 – Am trecut de la Kafka autogestionat la Amazon MSK, îmbunătățind stabilitatea și reducând costurile operaționale. Ne-am dat seama că gestionarea Kafka nu era competența noastră de bază sau diferențierea, iar cheltuielile generale erau mari. Amazon MSK ne-a permis să ne concentrăm asupra aplicației noastre de bază, eliberându-ne de povara managementului Kafka nediferențiat.
  • Faza 4 – În cele din urmă, am eliminat toate componentele vechi, finalizând tranziția către o platformă SaaS centrată complet pe cloud. Această călătorie de mai mulți ani de învățare și transformare a durat 3 ani.

Astăzi, după tranziția noastră de succes, folosim Amazon MSK pentru două funcții cheie:

  • Ingerarea și procesarea de date în timp real a trilioane de evenimente zilnice de la peste 15 milioane de dispozitive din întreaga lume, așa cum este ilustrat în figura următoare.

Nexthink Architecture Ingestion

  • Activarea unui sistem bazat pe evenimente care decuplează producătorii de date și consumatorii, așa cum este prezentat în figura următoare.

Arhitectura Nexthink, bazată pe evenimente

Pentru a ne spori scalabilitatea și rezistența, am adoptat a arhitectura bazata pe celule folosind disponibilitatea largă a Amazon MSK în regiunile AWS. În prezent, operam peste 10 celule, fiecare reprezentând o implementare regională independentă a soluției noastre SaaS. Această abordare bazată pe celule minimizează aria de impact în caz de probleme, abordează cerințele de rezidență a datelor și permite scalarea orizontală în regiunile AWS, așa cum este ilustrat în figura următoare.

Nexthink Architecture Cells

Beneficiile Amazon MSK

Amazon MSK a fost esențial în a permite designul nostru bazat pe evenimente. În această secțiune, prezentăm principalele beneficii pe care le-am câștigat în urma adoptării sale.

Reziliență îmbunătățită a datelor

În noua noastră arhitectură, datele de pe dispozitive sunt transmise direct la subiectele Kafka din Amazon MSK, care oferă disponibilitate și rezistență ridicate. Acest lucru vă asigură că evenimentele pot fi primite și stocate în siguranță în orice moment. Serviciile noastre care consumă aceste date moștenesc aceeași rezistență de la Amazon MSK. Dacă serviciile noastre de asimilare backend se confruntă cu întreruperi, niciun eveniment nu se pierde, deoarece Kafka păstrează toate mesajele publicate. Când serviciile noastre se reiau, ele continuă fără probleme procesarea de unde au rămas, datorită semanticii producătorilor Kafka, care permite procesarea mesajelor exact o dată, cel puțin o dată sau cel mult o dată în funcție de nevoile aplicației.

Amazon MSK ne permite să adaptăm durata de păstrare a datelor la cerințele noastre specifice, variind de la secunde la durată nelimitată. Această flexibilitate asigură disponibilitatea neîntreruptă a datelor aplicației noastre, ceea ce nu era posibil cu arhitectura noastră anterioară. În plus, pentru a proteja integritatea datelor în cazul unor erori de procesare sau corupție, Kafka ne-a permis să implementăm un mecanism de redare a datelor, asigurând consistența și fiabilitatea datelor.

Scalare organizațională

Prin adoptarea unei arhitecturi bazate pe evenimente cu Amazon MSK, am descompus aplicația noastră monolitică în microservicii cuplate, fără stat, care comunică asincron prin subiectele Kafka. Această abordare a permis organizației noastre de inginerie să se extindă rapid de la doar 4-5 echipe în 2019 la peste 40 de echipe și aproximativ 350 de ingineri în prezent.

Cuplarea slabă dintre editorii de evenimente și abonați a împuternicit echipele să se concentreze pe domenii distincte, cum ar fi asimilarea de date, serviciile de identificare și lacurile de date. Echipele ar putea dezvolta soluții în mod independent în domeniile lor, comunicând prin subiecte Kafka fără o cuplare strânsă. Această arhitectură a accelerat dezvoltarea caracteristicilor reducând la minimum riscul ca noile caracteristici să le afecteze pe cele existente. Echipele ar putea consuma eficient evenimentele publicate de alții, oferind noi capabilități mai rapid, reducând în același timp dependențele între echipe.

Următoarea figură ilustrează fluxul de lucru fără întreruperi de adăugare de noi domenii la sistemul nostru.

Adăugarea de domenii

În plus, proiectarea bazată pe evenimente a permis echipelor să construiască servicii fără stat care ar putea scala automat fără întreruperi pe baza valorilor MSK, cum ar fi mesajele pe secundă. Această scalabilitate bazată pe evenimente a eliminat nevoia de planificare extinsă a capacității și eforturi de scalare manuală, eliberând timp de dezvoltare.

Folosind o arhitectură de microservicii bazată pe evenimente pe Amazon MSK, am obținut agilitate organizațională, scalabilitate îmbunătățită și inovație accelerată, minimizând în același timp cheltuielile operaționale.

Scalare fără întreruperi a infrastructurii

Afacerea Nexthink a crescut de zece ori în 3 ani, iar la produs au fost adăugate multe capacități noi, ceea ce a dus la o creștere substanțială a traficului de la 200 MB pe secundă la 5 GB pe secundă. Această creștere exponențială a datelor a fost posibilă de scalabilitatea robustă a Amazon MSK. Atingerea unei astfel de dimensiuni cu o soluție on-premise ar fi fost o provocare și costisitoare, dacă nu chiar imposibilă.

Încercarea de a auto-administra Kafka a impus cheltuieli operaționale inutile fără a oferi valoare pentru afaceri. Rularea acestuia cu doar 5% din traficul actual era deja complexă și necesita doi ingineri. La volumele actuale, am estimat că avem nevoie de 6-10 angajați dedicati, creșterea costurilor și deturnarea resurselor de la prioritățile de bază.

Capabilitati in timp real

Prin canalizarea tuturor datelor noastre prin Amazon MSK, am permis procesarea în timp real a evenimentelor. Acest lucru a deblocat capabilități precum alerte în timp real, declanșatoare bazate pe evenimente și webhook-uri care anterior nu erau atinse. Ca atare, Amazon MSK a jucat un rol esențial în facilitarea arhitecturii noastre bazate pe evenimente și în promovarea inovațiilor de impact.

Acces securizat la date

Trecând la noua noastră arhitectură, ne-am îndeplinit obiectivele de securitate și integritate a datelor. Cu ACL-urile Kafka, am aplicat controale stricte de acces, permițând consumatorilor și producătorilor să interacționeze numai cu subiecte autorizate. Am bazat aceste controale granulare de acces la date pe criterii precum tipul de date, domeniul și echipa.

Pentru a scala în siguranță gestionarea descentralizată a subiectelor, am introdus proprietarul Definiții personalizate de resurse (CRD) Kubernetes. Aceste CRD-uri au permis echipelor să-și gestioneze în mod independent propriile subiecte, setări și ACL-uri fără a compromite securitatea.

Criptare Amazon MSK sa asigurat că datele rămân criptate în repaus și în tranzit. De asemenea, am introdus o opțiune Bring Your Own Key (BYOK), care permite criptarea la nivel de aplicație cu chei de client pentru toate subiectele cu un singur chiriaș și cu mai mulți chiriași.

Observabilitate îmbunătățită

Amazon MSK ne-a oferit o vizibilitate deosebită asupra fluxurilor noastre de date. Ieșit din cutie Amazon CloudWatch metrics să vedem cantitatea și tipurile de date care curg prin fiecare subiect și grup. Acest lucru ne-a ajutat să cuantificăm utilizarea caracteristicilor produsului nostru prin urmărirea volumelor de date la nivel de subiect. Valorile operaționale Amazon MSK au permis monitorizarea fără efort și dimensionarea corectă a clusterelor și a brokerilor. În general, observabilitatea bogată a Amazon MSK a facilitat deciziile bazate pe date cu privire la arhitectură și caracteristicile produsului.

Concluzie

Călătoria Nexthink de la un monolit local la un cloud SaaS a fost simplificată prin utilizarea Amazon MSK, un serviciu Kafka complet gestionat. Amazon MSK ne-a permis să creștem fără probleme, beneficiind în același timp de fiabilitate și securitate de nivel enterprise. Prin transferarea managementului Kafka la AWS, ne-am putea concentra pe activitatea noastră de bază și am putea inova mai repede.

În viitor, intenționăm să îmbunătățim în continuare performanța, costurile și scalabilitatea prin adoptarea de capabilități Amazon MSK, cum ar fi stocare pe niveluri și Tipuri de instanță EC2 bazate pe AWS Graviton.

De asemenea, lucrăm îndeaproape cu echipa Amazon MSK pentru a ne pregăti pentru viitoarele funcții de serviciu. Adoptarea rapidă a noilor capabilități ne va ajuta să rămânem în fruntea inovației, în timp ce continuăm să ne dezvoltăm afacerea.

Pentru a afla mai multe despre modul în care Nexthink utilizează AWS pentru a-și deservi baza globală de clienți, explorați Gândește-te la studiul de caz AWS. În plus, descoperiți alte povești de succes ale clienților cu Amazon MSK vizitând site-ul Categoria blogului Amazon MSK.


Despre Autori

Moe HaidarMoe Haidar este inginer principal și conduce proiecte speciale la biroul CTO al Nexthink. El este implicat în AWS din 2018 și este un contributor cheie la transformarea cloud a platformei Nexthink în AWS. Accentul său se pune pe incubarea și arhitectura produselor și tehnologiei, dar îi place, de asemenea, să facă activități practice pentru a-și menține cunoștințele de tehnologii clare și actualizate. El încă contribuie foarte mult la baza de cod și îi place să abordeze probleme complexe.
Simone PomataSimone Pomata este arhitect senior de soluții la AWS. El a lucrat cu entuziasm în industria tehnologiei de mai bine de 10 ani. La AWS, el îi ajută pe clienți să reușească să construiască noi tehnologii în fiecare zi.
Magdalena GargasMagdalena Gargas este un arhitect de soluții pasionat de tehnologie și de rezolvarea provocărilor clienților. La AWS, ea lucrează în principal cu companii de software, ajutându-le să inoveze în cloud. Ea participă la evenimente din industrie, împărtășind perspective și contribuind la avansarea domeniului containerizării.

Timestamp-ul:

Mai mult de la AWS Big Data