Uber Tech Stack & Arsitektur Perangkat Lunak – Bagaimana Uber Dibangun?
Diterbitkan: 2022-01-17Uber telah menjadi nama rumah tangga. Platform yang luar biasa memungkinkan pengguna untuk memesan layanan taksi hanya dalam empat langkah sederhana. Aplikasi Uber menjamin layanan cepat serta kenyamanan optimal, tidak heran popularitasnya meledak.
Tahukah Anda bahwa Uber memiliki 98 juta pengguna aktif bulanan? Juga, perusahaan menghasilkan pendapatan $ 11,1 miliar pada tahun 2020? Uber telah memberikan contoh klasik untuk startup dan layanan taksi yang ada. Setiap organisasi bertujuan untuk meniru kesuksesan Uber dengan menawarkan layanan panggilan taksi yang cepat dan nyaman.
Jika Anda juga kagum dengan kesuksesan besar Uber, artikel ini cocok untuk Anda. Di sini, kita akan membahas tumpukan teknologi Uber dan arsitektur perangkat lunak, dan ini akan memberi Anda pemahaman yang lebih baik tentang platform dan membantu Anda membangun aplikasi layanan taksi Anda dari awal. Jadi, mari kita mulai.
Bagaimana Saya Membangun Aplikasi Real-Time Seperti Uber?
Untuk membangun aplikasi real-time seperti Uber, Anda harus terlebih dahulu memahami berbagai komponennya, yaitu sebagai berikut:
Aplikasi penumpang
Jika Anda pernah menggunakan aplikasi Uber sebelumnya, Anda akan dengan mudah mengidentifikasi dengan fungsionalitas aplikasi penumpang. Komponen aplikasi ini memiliki semua fitur yang dibutuhkan pengguna untuk memesan taksi, seperti memilih perjalanan, kalkulator tarif, pembayaran online, pelacakan GPS, dll.
Aplikasi pengemudi
Aplikasi pengemudi digunakan oleh pengemudi taksi yang menunjukkan permintaan taksi baru dari penumpang. Dengan menggunakan panel ini, pengemudi dapat menerima atau menolak permintaan perjalanan dan memeriksa lokasi persis penumpang menggunakan peta bawaan.
Pasar
Pasar menghubungkan dua aplikasi-aplikasi Penumpang dan aplikasi Pengemudi. Ini melakukan tugas paling rumit yang melibatkan pencocokan penumpang dengan pengemudi dan menangani pembayaran.
Jadi, jika Anda ingin membuat aplikasi seperti Uber, Anda memerlukan tiga panel berbeda. Panel pertama akan memungkinkan penumpang untuk memesan taksi, dan panel kedua akan memungkinkan pengemudi untuk menerima permintaan perjalanan. Dan akhirnya, panel ketiga akan menerima permintaan dari dua panel pertama dan mengelola semua operasi online.
Bagaimana Membangun Uber Berikutnya?
Uber adalah layanan panggilan taksi yang sangat sukses yang menawarkan kenyamanan tertinggi bagi penumpang. Mengembangkan aplikasi seperti Uber mungkin memerlukan sejumlah besar uang dan tim pengembangan aplikasi yang kompeten.
Selain itu, ada beberapa hal lain yang perlu dipertimbangkan saat mengembangkan aplikasi seperti Uber.
Periksa pesaing Anda.
Merupakan ide bagus untuk mencari aplikasi yang saat ini mencoba memecahkan masalah yang sama yang ingin Anda atasi dengan aplikasi Anda. Melihat aplikasi ini akan membantu Anda mengumpulkan ide tentang fitur, fungsi, serta audiens target mereka.
Selain itu, pandangan menyeluruh pada lanskap persaingan akan membantu Anda memahami bagaimana pesaing Anda beroperasi. Misalnya, memeriksa media sosial mereka akan memungkinkan Anda mengumpulkan wawasan tentang strategi pemasaran, evolusi produk, dan peringkat kepuasan pelanggan mereka. Semua ini akan sangat membantu Anda meluncurkan aplikasi yang sukses.
Kenali calon pengguna Anda
Sebelum terjun ke pengembangan aplikasi, Anda perlu tahu siapa yang akan menggunakan aplikasi Anda. Hanya jika Anda mengetahui audiens target Anda, Anda akan dapat berkomunikasi dengan baik dengan mereka.
Anda dapat mengumpulkan semua data demografis pengguna potensial Anda, seperti usia, lokasi, jenis kelamin, perilaku, preferensi, dll. Setelah selesai, Anda dapat mendiskusikan ide aplikasi Anda dengan orang-orang yang sangat Anda hargai.
Tetap fokus pada pengalaman pengguna.
Pengalaman pengguna adalah salah satu aspek kunci dari aplikasi yang sukses. Orang ingin menggunakan aplikasi yang menawarkan UI dan UX yang sederhana namun intuitif. UI yang memukau menawarkan pengalaman navigasi yang mulus, dan UX yang intuitif memastikan kemudahan penggunaan.
Memberikan pengalaman pengguna yang baik mengarah pada akuisisi pengguna yang lebih baik dan unduhan yang lebih banyak.
Uji dengan MVP
Produk yang layak minimum (MVP) adalah versi dasar pertama dari produk yang mendukung fitur minimal namun penting. Dianjurkan untuk membuat MVP sebelum mengembangkan aplikasi lengkap karena memungkinkan waktu lebih cepat untuk memasarkan, menarik pengadopsi awal, dan mencapai kesesuaian pasar produk sejak awal.
Setelah MVP dirilis ke pengguna, umpan balik awal mereka diperoleh. Berdasarkan umpan balik ini, Anda dapat mengulangi, memperbaiki bug, dan memperkenalkan fitur baru yang akan memberikan keunggulan kompetitif pada produk Anda.
Bagaimana Cara Kerja Aplikasi Uber Secara Teknis?

