Uber Tech Stack i architektura oprogramowania — jak zbudowano Ubera?
Opublikowany: 2022-01-17Uber stał się powszechnie znaną marką. Niesamowita platforma umożliwia użytkownikom zarezerwowanie usługi kabiny w zaledwie czterech prostych krokach. Aplikacja Uber gwarantuje szybką obsługę i optymalną wygodę, nic dziwnego, że zyskała na popularności.
Czy wiesz, że Uber ma 98 milionów aktywnych użytkowników miesięcznie? Ponadto firma wygenerowała 11,1 miliarda dolarów przychodów w 2020 roku? Uber dał klasyczny przykład startupom i istniejącym usługom taksówkarskim. Każda organizacja dąży do odtworzenia sukcesu Ubera, oferując szybkie i wygodne usługi wezwania taksówki.
Jeśli również jesteś pod wrażeniem ogromnego sukcesu Ubera, ten artykuł jest dla Ciebie. W tym miejscu omówimy stos technologiczny i architekturę oprogramowania Ubera, co pozwoli lepiej zrozumieć platformę i pomoże zbudować od podstaw aplikację usług taksówkowych. Więc zacznijmy.
Jak zbudować aplikację w czasie rzeczywistym, taką jak Uber?
Aby zbudować aplikację działającą w czasie rzeczywistym, taką jak Uber, musisz najpierw zrozumieć jej różne komponenty, które są następujące:
Aplikacja pasażera
Jeśli korzystałeś wcześniej z aplikacji Uber, łatwo zidentyfikujesz się z funkcją aplikacji pasażera. Ten komponent aplikacji posiada wszystkie funkcje potrzebne użytkownikom do rezerwacji taksówki, takie jak wybór przejazdu, kalkulator opłat, płatności online, śledzenie GPS itp.
Aplikacja sterownika
Z aplikacji kierowcy korzystają taksówkarze, którzy wyświetlają nowe żądania taksówek od pasażerów. Korzystając z tego panelu, kierowcy mogą akceptować lub odrzucać prośby o przejazd i sprawdzać dokładną lokalizację pasażera za pomocą wbudowanej mapy.
Ten rynek
Marketplace łączy dwie aplikacje — aplikację pasażera i aplikację kierowcy. Realizuje najbardziej skomplikowane zadania polegające na dopasowaniu pasażerów do kierowców oraz obsłudze płatności.
Jeśli więc chcesz stworzyć aplikację taką jak Uber, będziesz potrzebować trzech różnych paneli. Pierwszy panel umożliwi pasażerom rezerwację taksówki, a drugi umożliwi kierowcom przyjmowanie próśb o przejazdy. I wreszcie trzeci panel będzie odbierać żądania od pierwszych dwóch i zarządzać wszystkimi operacjami online.
Jak zbudować następny Uber?
Uber to bardzo udana usługa wezwania taksówki, która zapewnia pasażerom najwyższą wygodę. Tworzenie aplikacji takiej jak Uber może wymagać znacznych nakładów finansowych i kompetentnego zespołu programistycznego.
Oprócz tego podczas tworzenia aplikacji takiej jak Uber należy wziąć pod uwagę kilka innych rzeczy.
Sprawdź swoich konkurentów.
Świetnym pomysłem jest wyszukiwanie aplikacji, które obecnie próbują rozwiązać ten sam problem, który próbujesz rozwiązać za pomocą swojej aplikacji. Spojrzenie na te aplikacje pomoże Ci zorientować się w ich funkcjach, funkcjonalnościach, a także o grupie docelowej.
Ponadto dokładne spojrzenie na konkurencyjny krajobraz pomoże Ci zrozumieć, jak działają Twoi konkurenci. Na przykład sprawdzenie ich mediów społecznościowych umożliwi zebranie informacji na temat ich strategii marketingowej, ewolucji produktów i ocen zadowolenia klientów. Wszystko to pomoże Ci uruchomić udaną aplikację.
Poznaj swoich potencjalnych użytkowników
Zanim przejdziesz do tworzenia aplikacji, musisz wiedzieć, kto będzie używał Twojej aplikacji. Tylko jeśli znasz swoją grupę docelową, będziesz w stanie odpowiednio się z nimi komunikować.
Możesz zebrać wszystkie dane demograficzne potencjalnych użytkowników, takie jak wiek, lokalizacja, płeć, zachowania, preferencje itp. Gdy skończysz, możesz omówić pomysł swojej aplikacji z osobami, o których myślisz wysoko.
Skoncentruj się na doświadczeniu użytkownika.
Doświadczenie użytkownika to jeden z kluczowych aspektów udanej aplikacji. Ludzie chcą korzystać z aplikacji, które oferują prosty, ale intuicyjny interfejs użytkownika i UX. Oszałamiający interfejs użytkownika zapewnia płynną nawigację, a intuicyjny interfejs użytkownika zapewnia łatwość użytkowania.
Zapewnienie dobrego doświadczenia użytkownika prowadzi do lepszego pozyskiwania użytkowników i większej liczby pobrań.
Przetestuj z MVP
Minimalnie opłacalny produkt (MVP) to pierwsza podstawowa wersja produktu, która obsługuje minimalne, ale kluczowe funkcje. Stworzenie MVP przed opracowaniem pełnowartościowej aplikacji jest wskazane, ponieważ zapewnia szybszy czas wprowadzania na rynek, przyciąga wczesnych użytkowników i od samego początku zapewnia dopasowanie produktu do rynku.
Po udostępnieniu MVP użytkownikom uzyskuje się ich wstępną informację zwrotną. Na podstawie tych opinii możesz powtórzyć, naprawić błędy i wprowadzić nowe funkcje, które zapewnią Twojemu produktowi przewagę konkurencyjną.
Jak technicznie działa aplikacja Uber?

