Uber Tech Stack & Softwarearchitektur – Wie wurde Uber gebaut?
Veröffentlicht: 2022-01-17Uber ist ein bekannter Name geworden. Die unglaubliche Plattform ermöglicht es Benutzern, den Taxiservice in nur vier einfachen Schritten zu buchen. Die Uber-App garantiert schnellen Service sowie optimalen Komfort, kein Wunder, dass ihre Popularität explodiert ist.
Wussten Sie, dass Uber monatlich 98 Millionen aktive Nutzer hat? Außerdem hat das Unternehmen im Jahr 2020 einen Umsatz von 11,1 Milliarden US-Dollar erwirtschaftet? Uber hat ein klassisches Beispiel für Startups und bestehende Taxidienste gesetzt. Jedes Unternehmen strebt danach, den Erfolg von Uber zu wiederholen, indem es schnelle und bequeme Taxi-Rufdienste anbietet.
Wenn Sie auch vom immensen Erfolg von Uber beeindruckt sind, ist dieser Artikel genau das Richtige für Sie. Hier werden wir den Tech-Stack und die Softwarearchitektur von Uber besprechen, was Ihnen ein besseres Verständnis der Plattform vermitteln und Ihnen helfen wird, Ihre Taxidienst-App von Grund auf neu zu erstellen. Also lasst uns anfangen.
Wie erstelle ich eine Echtzeit-App wie Uber?
Um eine Echtzeit-App wie Uber zu erstellen, müssen Sie zunächst die verschiedenen Komponenten davon verstehen, die wie folgt sind:
Fahrgast-App
Wenn Sie die Uber App schon einmal verwendet haben, werden Sie sich leicht mit der Funktionalität der Fahrgast-App identifizieren. Diese Komponente der App verfügt über alle Funktionen, die die Benutzer zum Buchen eines Taxis benötigen, z. B. Auswahl der Fahrt, Fahrpreisrechner, Online-Zahlungen, GPS-Tracking usw.
Fahrer-App
Die Fahrer-App wird von Taxifahrern verwendet, die neue Taxianfragen von Fahrgästen anzeigen. Über dieses Panel können die Fahrer Fahrtanfragen entweder annehmen oder ablehnen und den genauen Standort des Fahrgasts anhand der integrierten Karte überprüfen.
Der Markt
Der Marktplatz verbindet die beiden Anwendungen – Beifahrer-App und Fahrer-App. Es führt die kompliziertesten Aufgaben aus, bei denen es darum geht, die Fahrgäste mit den Fahrern zusammenzubringen und Zahlungen abzuwickeln.
Wenn Sie also eine App wie Uber erstellen möchten, benötigen Sie drei verschiedene Panels. Das erste Panel ermöglicht es den Fahrgästen, ein Taxi zu buchen, und das zweite Panel ermöglicht es den Fahrern, Fahrtanfragen anzunehmen. Und schließlich wird ein drittes Panel Anfragen von den ersten beiden entgegennehmen und alle Online-Operationen verwalten.
Wie baut man das nächste Uber?
Uber ist ein äußerst erfolgreicher Taxidienst, der Fahrgästen ultimativen Komfort bietet. Die Entwicklung einer App wie Uber kann einen erheblichen Geldbetrag und ein kompetentes App-Entwicklungsteam erfordern.
Abgesehen davon gibt es bei der Entwicklung einer App wie Uber noch ein paar andere Dinge zu beachten.
Überprüfen Sie Ihre Konkurrenten.
Es ist eine gute Idee, nach Apps zu suchen, die derzeit versuchen, dasselbe Problem zu lösen, das Sie mit Ihrer App lösen möchten. Wenn Sie sich diese Apps ansehen, können Sie sich ein Bild von ihren Funktionen, Funktionen und der Zielgruppe machen.
Darüber hinaus hilft Ihnen ein gründlicher Blick auf die Wettbewerbslandschaft zu verstehen, wie Ihre Konkurrenten agieren. Wenn Sie beispielsweise ihre sozialen Medien überprüfen, können Sie Einblicke in ihre Marketingstrategie, Produktentwicklung und Kundenzufriedenheitsbewertungen gewinnen. All dies trägt wesentlich dazu bei, dass Sie eine erfolgreiche App starten.
Kennen Sie Ihre potenziellen Nutzer
Bevor Sie in die App-Entwicklung einsteigen, müssen Sie wissen, wer Ihre App verwenden wird. Nur wenn Sie Ihre Zielgruppe kennen, können Sie mit ihr richtig kommunizieren.
Sie können alle demografischen Daten Ihrer potenziellen Benutzer sammeln, z. B. Alter, Standort, Geschlecht, Verhaltensweisen, Vorlieben usw. Sobald Sie fertig sind, können Sie die Idee Ihrer App mit den Personen diskutieren, die Sie sehr schätzen.
Konzentrieren Sie sich auf die Benutzererfahrung.
Die Benutzererfahrung ist einer der Schlüsselaspekte einer erfolgreichen App. Menschen möchten Apps verwenden, die eine einfache, aber intuitive UI und UX bieten. Eine beeindruckende Benutzeroberfläche bietet ein nahtloses Navigationserlebnis und eine intuitive UX sorgt für Benutzerfreundlichkeit.
Die Bereitstellung einer guten Benutzererfahrung führt zu einer besseren Benutzerakquise und mehr Downloads.
Testen Sie mit einem MVP
Ein Minimum Viable Product (MVP) ist die erste Basisversion des Produkts, die minimale, aber entscheidende Funktionen unterstützt. Die Erstellung eines MVP vor der Entwicklung einer vollwertigen App ist ratsam, da dies eine schnellere Markteinführung ermöglicht, Early Adopters anzieht und von Anfang an eine Produktmarktanpassung erreicht.
Sobald das MVP für die Benutzer freigegeben ist, wird ihr erstes Feedback eingeholt. Basierend auf diesem Feedback können Sie wiederholen, Fehler beheben und neue Funktionen einführen, die Ihrem Produkt einen Wettbewerbsvorteil verschaffen.
Wie funktioniert die Uber App technisch?

