Uber Tech Stack și arhitectură software – Cum a fost construit Uber?
Publicat: 2022-01-17Uber a devenit un nume cunoscut. Platforma incredibilă permite utilizatorilor să rezerve serviciul de taxi în doar patru pași simpli. Aplicația Uber garantează servicii rapide, precum și confort optim, nu e de mirare că a explodat în popularitate.
Știați că Uber are 98 de milioane de utilizatori activi lunar? De asemenea, compania a generat venituri de 11,1 miliarde de dolari în 2020? Uber a dat un exemplu clasic pentru startup-uri și serviciile de taxi existente. Fiecare organizație își propune să reproducă succesul Uber, oferind servicii de taxi rapid și convenabile.
Dacă și tu ești uimit de succesul imens al Uber, acest articol este pentru tine. Aici, vom discuta despre stiva tehnologică Uber și despre arhitectura software, iar acest lucru vă va oferi o mai bună înțelegere a platformei și vă va ajuta să vă construiți aplicația de servicii de taxi de la zero. Asadar, haideti sa începem.
Cum creez o aplicație în timp real ca Uber?
Pentru a crea o aplicație în timp real precum Uber, trebuie mai întâi să înțelegeți diferitele componente ale acesteia, care sunt după cum urmează:
Aplicația pentru pasageri
Dacă ați mai folosit aplicația Uber, vă veți identifica cu ușurință cu funcționalitatea aplicației pentru pasageri. Această componentă a aplicației are toate caracteristicile de care utilizatorii au nevoie pentru a rezerva un taxi, cum ar fi alegerea cursei, calculatorul de tarif, plățile online, urmărirea GPS etc.
Aplicația pentru șofer
Aplicația șoferului este folosită de șoferii de taxi care afișează cereri noi de taxi de la pasageri. Folosind acest panou, șoferii pot fie să accepte, fie să refuze cererile de călătorie și să verifice locația exactă a pasagerului folosind harta încorporată.
Piața
Piața conectează cele două aplicații - aplicația pentru pasageri și aplicația pentru șofer. Îndeplinește cele mai complicate sarcini care implică potrivirea pasagerilor cu șoferii și gestionarea plăților.
Deci, dacă doriți să creați o aplicație precum Uber, veți avea nevoie de trei panouri diferite. Primul panou va permite pasagerilor să rezerve un taxi, iar al doilea panou va permite șoferilor să accepte cererile de călătorie. Și, în sfârșit, un al treilea panel va primi solicitări de la primele două și va gestiona toate operațiunile online.
Cum să construiești următorul Uber?
Uber este un serviciu de taxiuri de mare succes, care oferă confort maxim pasagerilor. Dezvoltarea unei aplicații precum Uber poate implica o sumă semnificativă de bani și o echipă competentă de dezvoltare a aplicațiilor.
În afară de asta, mai sunt câteva lucruri de luat în considerare în timpul dezvoltării unei aplicații precum Uber.
Verificați concurenții dvs.
Este o idee grozavă să căutați aplicații care încearcă în prezent să rezolve aceeași problemă pe care doriți să o rezolvați cu aplicația dvs. Privirea acestor aplicații vă va ajuta să vă faceți o idee despre caracteristicile, funcționalitățile lor, precum și despre publicul țintă.
În plus, o privire amănunțită asupra peisajului competitiv vă va ajuta să înțelegeți cum funcționează concurenții dvs. De exemplu, verificarea rețelelor lor sociale vă va permite să adunați informații despre strategia lor de marketing, evoluția produsului și evaluările de satisfacție a clienților. Toate acestea vă vor ajuta să lansați o aplicație de succes.
Cunoaște-ți potențialii utilizatori
Înainte de a trece la dezvoltarea aplicației, trebuie să știți cine vă va folosi aplicația. Numai dacă vă cunoașteți publicul țintă, veți putea comunica corect cu acesta.
Puteți aduna toate datele demografice ale utilizatorilor potențiali, cum ar fi vârsta, locația, sexul, comportamentele, preferințele etc. După ce ați terminat, puteți discuta despre ideea aplicației dvs. cu acele persoane la care apreciați foarte mult.
Rămâi concentrat pe experiența utilizatorului.
Experiența utilizatorului este unul dintre aspectele cheie ale unei aplicații de succes. Oamenii doresc să folosească aplicații care oferă o interfață de utilizare și UX simplă, dar intuitivă. O interfață de utilizare uimitoare oferă o experiență de navigare perfectă, iar un UX intuitiv asigură ușurința în utilizare.
Oferirea unei experiențe bune pentru utilizator duce la o mai bună achiziție de utilizatori și la descărcări mai mari.
Testează cu un MVP
Un produs minim viabil (MVP) este prima versiune de bază a produsului care acceptă caracteristici minime, dar cruciale. Crearea unui MVP înainte de a dezvolta o aplicație cu drepturi depline este recomandabilă, deoarece permite un timp mai rapid de lansare pe piață, atrage utilizatorii timpurii și realizează o potrivire a produsului-piață încă de la început.
Odată ce MVP este eliberat utilizatorilor, se obține feedback-ul inițial al acestora. Pe baza acestui feedback, puteți să reiterați, să remediați erori și să introduceți noi funcții care vă vor oferi produsului un avantaj competitiv.
Cum funcționează tehnic aplicația Uber?

