PPL Pertemuan 7 - Desain Sistem Restaurant
Nama:
- Cindi Dwi Pramudita (5025201042)
- Sekar Ambar Arum (5025211041)
Kelas: PPL - A
Pada pertemuan ke-7, mahasiswa diminta untuk mendeskripsikan bagaimana Low Level Design dan High Level Design dari sistem food delivery/restaurant berdasarkan referensi yang didapat dari paperwork, jurnal, dokumentasi aplikasi, dll.
Referensi: Klik di sini
Design Sistem Aplikasi Delivery Makanan
Functional Requirements
Registrasi Pengguna:
Pengguna harus dapat membuat akun baru.
Pengguna harus dapat masuk ke akun mereka dengan nama pengguna dan kata sandi.
Pengguna harus dapat mengatur dan mengelola profil mereka (informasi pribadi, alamat pengiriman, metode pembayaran, dll.).
Pemesanan Makanan:
Pengguna harus dapat mencari restoran atau makanan berdasarkan kategori, nama, atau lokasi.
Pengguna harus dapat menambahkan item makanan ke keranjang belanja.
Pengguna harus dapat melihat ringkasan pesanan dan total biaya sebelum checkout.
Checkout dan Pembayaran:
Pengguna harus dapat melihat rincian pesanan mereka sebelum melakukan pembayaran.
Pengguna harus dapat memilih metode pembayaran (kartu kredit, e-wallet, COD, dll.).
Pengguna harus dapat mengkonfirmasi pesanan setelah pembayaran berhasil.
Pengiriman dan Pelacakan Pesanan:
Pengguna harus dapat melacak status pesanan mereka (dalam proses persiapan, dalam perjalanan, telah tiba, dll.).
Pengguna harus mendapat notifikasi tentang perkiraan waktu kedatangan pesanan.
Pengguna harus dapat memberikan umpan balik tentang pengalaman pengiriman.
Manajemen Restoran:
Restoran harus dapat menambahkan dan mengelola daftar menu mereka.
Restoran harus dapat melihat dan mengelola pesanan yang masuk.
Restoran harus dapat memperbarui status ketersediaan item makanan.
Promosi dan Diskon:
Sistem harus mendukung pemberian kode promo atau diskon kepada pengguna.
Pengguna harus dapat melihat promo yang tersedia dan syarat-syaratnya.
Sistem Rating dan Ulasan:
Pengguna harus dapat memberikan rating dan ulasan tentang restoran atau makanan yang mereka pesan.
Pengguna harus dapat melihat rating dan ulasan dari pengguna lain.
Dukungan Pelanggan:
Pengguna harus memiliki akses ke informasi kontak atau fitur bantuan pelanggan.
Pengguna harus dapat mengajukan pertanyaan atau masalah terkait pesanan mereka.
Pengaturan Bahasa dan Lokasi:
Pengguna harus dapat mengatur preferensi bahasa dan lokasi untuk pengalaman pengguna yang lebih baik.
Aplikasi harus mendukung berbagai bahasa dan mata uang.
Rekomendasi Personalisasi:
Sistem harus dapat memberikan rekomendasi makanan berdasarkan preferensi pengguna atau riwayat pesanan mereka.
Pengguna harus dapat melihat daftar restoran atau menu yang disarankan.
Non-functional Requirements
Skalabilitas: Sistem harus mampu menangani sejumlah besar pengguna dan pesanan secara bersamaan.
Keandalan: Sistem harus sangat tersedia dan mampu menangani kegagalan tanpa mengganggu layanan.
Kinerja: Sistem harus dirancang untuk menangani throughput yang tinggi dan latensi yang rendah untuk memberikan waktu respons yang cepat.
Keamanan: Sistem harus melindungi informasi keuangan dan pelanggan yang sensitif.
Manajemen Data: Sistem harus dirancang untuk menangani data dalam jumlah besar dan menyediakan akses dan permintaan data yang efisien.
Fleksibilitas: Sistem harus dengan cepat beradaptasi dengan perubahan item menu, harga, dan opsi pengiriman.
Ramah pengguna: Tampilan depan harus mudah dinavigasi dan dipahami oleh pelanggan dari segala usia dan kemampuan teknis.
Real-time tracking: Sistem harus menyediakan informasi real-time tentang status pesanan dan pengiriman kepada pelanggan dan mitra pengantaran.
Integrasi: Sistem harus terintegrasi dengan gateway pembayaran dan layanan lain yang relevan seperti peta dan pelacakan lokasi.
Personalisasi: Sistem harus mempersonalisasi pengalaman pengguna dengan memberikan rekomendasi dan penawaran yang dipersonalisasi.
Otomatisasi: Sistem harus dirancang dengan otomatisasi untuk meminimalkan kebutuhan akan intervensi manual dan meningkatkan efisiensi.
Pemantauan dan Analisis: Sistem harus menyertakan kemampuan pemantauan dan analisis untuk mendapatkan wawasan tentang penggunaan dan kinerja sistem.
Disaster Recovery: Sistem harus menyertakan rencana pemulihan galat untuk memastikan kelangsungan bisnis jika terjadi pemadaman atau kegagalan yang tidak terduga.
Storage Estimates
Data pengguna per akun: 1 MB - 5 MB (tergantung pada jumlah informasi yang disimpan per pengguna)
Data pesanan per transaksi: 100 KB - 1 MB (tergantung pada jumlah item makanan dan detail pesanan)
Data transaksi per transaksi: 100 KB - 500 KB (tergantung pada kompleksitas informasi pembayaran)
Data restoran per restoran: 1 MB - 10 MB (tergantung pada jumlah menu, foto, dan informasi lainnya)
Media konten: 1 MB - 10 MB per file (tergantung pada resolusi dan jenis media)
File konfigurasi dan sumber daya: 100 KB - 1 MB (tergantung pada kompleksitas aplikasi)
Log aplikasi: 1 MB - 10 MB per hari (tergantung pada aktivitas aplikasi dan tingkat logging)
High Level Design
Panel Admin: Bertanggung jawab atas proses on boarding Pemilik Restoran dan Mitra Delivery.
Pemilik Restoran: Bertanggung jawab untuk menambahkan menu, mengelola pesanan dan pembayaran.
Mitra Pengantaran: Bertanggung jawab untuk mengambil pesanan dari Pemilik Restoran dan mengantarkannya ke pelanggan.
Pelanggan: Mereka adalah klien yang sebenarnya. Mereka akan menggunakan aplikasi. Pelanggan akan membuat pesanan dari sistem.
Diagram
Web front-end atau aplikasi seluler: Ini adalah antarmuka yang digunakan pelanggan untuk membuat menu, menelusuri menu, melakukan pemesanan, dan melacak status pengiriman.
Server backend atau Layanan: Komponen ini menangani permintaan dari ujung depan, berkomunikasi dengan basis data, dan berkoordinasi dengan mitra pengiriman.
Basis data: Komponen ini menyimpan informasi tentang menu, pesanan, pelanggan, dan mitra pengantaran.
Gerbang API (API Gateway): Komponen ini bertanggung jawab atas perutean permintaan, komposisi, dan penerjemahan protokol, di antaranya, antara aplikasi dan sekumpulan layanan mikro.
Antrian Pesan: Komunikasi asinkron antar sistem yang memungkinkan beberapa sistem untuk mengirim dan menerima pesan secara andal dan efisien tanpa harus selalu terhubung.
Layanan Pemberitahuan: Untuk mengirim pemberitahuan kepada pengguna, biasanya melalui email atau pemberitahuan push.
Mesin Pelacakan: Mesin ini akan terus memantau perubahan pada Database, memperbarui indeks pencarian elastis, dan memberitahukan antrean pesan.
Fitur
Panel Admin
Fitur inti dari panel admin sistem pemesanan makanan meliputi yang berikut ini:
Manajemen restoran: Admin dapat secara langsung mengelola semua restoran dengan menambahkan, memperbarui, dan menghapus tempat makan dari daftar. Mereka juga dapat memeriksa status aktif restoran. Fitur ini memungkinkan admin untuk melacak restoran yang sedang aktif di platform dan melakukan perubahan seperlunya.
Analisis & pembuatan laporan: Dengan menggunakan fitur analisis dan laporan, admin dapat memperoleh wawasan real-time ke dalam laporan dan informasi akuntansi lainnya, yang membantu mengidentifikasi pertumbuhan dan peluang untuk memperluas jangkauan. Fitur ini memberikan admin data dan metrik berharga yang dapat digunakan oleh analisis dan pembuatan laporan untuk membuat keputusan yang tepat tentang arah platform.
Memantau setiap tindakan: Admin dapat memantau semua pesanan makanan, mitra pengantaran, pengantaran, ulasan & peringkat mitra pengantaran, pesanan yang dibatalkan, dan data penting lainnya yang terkait dengan kinerja pengemudi. Fitur ini memungkinkan admin untuk melacak berbagai aspek operasi platform dan membuat penyesuaian yang diperlukan untuk meningkatkan kinerja. Fitur pemantauan juga membantu memastikan bahwa platform berjalan dengan lancar dan layanan pelanggan berjalan dengan baik.
Aplikasi Pelanggan
Aplikasi pelanggan menawarkan berbagai fitur untuk membuat pemesanan makanan dan pelacakan pengiriman menjadi mudah dan nyaman bagi pengguna. Fitur-fitur tersebut antara lain:
Kemampuan untuk mencari restoran dan kafe berdasarkan lokasi dan masakan, menggunakan filter pencarian untuk menemukan pilihan yang diinginkan dengan cepat.
Sistem pemesanan yang memungkinkan pengguna untuk memilih hidangan dan melanjutkan ke pembayaran dengan pilihan waktu pengantaran.
Pelacakan mitra pengantaran secara real-time sehingga pengguna dapat melihat lokasi pengemudi dan estimasi waktu pengantaran.
Integrasi dengan berbagai metode pembayaran, termasuk kartu kredit/debit dan dompet digital yang populer.
Aplikasi Mitra Pengantaran
Aplikasi mitra pengantaran menyediakan berbagai fitur untuk membantu pengemudi mengelola pengantaran mereka secara efektif. Fitur-fitur tersebut antara lain:
Bagian profil pribadi di mana pengemudi dapat memperbarui informasi kontak dan detail lainnya.
Notifikasi push untuk memberi tahu pengemudi tentang pesanan baru dan menginformasikan status pengantaran.
Fitur peta terintegrasi yang membantu pengemudi menavigasi ke lokasi pengantaran dengan menyediakan pilihan rute terpendek dan tercepat.
Portal pemilik restoran
Aplikasi atau situs pemilik restoran menawarkan beberapa fitur utama untuk membantu pemilik restoran mengelola bisnis dan pesanan mereka secara efektif. Fitur-fitur tersebut antara lain:
Profil restoran dan bagian menu di mana pemilik dapat menambahkan detail tentang restoran mereka, termasuk item menu, harga, dan ketersediaan.
Notifikasi push untuk memberi tahu restoran tentang pesanan baru, membantu mereka mengelola staf dan inventaris mereka.
Notifikasi untuk mitra pengantaran, di mana mereka akan mendapatkan notifikasi mengenai mitra pengantaran dan lokasi mereka ketika mereka mengambil pesanan.
Bagian detail pembayaran, di mana pemilik restoran dapat melihat informasi tentang pembayaran yang diterima untuk pesanan mereka melalui sistem pesan-antar. Fitur ini membantu mereka melacak keuangan mereka dan memastikan bahwa pembayaran telah dilakukan dengan benar. Secara keseluruhan, fitur-fitur ini bertujuan untuk menyederhanakan proses pemesanan dan pengantaran, sehingga lebih efisien dan dapat diandalkan bagi restoran dan pelanggan.
Alur Aplikasi (Application Flow)
Kami mempertimbangkan arsitektur berbasis layanan mikro di sini. Layanan yang berbeda dicantumkan dalam diagram arsitektur.
Layanan yang berbeda terhubung melalui gateway API. Gateway ini menangani penyeimbangan beban dan merutekan permintaan ke layanan yang sesuai, mengautentikasi dan mengotorisasi pengguna dan mengirimkan kembali ID token untuk komunikasi lebih lanjut.
Layanan seperti pendaftaran pengguna, manajemen pesanan, dan manajemen pembayaran menggunakan database transaksional. Sistem akan menggunakan basis data relasional, layanan yang sangat skalabel yang dapat mengelola pesanan dan pengguna secara bersamaan.
Informasi mengenai restoran, menu, harga, dan penawaran akan disimpan di ElasticSearch, sebuah penyimpanan dokumen JSON yang menyediakan opsi pencarian yang cepat dan terukur. Hal ini memungkinkan pelanggan untuk mencari menu dan masakan dengan cepat.
Proses pemesanan termasuk memilih hidangan, menghitung harga, dan memproses pembayaran melalui gateway dan opsi pembayaran yang berbeda. Setelah pesanan berhasil dilakukan, informasi tersebut dikirim ke antrian pesan pusat, seperti RabbitMQ/Redis Queue.
Unit pemrosesan pesanan membaca informasi pesanan, memberi tahu restoran yang dipilih, dan mencari mitra pengantaran yang tersedia di dekatnya.
Pelanggan menerima notifikasi push tentang pesanan mereka dan dapat melacak status pesanan mereka dan lokasi langsung dari pengantaran melalui layanan pemrosesan dan pelacakan pesanan.
Petugas pengantaran kemudian mengambil pesanan dan mengantarkannya ke pelanggan, dengan pemberitahuan waktu nyata tentang perkiraan waktu kedatangan.
Low Level Design
Database Design
Users Table
ID
(Primary Key)Username
Password
Email
FullName
PhoneNumber
Address
CreatedAt
UpdatedAt
Restaurants Table
ID
(Primary Key)Name
Description
Location
OwnerID
CreatedAt
UpdatedAt
MenuItems Table
ID
(Primary Key)RestaurantID
(Foreign Key)Name
Description
Price
Availability
CreatedAt
UpdatedAt
Orders Table
ID
(Primary Key)UserID
(Foreign Key)RestaurantID
(Foreign Key)TotalPrice
Status
CreatedAt
UpdatedAt
OrderItems Table
ID
(Primary Key)OrderID
(Foreign Key)MenuItemID
(Foreign Key)Quantity
Price
Payments Table
ID
(Primary Key)OrderID
(Foreign Key)Amount
PaymentMethod
PaymentStatus
CreatedAt
UpdatedAt
Delivery Table
ID
(Primary Key)OrderID
(Foreign Key)DeliveryPersonID
(Foreign Key)Status
PickupTime
DeliveryTime
CreatedAt
UpdatedAt
API Endpoints
User Registration and Authentication
POST /api/register
POST /api/login
GET /api/profile
PUT /api/profile
Restaurant and Menu Management
GET /api/restaurants
GET /api/restaurants/{id}
POST /api/restaurants
PUT /api/restaurants/{id}
DELETE /api/restaurants/{id}
GET /api/restaurants/{id}/menu
POST /api/restaurants/{id}/menu
PUT /api/menu/{id}
DELETE /api/menu/{id}
Order Management
GET /api/orders
GET /api/orders/{id}
POST /api/orders
PUT /api/orders/{id}
DELETE /api/orders/{id}
Payment Processing
POST /api/payments
GET /api/payments/{id}
Delivery Tracking
GET /api/delivery
GET /api/delivery/{id}
Notifications
POST /api/notifications
GET /api/notifications/{id}
Comments
Post a Comment