Die Uber-App verarbeitet eine große Menge an Daten, indem sie die intern entwickelten ML- und Datenanalyseplattformen nutzt. Wenn ein Fahrgast ein Taxi anfordert, werden viele Daten generiert. Beispielsweise erhält die App Daten über den Passagier, seinen Standort, Kreditkarteninformationen, Fahrtkosten, Taxifahrer in der Nähe usw. Und nach und nach reisen all diese Informationen durch das gesamte System. Mal sehen wie.
Sobald eine Fahrt angefordert wird, geht die Plattform wie folgt vor:
- Speichert alle Fahrtinformationen in der Datenbank
- Verarbeitet die Fahrtanfrage mit der Geolokalisierung des Fahrgasts
- Sendet alle verarbeiteten Daten an den passenden Algorithmus powered by ML
- Sucht in der Datenbank nach Informationen über Fahrer in der Nähe

Anforderungen für Uber-ähnliche Projekte
Uber wurde 2009 eingeführt und die Plattform hatte lange Zeit ein Backend mit einer monolithischen Architektur. Mit anderen Worten, die App verwendete eine einzige Datenbank zusammen mit mehreren App-Servern, um alle Online-Anfragen zu verwalten.
Für die Anfangszeit hat das ganz gut funktioniert. Mit dem Wachstum der Plattform stieg jedoch auch der Bedarf an neuen Funktionen. Und um neue Funktionen zu integrieren, musste das Entwicklungsteam den gesamten Code auf einmal bereitstellen. Dies beeinträchtigte die Geschwindigkeit der App und machte den Prozess der Einführung neuer Funktionen äußerst riskant und zeitaufwändig. Dies liegt daran, dass jede Integration potenziell das gesamte System zum Absturz bringen könnte. Dies führte zur Einführung der Microservices-Architektur.
Mikrodienste

2014 übernahm Uber die Microservices-Architektur, um eine bessere Geschwindigkeit und Leistung zu gewährleisten. Im Wesentlichen umfasst diese Architektur eine Gruppe von Diensten, die auf die Funktionalität des jeweils anderen abzielen. Somit kann das Entwicklungsteam mit der Microservices-Architektur problemlos neuen Code unabhängig bereitstellen und so eine vollständige Systemskalierung sicherstellen.
DOMA (domänenorientierte Systemarchitektur)
Obwohl die Microservices-Architektur ein gewaltiges Upgrade der monolithischen Architektur darstellte, hörte das Entwicklungsteam von Uber hier nicht auf. Sie haben mit der Zeit einen neuen Ansatz namens DOMA-Domain-Oriented System Architecture eingeführt.
Gemäß diesem Ansatz orientieren sich die Entwickler bei ihrem Design an Sammlungen zusammengehöriger Microservices. Und diese Sammlungen werden Domänen genannt. Darüber hinaus werden die Domänen auch in verschiedene Sammlungen eingeteilt, die Schichten genannt werden. Die spezifische Schicht, zu der jede Domäne gehört, legt fest, welche Abhängigkeiten die Microservices innerhalb dieser Domäne übernehmen können. Dies wird als Ebenendesign bezeichnet.
Die Entwickler machen dann jede Domäne mithilfe der Gateway-API unabhängig von den anderen. Somit hat jede Domäne ihre eigene Logik und ist nicht mit den anderen Domänen innerhalb derselben Schicht verbunden.


