Cum se extinde infrastructura noastră alături de clienții noștri
Publicat: 2022-06-03Ne gândim serios să oferim cea mai bună experiență pentru clienți cu sistemul nostru de operare Engagement. Avem ambiții cu adevărat globale de a aduce misiunea noastră de a face afacerile pe internet personale celor mai mari clienți din întreaga lume.
Această ambiție se reflectă în modul în care proiectăm și construim infrastructura care susține platforma Intercom. Construim pe termen lung – asta înseamnă să asigurăm fiabilitatea în mod implicit și capacitatea de a ne adapta la scară masivă pe măsură ce creștem.
Interfonul a crescut și va continua să o facă – mulți dintre clienții noștri cei mai vechi au evoluat cu noi de-a lungul anilor. Pe măsură ce acești clienți existenți au crescut și am întâmpinat clienți din ce în ce mai mari, ne-am concentrat întotdeauna pe a spune da la scară.
Aceasta este a treia postare dintr-o serie care explorează modalitățile prin care Intercom a scalat funcțiile cheie pentru a sprijini nevoile clienților întreprinderi.
Creștem alături de clienții noștri
- Doriți să serviți mai multe milioane de utilizatori activi. Intercomul poate face asta?
- Trebuie să stocați mai multe milioane de înregistrări ale utilizatorilor. Intercomul poate face asta?
- Aveți multe mii de agenți activi pe care doriți să acționați în spațiul dvs. de lucru. Poate Intercom să se ocupe de asta?
Da la toate cele de mai sus.
Astăzi, sistemele noastre se scalează dinamic pentru a servi aproximativ 50.000 de solicitări web pe secundă la vârf, 26.000 de joburi de fundal pe secundă și 11.000 de solicitări API publice pe secundă – demonstrând capacitatea noastră de a ne scala continuu pentru a satisface cerințele întreprinderilor moderne.
Dorim să vă potrivim ambițiile. Aceasta înseamnă să fim capabili să suportăm sarcini uriașe de lucru într-o manieră fiabilă și performantă și să le extindem continuu pe măsură ce clienții noștri cresc împreună cu noi. Dorim să colaborăm cu adevărat cu clienții noștri pentru a ne asigura că le rezolvăm problemele, la scară, pe termen lung.
La Intercom, ne propunem să rulăm mai puțin software
Construim exclusiv pe un set foarte mic de tehnologii de bază. Acest lucru ne permite să dezvoltăm echipe de experți în domeniu care să sprijine și să permită inginerilor de produs în timp ce construiesc următoarea generație de Intercom și oferă instrumente de observabilitate de clasă mondială, scalare, fiabilitate și modele de construcție securizate implicit.
Instrumentele noastre permit o disponibilitate ridicată
Lucrăm exclusiv cu AWS ca furnizor de servicii cloud și oferim în prezent oferte de găzduire a datelor în trei regiuni globale diferite – SUA, UE și Australia – fiecare proiectată în mai multe zone de disponibilitate pentru o disponibilitate ridicată.
Aplicația noastră pentru coechipieri este o interfață Ember.js susținută de un monolit Ruby on Rails . Aplicația Rails este nucleul Intercom și ceea ce implementăm pentru mii de lucrători web, API și asincron pe clustere dedicate per funcție.
„În fiecare an, de Vinerea Neagră, deoarece mulți dintre clienții noștri au ajuns în perioada cea mai aglomerată, infrastructura noastră se adaptează fără intervenție umană”
Aceste clustere se extind automat pentru a satisface cererile clienților pe măsură ce trecem prin vârfurile și minimele traficului clienților în fiecare zi. De exemplu, în fiecare an de Vinerea Neagră, deoarece mulți dintre clienții noștri ajung în perioada cea mai aglomerată, infrastructura noastră se adaptează fără intervenție umană.
Instrumentele noastre de observabilitate ne permit să monitorizăm îndeaproape modul în care deservim traficul
Instrumentele noastre de observabilitate ne asigură că avem degetul pe puls cu cât de eficient și eficient deservim traficul pe bază de client. De asemenea, colaborăm îndeaproape cu AWS în ceea ce privește noile tehnologii și abordări concepute pentru a demonstra creșterea noastră rapidă în viitor.
Pe lângă valorile și înregistrarea standard, monolitul nostru Rails este auto-instrumentat cu urme de înaltă calitate, bogate în atribute. Acest lucru le permite inginerilor să observe producția fără a fi nevoie să scrie vreun cod suplimentar.
Conducta noastră de observabilitate se bazează pe rafinăria Honeycomb și eșantionează în mod dinamic cererile valoroase pentru a păstra urme interesante (de exemplu, o eroare la client) în mod implicit. Avem, de asemenea, capacitatea de a configura reguli personalizate pentru controlul complet al eșantionării.
„Susținem reținerea 100% pentru a oferi inginerilor toate datele de care au nevoie pe măsură ce dezvoltăm noi funcții sau depanăm problemele de producție”
În mod esențial, pentru cele mai valoroase tranzacții, acceptăm reținerea 100% pentru a oferi inginerilor toate datele de care au nevoie pe măsură ce dezvoltăm noi funcții sau depanăm problemele de producție. În plus, pe măsură ce etichetăm toate urmele cu ID-ul de client al celui care inițiază cererea, putem analiza în profunzime modul în care oricare dintre clienții noștri se confruntă cu interfonul.
Diferitele depozite de date permit optimizarea în diferite cazuri de utilizare
Rulăm mai multe tipuri diferite de depozit de date pentru a sprijini diferitele noastre cerințe de citire și scriere a datelor în aplicații:
- AWS Aurora MySQL : sursa noastră de depozite de date adevărate sunt construite în mare parte pe AWS Aurora MySQL. Ca parte a scalarii noastre inițiale, am împărțit bazele de date după funcție. Odată ce clusterele de baze de date individuale au crescut la cele mai mari instanțe oferite de AWS Aurora, am lansat un program pentru a construi baze de date pe client care rezidă pe mai multe clustere de clustere de baze de date mai mici, pe care acum le putem scala atât pe orizontală, cât și pe verticală. Această lucrare a fost finalizată la începutul anului 2020 , iar arhitectura ne permite să ne mărim cele mai mari mese pe termen nelimitat.
- Elasticache : În fața bazelor noastre de date avem un strat de cache memcache construit pe Elasticache.
- DynamoDB : Folosim DynamoDB cu moderație pentru cazuri de utilizare foarte ridicate de citire și scriere .
Căutarea este o parte indispensabilă a interfonului
Căutarea se bazează pe o serie întreagă de funcții de bază ale interfonului – Vizualizări în Inbox , API , Articole , lista de utilizatori, Outbound , Raportare , Resolution Bot și sistemele noastre interne de înregistrare.
Căutarea este alimentată în mare măsură de multe clustere Elasticsearch per-funcție. Am creat multe instrumente care automatizează cele mai laborioase sarcini ale Elasticsearch, inclusiv corecțiile de securitate, actualizarea și înlocuirea hardware-ului degradat. Am construit, de asemenea, instrumente care ne permit să rulăm migrații (într-un mod similar cu MySQL) împotriva indicilor.
„Infrastructura noastră globală este concepută pentru a deservi sute de mii de companii, mari și mici”
Pe lângă îmbunătățirea capacității inginerilor noștri de a repeta schema de indici la scară, ne permite să descompunem indici mari în indici mai mici, care sunt mai ușor de gestionat și oferă o performanță și o stabilitate mai ridicate. De asemenea, ne oferă o dimensiune suplimentară în care ne putem scala clusterele Elasticsearch. La fel ca abordarea noastră MySQL sharding, aceasta ne oferă mulți ani de scalare a pistei.
Infrastructura globală a Intercomului este construită la scară internet
Infrastructura noastră globală este concepută pentru a deservi sute de mii de companii, mari și mici, iar rigoarea pe care o aplicăm în gestionarea operațiunilor noastre de infrastructură asigură ca lucrurile să funcționeze fără probleme.
La elaborarea foii de parcurs, scalarea este o intrare cheie pe care o ia în considerare fiecare echipă. Evaluările noastre operaționale regulate sunt contribuite de experți de la mai multe niveluri din cadrul echipelor noastre de backend, unde evaluăm valorile infrastructurii și examinăm cerințele de capacitate.
Muncim din greu și inteligent pentru a rămâne așa, și de aceea clienții noștri au încredere în noi – de la cele mai mici startup-uri până la cele mai mari întreprinderi din lume.
Descoperiți alte postări din seria Intercom for Enterprise