Aplicația Uber procesează o cantitate mare de date utilizând platformele ML și de analiză a datelor care sunt dezvoltate intern. Când un pasager solicită un taxi, sunt generate o mulțime de date. De exemplu, aplicația primește date despre pasager, locația acestuia, informații despre cardul de credit, costul călătoriei, șoferii de taxi din apropiere etc. Și treptat, toate aceste informații circulă în întregul sistem. Să vedem cum.
Odată ce se solicită o plimbare, platforma:
- Salvează toate informațiile despre călătorie în baza de date
- Procesează cererea de călătorie cu geolocalizarea pasagerului
- Trimite toate datele procesate către algoritmul de potrivire alimentat de ML
- Caută informații despre șoferii prezenți în apropiere în baza de date

Cerințe pentru proiecte asemănătoare Uber
Uber a fost lansat în 2009, iar pentru cea mai lungă perioadă de timp, platforma a avut un backend cu o arhitectură monolitică. Cu alte cuvinte, aplicația a folosit o singură bază de date împreună cu mai multe servere de aplicații pentru a gestiona toate solicitările online.
Pentru perioada inițială, aceasta a funcționat foarte bine. Cu toate acestea, pe măsură ce platforma a crescut, a crescut și nevoia de noi funcții. Și pentru a integra funcții noi, echipa de dezvoltare a trebuit să implementeze tot codul simultan. Acest lucru a afectat viteza aplicației și a făcut ca procesul de introducere a noilor funcții să fie extrem de riscant și consumator de timp. Acest lucru se datorează faptului că fiecare integrare ar putea să distrugă întregul sistem. Acest lucru a dus la adoptarea arhitecturii de microservicii.
Microservicii

În 2014, Uber a adoptat arhitectura de microservicii pentru a asigura viteză și performanță mai bune. În esență, această arhitectură include un grup de servicii care vizează funcționalitatea celuilalt. Astfel, echipa de dezvoltare poate implementa cu ușurință noul cod independent cu arhitectura de microservicii, asigurând scalarea completă a sistemului.
DOMA (Arhitectură de sistem orientată pe domenii)
Deși arhitectura de microservicii a fost o actualizare uriașă a arhitecturii monolitice, echipa de dezvoltare de la Uber nu s-a oprit aici. Ei au adoptat o nouă abordare numită DOMA – Arhitectură de sistem orientată pe domeniu cu timpul.
Conform acestei abordări, dezvoltatorii își orientează designul în jurul colecțiilor de microservicii conexe. Și aceste colecții se numesc domenii. În plus, domeniile sunt, de asemenea, clasificate în diferite colecții numite straturi. Stratul specific căruia îi aparține fiecare domeniu stabilește ce dependențe pot prelua microserviciile din acel domeniu. Aceasta se numește design de strat.
Dezvoltatorii fac apoi fiecare domeniu independent de celelalte utilizând API-ul Gateway. Astfel, fiecare domeniu are propria sa logică și nu are legătură cu celelalte domenii din același strat.