Mit einfachen Worten, durch die Bereitstellung einer organisierten Architektur, vordefinierter Erweiterungspunkte und Domänen-Gateways verwandelt DOMA die Microservices-Architektur von etwas Kompliziertem in etwas, das leicht verständlich ist.
Welches UI-Framework verwendet Uber?
Das Designteam von Uber konzentriert sich darauf, das Design der App ständig zu verbessern, indem neue Funktionen hinzugefügt werden. Dies ist jedoch ein zeitaufwändiger Prozess. Um die Bemühungen des Designteams zu optimieren, haben sie ein React-UI-Framework namens Base erstellt.

Base enthält vorgefertigte Uber App-Elemente wie Farben, Raster, Typografie, Listen, Schaltflächen und Ikonografie. Das Framework hat es dem Designteam ermöglicht, Designs schneller zu erstellen und gleichzeitig hohe UI/UX-Standards und Konsistenz aufrechtzuerhalten.
Was ist der Tech-Stack hinter der Food-Delivery-App Uber?
Im Jahr 2014 enthielt das Backend von Uber Sprachen wie Python, Mongo und MySQL. Auf der anderen Seite verwendete das Versandsystem Node.js und Redis, während die mobilen Apps von Java und Objective-C betrieben wurden. Als sich die Anforderungen jedoch weiterentwickelten, änderten die Entwickler fast alle Komponenten der Plattform.
Marktplatz-Technologien-Stack
Der Marktplatz von Uber ist ein wichtiger Aspekt, der alle Datenströme und Datenanalysen verwaltet. Und der Tech-Stack, der für den Aufbau dieses Marktplatzes verwendet wird, umfasst Sprachen wie Python, Go, Java und Node. Sehen wir uns nun diesen Marktplatz-Technologie-Stack im Detail an:
Die Trip-Execution-Engine
Da die Trip-Execution-Engine ein integraler Bestandteil des Marktplatzes ist, wurde sie ursprünglich in Node.js geschrieben, das wegen seiner asynchronen, einfachen und Single-Thread-Verarbeitung bevorzugt wurde. Node.js ermöglichte es dem Uber-Team auch, große Mengen gleichzeitiger Verbindungen zu verwalten. Jetzt erstellt das Unternehmen jedoch neue Dienste in Go, das für seine Effizienz, Parallelität und typsicheren Betrieb bekannt ist.
Die Frontline-API
Die Frontline-API leitet Anfragen von den mobilen Geräten des Fahrers und Beifahrers an andere APIs und Dienste weiter. Dies ist in Node.js geschrieben, außer am Rand. Es verwendet NGINX für das Frontend und führt die SSL-Terminierung und einige Authentifizierungen durch.
Verbindung in Echtzeit
Um die höchsten Verfügbarkeitsanforderungen nahtlos zu unterstützen, muss der Marktplatz-Stack Informationen in Echtzeit erhalten. So nutzen die Entwickler Ringpop, eine Bibliothek zum Aufbau kooperativer verteilter Systeme. Dank dieser Bibliothek erhalten die Entwickler eine hochverfügbare Verbindung mit verteilten Datenbanken wie Riak und DynamoDB.
Die passende Logik
Der Abgleichalgorithmus, dh das System, das Warnungen von Fahrern und Mitfahrern in Echtzeit verwaltet und sie dann abgleicht, ist in Go und Node.js geschrieben. Riak ist ihre verteilte Datenbank, während Redis Caching anbietet.
Dynamische Preisoptimierung
Das Marktplatz-Team von Uber verwaltet die Optimierung und Ausgewogenheit durch dynamische Preisgestaltung, intelligente Abstimmung und Angebotspositionierung. Früher wurden die meisten Teile dieses Stacks mit Python mit Flask und uWSGI erstellt. Jetzt ersetzen die Entwickler jedoch die meisten Pythons durch Go, um eine höhere Leistung zu erzielen.
Datenstreaming und maschinelles Lernen
Uber verwendet Kafka und seine eigenen Produktionsdatenbanken für das Datenstreaming. Und die Datenspeicherung hängt von Hive, HDFS, Elasticsearch, MapReduce und Dateispeicher-Webdiensten ab. Das Unternehmen hat auch ein eigenes LIDAR entwickelt, das den internen Austausch sicherstellt. Das LIDAR betreibt Jupyter, JupyterHub, integriert mit Apache Spark und ihrer eigenen Datenplattform.
Bemerkenswert ist, dass Uber über eine eigene ML-Plattform verfügt. Im Jahr 2015 beschloss das Unternehmen, ML zu skalieren, um Tools und Workflows zu standardisieren und ML-Anti-Patterns zu vermeiden. Folglich entwickelten sie 2017 Michelangelo.
Michelangelo ist eine KI- und ML-basierte Plattform, die hilft, Daten zu verwalten, Modelle zu bewerten und bereitzustellen, Trendprognosen zu erstellen und Prognosen zu überwachen. Die ML-Plattform besteht aus einem Mix aus Open-Source-Systemen und hauseigenen Komponenten wie:
- HDFS
- Samza
- Funke
- MLLib
- TensorFlow
- Kassandra
- XGBoost