Aplikasi Uber memproses sejumlah besar data yang memanfaatkan ML dan platform analitik data yang dikembangkan sendiri. Saat penumpang meminta taksi, banyak data yang dihasilkan. Misalnya, aplikasi menerima data tentang penumpang, lokasinya, info kartu kredit, biaya perjalanan, pengemudi taksi terdekat, dll. Dan secara bertahap, semua informasi ini menyebar ke seluruh sistem. Mari kita lihat bagaimana.
Setelah tumpangan diminta, platform:
- Menyimpan semua informasi perjalanan di database
- Memproses permintaan perjalanan dengan geolokasi penumpang
- Mengirim semua data yang diproses ke algoritma pencocokan yang didukung oleh ML
- Mencari informasi tentang driver yang ada di sekitar di database

Persyaratan untuk Proyek Seperti Uber
Uber diluncurkan pada tahun 2009, dan untuk waktu yang lama, platform tersebut memiliki backend dengan arsitektur monolitik. Dengan kata lain, aplikasi menggunakan satu database bersama dengan beberapa server aplikasi untuk mengelola semua permintaan online.
Untuk periode awal, ini bekerja dengan baik. Namun, seiring berkembangnya platform, kebutuhan akan fitur baru juga meningkat. Dan untuk mengintegrasikan fitur baru, tim pengembangan harus menerapkan semua kode sekaligus. Ini memengaruhi kecepatan aplikasi dan membuat proses pengenalan fitur baru menjadi sangat berisiko dan memakan waktu. Ini karena setiap integrasi berpotensi menjatuhkan seluruh sistem. Hal ini menyebabkan adopsi arsitektur microservices.
Layanan mikro

Pada tahun 2014, Uber mengadopsi arsitektur layanan mikro untuk memastikan kecepatan dan kinerja yang lebih baik. Pada dasarnya, arsitektur ini mencakup sekelompok layanan yang ditargetkan untuk fungsionalitas satu sama lain. Dengan demikian, tim pengembangan dapat dengan mudah menerapkan kode baru secara independen dengan arsitektur layanan mikro, memastikan penskalaan sistem yang lengkap.
DOMA (Arsitektur Sistem Berorientasi Domain)
Meskipun arsitektur layanan mikro adalah peningkatan besar ke arsitektur monolitik, tim pengembangan di Uber tidak berhenti di situ. Mereka mengadopsi pendekatan baru yang disebut DOMA- Domain-Oriented System Architecture dengan waktu.
Menurut pendekatan ini, pengembang mengarahkan desain mereka di sekitar kumpulan layanan mikro terkait. Dan koleksi ini disebut domain. Selanjutnya, domain juga diklasifikasikan ke dalam kumpulan berbeda yang disebut lapisan. Lapisan khusus yang dimiliki setiap domain menetapkan dependensi apa yang dapat diambil oleh layanan mikro dalam domain itu. Ini disebut desain lapisan.
Pengembang kemudian membuat setiap domain independen dari yang lain dengan menggunakan API Gateway. Dengan demikian, setiap domain memiliki logikanya sendiri dan tidak terkait dengan domain lain di dalam lapisan yang sama.