Aplikacja Uber przetwarza ogromne ilości danych, wykorzystując opracowane wewnętrznie platformy ML i analizy danych. Gdy pasażer prosi o taksówkę, generowanych jest wiele danych. Na przykład aplikacja otrzymuje dane o pasażerze, jego lokalizacji, dane karty kredytowej, koszt przejazdu, pobliskich taksówkarzy itp. I stopniowo wszystkie te informacje są przesyłane przez cały system. Zobaczmy jak.
Po zamówieniu przejazdu platforma:
- Zapisuje wszystkie informacje o jeździe w bazie danych
- Przetwarza żądanie przejazdu z geolokalizacją pasażera
- Wysyła wszystkie przetworzone dane do algorytmu dopasowania obsługiwanego przez ML
- Szuka informacji o kierowcach obecnych w pobliżu w bazie danych

Wymagania dotyczące projektów podobnych do Uber
Uber wystartował w 2009 roku i najdłużej platforma miała backend o monolitycznej architekturze. Innymi słowy, aplikacja korzystała z jednej bazy danych wraz z kilkoma serwerami aplikacji do zarządzania wszystkimi żądaniami online.
W początkowym okresie działało to dobrze. Jednak wraz z rozwojem platformy wzrosło również zapotrzebowanie na nowe funkcje. Aby zintegrować nowe funkcje, zespół programistów musiał wdrożyć cały kod naraz. Wpłynęło to na szybkość działania aplikacji i sprawiło, że proces wprowadzania nowych funkcji był niezwykle ryzykowny i czasochłonny. Dzieje się tak, ponieważ każda integracja może potencjalnie spowodować awarię całego systemu. Doprowadziło to do przyjęcia architektury mikrousług.
Mikroserwisy

W 2014 r. Uber przyjął architekturę mikroserwisów, aby zapewnić lepszą szybkość i wydajność. Zasadniczo architektura ta obejmuje grupę usług ukierunkowanych na wzajemną funkcjonalność. Dzięki temu zespół programistów może z łatwością wdrożyć nowy kod niezależnie od architektury mikroserwisów, zapewniając pełne skalowanie systemu.
DOMA (Architektura systemu zorientowana na domenę)
Chociaż architektura mikrousług była ogromnym ulepszeniem architektury monolitycznej, zespół programistów Ubera nie poprzestał na tym. Z czasem przyjęli nowe podejście nazwane DOMA – Domain-Oriented System Architecture.
Zgodnie z tym podejściem programiści orientują swój projekt wokół kolekcji powiązanych mikrousług. A te kolekcje nazywają się domenami. Ponadto domeny są również podzielone na różne kolekcje zwane warstwami. Określona warstwa, do której należy każda domena, określa, jakie zależności mogą przyjąć mikrousługi w tej domenie. Nazywa się to projektowaniem warstw.
Deweloperzy następnie uniezależniają każdą domenę od innych, korzystając z interfejsu Gateway API. W ten sposób każda domena ma swoją własną logikę i nie jest powiązana z innymi domenami w tej samej warstwie.