Stack-Technologien einer Webanwendung
Für die webbasierte App verwenden die Uber-Entwickler Node.js, eine Open-Source-Plattform mit einer riesigen Community von Web-Ingenieuren. Node.js ermöglicht es den Entwicklern auch, JavaScript-Code zwischen Server und Client auszutauschen, um universelle Webanwendungen zu erstellen. Schließlich verwenden sie Browserify für alle clientseitigen Bündelungen, wie sie mit Node geliefert werden. js-basierte Modulanforderungen.
Der Webserver von Uber namens Bedrock basiert auf Express.js, einem beliebten Webframework, das vollständige Sicherheit und Internalisierung bietet. Ihre interne Dienstkommunikationsschicht, bekannt als Atreyu, verwaltet die gesamte Kommunikation mit Backend-Diensten und lässt sich in Bedrock integrieren. Diese Kommunikationsschicht ermöglicht es dem Unternehmen auch, Anfragen an seine SOA-Service-APIs einfach und schnell zu stellen.
Uber verwendet Standard-Flux und React.js für das Anwendungs-Rendering und die Zustandsverarbeitung. Das Buildsystem Core Tasks ist eine vordefinierte Gruppe von Skripts zum Kompilieren und Versionieren von Frontend-Assets, die auf Gulp.js basieren.
Stack-Technologien einer mobilen Anwendung
Um eine App wie Uber zu entwickeln, müssen Sie vier verschiedene mobile Apps erstellen: Android-Passagier, Android-Fahrer, iOS-Passagier und iOS-Fahrer. Entwickler erstellen IOS-Apps mit Objective-C und der Programmiersprache Swift, während Android-Apps mit Java entwickelt werden. Aber abgesehen davon gibt es nur wenige andere Technologien, die von den Entwicklern verwendet werden. Diese beinhalten:
Tech-Stack für Android-Apps
- Gradl
- OkHttp/Gson/Retrofit
- Buttermesser
- Dolch
- Espresso
- Picasso
- RxJava
- Holz
iOS-App-Tech-Stack
- Bock
- Mauerwerk/SnapKit
- KSCrash
- OCMock
Welche Programmiersprachen kann ich verwenden, um eine Essensliefer-App wie Uber zu erstellen?
Wenn Sie eine App wie Uber entwickeln möchten, können Sie sich für die Integration der folgenden Technologien entscheiden:
- Node.js – für Marketplace-Web-App
- Python – für webbasierte Buchungs-App
- Go- für verbesserte Leistung und Geschwindigkeit
- Browserify – für clientseitige Bündelung
- Java – für Dienstintegrationen von Drittanbietern
- Apache Hive Data Warehouse – für Analysen und Datenabfragen
- ELk – zum Speichern von Protokollen, Verarbeiten und Versenden
- Apache Cassandra – zur Verwaltung großer Datenmengen
- MySQL-Datenbankdienst – für die Verwaltung relationaler Datenbanken
- Docker – für Rechenzentrumsinfrastruktur
- HAProxy – für Proxy-Server und Load Balancer
Dies ist eine kurze Zusammenfassung des Technologie-Stacks von Uber. Das einfache Kopieren dieses Tech-Stacks ohne eigene Recherche kann jedoch Ihrem Geschäftsmodell schaden. Außerdem garantiert die Anwendung derselben Technologien keinen Erfolg für Ihr Taxirufgeschäft.
Daher ist es ratsam, Ihre App mit möglichst wenigen Technologien zu erstellen. Wenn Ihr Unternehmen wächst, können Sie nach und nach immer neue Funktionen hinzufügen, indem Sie neuere Technologien nutzen. Sie müssen den Tech-Stack von Uber nur als Inspirationsquelle nutzen, um loszulegen.