Dengan kata sederhana, dengan menyediakan arsitektur yang terorganisir, titik ekstensi yang telah ditentukan, dan gateway domain, DOMA mengubah arsitektur layanan mikro dari sesuatu yang rumit menjadi sesuatu yang mudah dipahami.

Kerangka UI Mana yang Digunakan Uber?
Tim desain Uber berfokus untuk terus meningkatkan desain aplikasi dengan menambahkan fitur baru. Namun, ini adalah proses yang memakan waktu. Jadi, untuk merampingkan upaya tim desain, mereka telah membuat kerangka kerja React UI yang disebut Base.

Basis menyertakan elemen aplikasi Uber yang telah dirancang sebelumnya, seperti warna, kisi, tipografi, daftar, tombol, dan ikonografi. Kerangka kerja ini telah memungkinkan tim desain untuk membuat desain dengan lebih cepat sambil mempertahankan standar dan konsistensi UI/UX yang tinggi.
Apa Tumpukan Teknologi Dibalik Aplikasi Pengiriman Makanan Uber?
Pada tahun 2014, backend Uber menyertakan bahasa seperti Python, Mongo, dan MySQL. Di sisi lain, sistem pengiriman menggunakan Node.js dan Redis, sedangkan aplikasi seluler didukung oleh Java dan Objective-C. Namun, seiring berkembangnya persyaratan, pengembang mengubah hampir semua komponen platform.
Tumpukan Teknologi Marketplace
Pasar Uber adalah aspek penting yang mengelola semua streaming data dan analitik data. Dan tumpukan teknologi yang digunakan untuk membangun pasar ini mencakup bahasa seperti Python, Go, Java, dan Node.js. Sekarang mari kita lihat tumpukan teknologi pasar ini secara rinci:
Mesin eksekusi perjalanan
Karena mesin eksekusi perjalanan merupakan bagian integral dari pasar, awalnya ditulis di Node.js, yang lebih disukai untuk pemrosesan asinkron, sederhana, dan utas tunggal. Node.js juga memungkinkan tim Uber untuk mengelola sejumlah besar koneksi bersamaan. Namun, sekarang, perusahaan menciptakan layanan baru di Go, yang dikenal dengan efisiensi, konkurensi, dan pengoperasian yang aman.
API garis depan
Frontline API mengarahkan permintaan dari perangkat seluler pengemudi dan penumpang ke API dan layanan lain. Ini ditulis di Node.js, kecuali di tepi. Ini menggunakan NGINX untuk ujung depan dan melakukan penghentian SSL dan beberapa otentikasi.
Koneksi waktu nyata
Untuk mendukung permintaan ketersediaan tertinggi dengan mulus, tumpukan pasar harus menerima informasi secara real-time. Dengan demikian, para pengembang menggunakan Ringpop, sebuah perpustakaan untuk membangun sistem terdistribusi yang kooperatif. Karena perpustakaan ini, para pengembang mendapatkan koneksi yang sangat tersedia dengan database terdistribusi seperti Riak dan DynamoDB.
Logika yang cocok
Algoritme pencocokan, yaitu sistem yang mengelola peringatan dari pengemudi dan pengendara secara real-time dan kemudian mencocokkannya, ditulis dalam Go dan Node.js. Riak adalah database terdistribusi mereka, sedangkan Redis menawarkan caching.
Pengoptimalan harga dinamis
Tim pasar di Uber mengelola pengoptimalan dan keseimbangan melalui penetapan harga yang dinamis, pencocokan cerdas, dan penentuan posisi pasokan. Sebelumnya, sebagian besar tumpukan ini dibangun menggunakan Python dengan Flask dan uWSGI. Namun, sekarang, para pengembang mengganti sebagian besar Python dengan Go untuk mencapai kinerja yang lebih baik.
Streaming data dan pembelajaran mesin
Uber menggunakan Kafka dan database produksinya sendiri untuk streaming data. Dan penyimpanan data tergantung pada Hive, HDFS, Elasticsearch, MapReduce, dan layanan web penyimpanan file. Perusahaan juga telah mengembangkan LIDAR sendiri yang memastikan berbagi secara internal. LIDAR menjalankan Jupyter, JupyterHub, terintegrasi dengan Apache Spark dan platform data mereka sendiri.
Selanjutnya, perlu dicatat bahwa Uber memiliki platform ML-nya sendiri. Pada tahun 2015, perusahaan memutuskan untuk menskalakan ML untuk menstandardisasi alat dan alur kerja serta menghindari anti-pola ML. Akibatnya, mereka mengembangkan Michelangelo pada 2017.
Michelangelo adalah platform bertenaga AI dan ML yang membantu mengelola data, mengevaluasi dan menerapkan model, membuat prakiraan tren, dan memantau prognosis. Platform ML terdiri dari campuran sistem sumber terbuka dan komponen internal seperti:
- HDFS
- Samza
- Percikan
- mlib
- TensorFlow
- Cassandra
- XGBoost