Cu cuvinte simple, oferind o arhitectură organizată, puncte de extensie predefinite și gateway-uri de domeniu, DOMA transformă arhitectura microserviciilor din ceva complicat în ceva ușor de înțeles.

Ce cadru UI folosește Uber?
Echipa de proiectare a Uber se concentrează pe actualizarea constantă a designului aplicației prin adăugarea de noi funcții. Cu toate acestea, acesta este un proces care necesită timp. Deci, pentru a eficientiza eforturile echipei de proiectare, au creat un cadru React UI numit Base.

Baza include elemente pre-proiectate ale aplicației Uber, cum ar fi culori, grile, tipografie, liste, butoane și iconografie. Cadrul a permis echipei de proiectare să creeze design-uri într-un ritm mai rapid, menținând în același timp standarde ridicate de UI/UX și coerență.
Care este tehnologia din spatele aplicației de livrare de alimente Uber?
În 2014, backend-ul Uber includea limbi precum Python, Mongo și MySQL. Pe de altă parte, sistemul de expediere a folosit Node.js și Redis, în timp ce aplicațiile mobile erau alimentate de Java și Objective-C. Cu toate acestea, pe măsură ce cerințele au evoluat, dezvoltatorii au schimbat aproape toate componentele platformei.
Stack de tehnologii de piață
Piața Uber este un aspect important care gestionează toate fluxurile de date și analiza datelor. Și tehnologia folosită pentru construirea acestei piețe include limbaje precum Python, Go, Java și Node. Acum, să aruncăm o privire la această stivă de tehnologii de pe piață în detaliu:
Motorul de execuție a călătoriei
Deoarece motorul de execuție a călătoriei este o parte integrantă a pieței, a fost scris inițial în Node.js, care a fost preferat pentru procesarea sa asincronă, simplă și cu un singur thread. Node.js a permis, de asemenea, echipei Uber să gestioneze cantități mari de conexiuni simultane. Cu toate acestea, acum, compania creează noi servicii în Go, care este cunoscut pentru eficiența, concurența și operațiunile de tip sigur.
API-ul din prima linie
API-ul de primă linie direcționează solicitările de la dispozitivele mobile ale șoferului și pasagerilor către alte API-uri și servicii. Acesta este scris în Node.js, cu excepția marginii. Utilizează NGINX pentru front-end și efectuează terminarea SSL și o anumită autentificare.
Conexiune în timp real
Pentru a susține fără probleme cele mai înalte cerințe de disponibilitate, stiva pieței trebuie să primească informații în timp real. Astfel, dezvoltatorii folosesc Ringpop, o bibliotecă pentru ridicarea sistemelor distribuite în cooperare. Datorită acestei biblioteci, dezvoltatorii obțin o conexiune foarte disponibilă cu baze de date distribuite, cum ar fi Riak și DynamoDB.
Logica de potrivire
Algoritmul de potrivire, adică sistemul care gestionează alertele de la șoferi și motocicliști în timp real și apoi le potrivește, sunt scrise în Go și Node.js. Riak este baza lor de date distribuită, în timp ce Redis oferă stocarea în cache.
Optimizare dinamică a prețurilor
Echipa de piață de la Uber gestionează optimizarea și echilibrul prin stabilirea prețurilor dinamice, potrivirea inteligentă și poziționarea ofertei. Anterior, majoritatea părților acestei stive au fost construite folosind Python cu Flask și uWSGI. Cu toate acestea, acum, dezvoltatorii înlocuiesc majoritatea Python-ului cu Go pentru a obține performanțe mai mari.
Streaming de date și învățare automată
Uber folosește Kafka și propriile baze de date de producție pentru streaming de date. Și stocarea datelor depinde de serviciile web Hive, HDFS, Elasticsearch, MapReduce și de stocare a fișierelor. De asemenea, compania și-a dezvoltat propriul LIDAR care asigură partajarea internă. LIDAR rulează Jupyter, JupyterHub, integrat cu Apache Spark și propria platformă de date.
Mergând mai departe, este de remarcat că Uber are propria sa platformă ML. În 2015, compania a decis să extindă ML pentru a standardiza instrumentele și fluxurile de lucru și pentru a evita anti-modelele ML. În consecință, au dezvoltat Michelangelo în 2017.
Michelangelo este o platformă bazată pe inteligență artificială și ML, care ajută la gestionarea datelor, la evaluarea și implementarea modelelor, realizarea de prognoze de tendințe și monitorizarea prognozei. Platforma ML cuprinde o combinație de sisteme open source și componente interne, cum ar fi:
- HDFS
- Samza
- Scânteie
- MLLib
- TensorFlow
- Cassandra
- XGBoost