W prostych słowach, zapewniając zorganizowaną architekturę, predefiniowane punkty rozszerzeń i bramy domen, DOMA przekształca architekturę mikrousług z czegoś skomplikowanego w coś, co jest łatwo zrozumiałe.

Której struktury interfejsu użytkownika używa Uber?
Zespół projektowy Ubera koncentruje się na ciągłym ulepszaniu projektu aplikacji poprzez dodawanie nowych funkcji. Jest to jednak proces czasochłonny. Tak więc, aby usprawnić wysiłki zespołu projektowego, stworzyli framework React UI o nazwie Base.

Baza zawiera wstępnie zaprojektowane elementy aplikacji Uber, takie jak kolory, siatki, typografia, listy, przyciski i ikonografia. Framework umożliwił zespołowi projektowemu tworzenie projektów w szybszym tempie przy zachowaniu wysokich standardów i spójności UI/UX.
Jaki jest stos technologiczny kryjący się za aplikacją do dostarczania jedzenia Uber?
W 2014 roku backend Ubera obejmował języki takie jak Python, Mongo i MySQL. Z drugiej strony system dyspozytorski wykorzystywał Node.js i Redis, natomiast aplikacje mobilne były zasilane przez Javę i Objective-C. Jednak wraz z ewolucją wymagań programiści zmienili prawie wszystkie komponenty platformy.
Stos technologii rynkowych
Rynek Ubera jest ważnym aspektem, który zarządza wszelkim przesyłaniem danych i analizą danych. A stos technologiczny używany do tworzenia tego rynku obejmuje języki takie jak Python, Go, Java i Node. Przyjrzyjmy się teraz szczegółowo stosowi technologii marketplace:
Silnik realizacji podróży
Ponieważ silnik wykonywania podróży jest integralną częścią rynku, został pierwotnie napisany w Node.js, który był preferowany ze względu na przetwarzanie asynchroniczne, proste i jednowątkowe. Node.js pozwolił również zespołowi Ubera zarządzać dużą liczbą jednoczesnych połączeń. Jednak teraz firma tworzy nowe usługi w Go, który jest znany ze swojej wydajności, współbieżności i bezpiecznych operacji typu.
Interfejs API pierwszej linii
Frontline API kieruje żądania z urządzeń mobilnych kierowcy i pasażera do innych interfejsów API i usług. Jest to napisane w Node.js, z wyjątkiem krawędzi. Używa NGINX dla frontonu i wykonuje zakończenie SSL i pewne uwierzytelnianie.
Połączenie w czasie rzeczywistym
Aby bezproblemowo obsługiwać najwyższe wymagania dotyczące dostępności, stos marketplace musi otrzymywać informacje w czasie rzeczywistym. Dlatego programiści używają Ringpop, biblioteki do budowania kooperacyjnych systemów rozproszonych. Dzięki tej bibliotece programiści uzyskują wysoce dostępne połączenie z rozproszonymi bazami danych, takimi jak Riak i DynamoDB.
Logika dopasowania
Algorytm dopasowywania, czyli system, który zarządza alertami kierowców i pasażerów w czasie rzeczywistym, a następnie je dopasowuje, jest napisany w Go i Node.js. Riak jest ich rozproszoną bazą danych, podczas gdy Redis oferuje buforowanie.
Dynamiczna optymalizacja cen
Zespół ds. rynku w Uber zarządza optymalizacją i równowagą poprzez dynamiczne ustalanie cen, inteligentne dopasowywanie i pozycjonowanie dostaw. Wcześniej większość części tego stosu została zbudowana przy użyciu Pythona z Flask i uWSGI. Jednak teraz programiści zastępują większość Pythona przez Go, aby osiągnąć większą wydajność.
Strumieniowanie danych i uczenie maszynowe
Uber wykorzystuje Kafkę i własne produkcyjne bazy danych do strumieniowego przesyłania danych. A przechowywanie danych zależy od usług internetowych Hive, HDFS, Elasticsearch, MapReduce i przechowywania plików. Firma opracowała również własny LIDAR, który zapewnia wewnętrzne udostępnianie. LIDAR obsługuje Jupyter, JupyterHub, zintegrowany z Apache Spark i własną platformą danych.
Idąc dalej, warto zauważyć, że Uber ma własną platformę ML. W 2015 roku firma zdecydowała się na skalowanie ML w celu standaryzacji narzędzi i przepływów pracy oraz unikania antywzorców ML. W związku z tym opracowali Michelangelo w 2017 roku.
Michelangelo to platforma oparta na sztucznej inteligencji i uczeniu maszynowym, która pomaga zarządzać danymi, oceniać i wdrażać modele, tworzyć prognozy trendów i monitorować prognozy. Platforma ML składa się z kombinacji systemów open source i komponentów wewnętrznych, takich jak:
- HDFS
- Samza
- Iskra
- MLLib
- Przepływ Tensora
- Kasandra
- XGBoost