Teknologi tumpukan aplikasi web
Untuk aplikasi berbasis web, pengembang Uber menggunakan Node.js, platform sumber terbuka dengan komunitas besar insinyur web. Node.js juga memungkinkan pengembang untuk berbagi kode JavaScript antara server dan klien untuk membuat aplikasi web universal. Terakhir, mereka menggunakan Browserify untuk semua bundling sisi klien seperti yang disertakan dengan Node.js. persyaratan modul berbasis js.
Server web Uber yang disebut Bedrock dibangun di atas Express.js, kerangka kerja web populer yang menawarkan keamanan dan internalisasi lengkap. Lapisan komunikasi layanan internal mereka, yang dikenal sebagai Atreyu, mengelola semua komunikasi dengan layanan backend serta terintegrasi dengan Bedrock. Lapisan komunikasi ini juga memungkinkan perusahaan untuk membuat permintaan ke API layanan SOA mereka dengan mudah dan cepat.
Uber menggunakan Flux dan React.js standar untuk rendering aplikasi dan penanganan status. Sistem build, Core Tasks, adalah grup skrip yang telah ditentukan sebelumnya untuk dikompilasi dan aset frontend versi yang dibangun di Gulp.js.
Teknologi tumpukan aplikasi seluler
Untuk mengembangkan aplikasi seperti Uber, Anda perlu membuat empat aplikasi seluler yang berbeda: penumpang Android, pengemudi Android, penumpang iOS, dan pengemudi iOS. Pengembang membuat aplikasi iOS menggunakan bahasa pemrograman Objective-C dan Swift, sedangkan aplikasi Android dikembangkan menggunakan Java. Namun selain dari itu, ada beberapa teknologi lain yang digunakan oleh para pengembang. Ini termasuk:
Tumpukan teknologi aplikasi Android
- Gradle
- OkHttp/Gson/Retrofit
- Pisau mentega
- Belati
- espreso
- picasso
- RxJava
- Kayu
Tumpukan teknologi aplikasi iOS
- uang
- Masonry/ SnapKit
- KSCrash
- OCMock
Bahasa Pemrograman Apa yang Dapat Saya Gunakan Untuk Membuat Aplikasi Pengiriman Makanan Seperti Uber?
Jika Anda ingin mengembangkan aplikasi seperti Uber, Anda dapat memilih untuk mengintegrasikan teknologi berikut:
- Node.js – untuk aplikasi web Marketplace
- Python – untuk aplikasi pemesanan berbasis web
- Go- untuk meningkatkan kinerja dan kecepatan
- Browserify – untuk bundling sisi klien
- Java – untuk integrasi layanan pihak ketiga
- Gudang data Apache Hive – untuk analitik dan kueri data
- ELk – untuk menyimpan log, pemrosesan, dan pengiriman
- Apache Cassandra – untuk mengelola volume data yang besar
- Layanan Database MySQL- untuk manajemen database relasional
- Docker – untuk infrastruktur pusat data
- HAProxy – untuk server proxy dan penyeimbang beban
Ini adalah ringkasan singkat dari tumpukan teknologi Uber. Namun, hanya menyalin tumpukan teknologi ini tanpa melakukan riset sendiri dapat merusak model bisnis Anda. Selain itu, menerapkan teknologi yang sama tidak akan menjamin kesuksesan bisnis panggilan taksi Anda.
Jadi, disarankan untuk membangun aplikasi Anda dengan beberapa teknologi mungkin. Secara bertahap, saat bisnis Anda berkembang, Anda dapat terus menambahkan fitur baru dengan memanfaatkan teknologi yang lebih baru. Anda hanya boleh menggunakan tumpukan teknologi Uber sebagai sumber inspirasi untuk memulai.