Tehnologii de stivă ale unei aplicații web
Pentru aplicația bazată pe web, dezvoltatorii Uber folosesc Node.js, o platformă open-source cu o comunitate imensă de ingineri web. Node.js le permite dezvoltatorilor să partajeze cod JavaScript între server și client pentru a crea aplicații web universale. În cele din urmă, folosesc Browserify pentru toate pachetele de pe partea clientului, așa cum vine cu Node. cerințele modulelor bazate pe js.
Serverul web al Uber numit Bedrock este construit pe Express.js, un cadru web popular care oferă securitate și internalizare completă. Stratul lor de comunicare de servicii interne, cunoscut sub numele de Atreyu, gestionează toate comunicațiile cu serviciile de backend, precum și se integrează cu Bedrock. Acest nivel de comunicare permite, de asemenea, companiei să facă cereri către API-urile de serviciu SOA cu ușurință și rapiditate.
Uber folosește Flux și React.js standard pentru redarea aplicațiilor și gestionarea stării. Sistemul de compilare, Core Tasks, este un grup predefinit de scripturi pentru compilarea și versiunea activelor frontend care sunt construite pe Gulp.js.
Stack tehnologii ale unei aplicații mobile
Pentru a dezvolta o aplicație precum Uber, trebuie să creați patru aplicații mobile diferite: Android pasager, Android driver, iOS Passager și iOS driver. Dezvoltatorii creează aplicații IOS folosind limbajul de programare Objective-C și Swift, în timp ce aplicația Android este dezvoltată folosind Java. Dar în afară de acestea, există puține alte tehnologii folosite de dezvoltatori. Acestea includ:
Stack de tehnologie pentru aplicații Android
- Gradle
- OkHttp/Gson/Retrofit
- Cuțit pentru unt
- Pumnal
- Espresso
- Picasso
- RxJava
- Cherestea
Stiva tehnologică a aplicației iOS
- Dolar
- Zidărie/ SnapKit
- KSCrash
- OCMock
Ce limbaje de programare pot folosi pentru a crea o aplicație de livrare de alimente precum Uber?
Dacă doriți să dezvoltați o aplicație precum Uber, puteți opta pentru integrarea următoarelor tehnologii:
- Node.js – pentru aplicația web Marketplace
- Python – pentru aplicația de rezervare bazată pe web
- Go- pentru performanță și viteză îmbunătățite
- Browserify – pentru gruparea pe partea clientului
- Java – pentru integrări de servicii terță parte
- Depozitul de date Apache Hive – pentru analiză și interogare de date
- ELk – pentru stocarea jurnalelor, procesare și expediere
- Apache Cassandra – pentru gestionarea unor volume uriașe de date
- MySQL Database Service - pentru gestionarea bazelor de date relaționale
- Docker – pentru infrastructura centrelor de date
- HAProxy – pentru server proxy și echilibrator de încărcare
Aceasta este o scurtă prezentare a stivei de tehnologie a Uber. Cu toate acestea, simpla copiere a acestei stive de tehnologie fără a-ți face propria cercetare poate fi dăunătoare modelului tău de afaceri. De asemenea, aplicarea acelorași tehnologii nu va garanta succesul afacerii dvs. de transport cu taxiul.
Prin urmare, este recomandabil să vă construiți aplicația cu cât mai puține tehnologii posibil. Treptat, pe măsură ce afacerea dvs. se extinde, puteți continua să adăugați funcții mai noi utilizând tehnologii mai noi. Pentru a începe, trebuie să utilizați doar stiva de tehnologie a Uber ca sursă de inspirație.