Stosuj technologie aplikacji webowej
W przypadku aplikacji internetowej programiści Uber używają Node.js, platformy open source z ogromną społecznością inżynierów internetowych. Node.js umożliwia także programistom współdzielenie kodu JavaScript między serwerem a klientem w celu tworzenia uniwersalnych aplikacji internetowych. Wreszcie, używają Browserify do wszystkich wiązań po stronie klienta, ponieważ jest to dostarczane z Node. Wymagania modułu opartego na js.
Serwer sieciowy Ubera o nazwie Bedrock jest zbudowany na Express.js, popularnym frameworku internetowym, który oferuje pełne bezpieczeństwo i internalizację. Ich wewnętrzna warstwa komunikacyjna usług, znana jako Atreyu, zarządza całą komunikacją z usługami zaplecza, a także integruje się z Bedrock. Ta warstwa komunikacji umożliwia również firmie łatwe i szybkie wysyłanie żądań do interfejsów API usług SOA.
Uber używa standardowych Flux i React.js do renderowania aplikacji i obsługi stanu. System kompilacji, Core Tasks, to wstępnie zdefiniowana grupa skryptów do kompilacji i wersji zasobów frontendowych, które są zbudowane na Gulp.js.
Stosuj technologie aplikacji mobilnej
Aby stworzyć aplikację taką jak Uber, musisz utworzyć cztery różne aplikacje mobilne: pasażera Androida, sterownik Androida, pasażera iOS i sterownik iOS. Programiści tworzą aplikacje na iOS przy użyciu języków programowania Objective-C i Swift, podczas gdy aplikacja na Androida jest tworzona przy użyciu języka Java. Ale oprócz nich jest kilka innych technologii używanych przez deweloperów. Obejmują one:
Stos technologiczny aplikacji na Androida
- Gradle
- OkHttp/Gson/Modernizacja
- Nóż do masła
- Sztylet
- Espresso
- Picassa
- RxJava
- Drewno
Stos technologiczny aplikacji na iOS
- Bryknięcie
- Mury/SnapKit
- KSCrash
- OCZamek
Jakich języków programowania mogę użyć do stworzenia aplikacji do dostarczania jedzenia, takiej jak Uber?
Jeśli chcesz stworzyć aplikację taką jak Uber, możesz zdecydować się na integrację następujących technologii:
- Node.js – dla aplikacji internetowej Marketplace
- Python – dla internetowej aplikacji rezerwacyjnej
- Idź- dla lepszej wydajności i szybkości
- Browserify – do bundlingu po stronie klienta
- Java – do integracji usług firm trzecich
- Hurtownia danych Apache Hive – do analiz i zapytań o dane
- ELk – do przechowywania logów, przetwarzania i wysyłki
- Apache Cassandra – do zarządzania ogromnymi ilościami danych
- MySQL Database Service- do zarządzania relacyjnymi bazami danych
- Docker – dla infrastruktury data center
- HAProxy – dla serwera proxy i load balancera
To jest szybkie podsumowanie stosu technologii Ubera. Jednak proste skopiowanie tego stosu technologicznego bez przeprowadzania własnych badań może być szkodliwe dla Twojego modelu biznesowego. Ponadto zastosowanie tych samych technologii nie zagwarantuje sukcesu Twojej firmie zajmującej się nawożeniem taksówką.
Dlatego zaleca się budowanie aplikacji przy użyciu jak najmniejszej liczby technologii. Stopniowo, w miarę rozwoju firmy, możesz dodawać coraz nowsze funkcje, wykorzystując nowsze technologie. Aby zacząć, musisz używać stosu technologii Ubera tylko jako źródła inspiracji.
