- Get link
- X
- Other Apps
Nama: Ken Anargya Alkausar - 5025211168
Adrian Ismu Arifianto - 5025211116
Kelas: PPL A
Referensi: https://www.geeksforgeeks.org/design-restaurant-management-system-system-design/
Memberikan pengalaman bersantap yang luar biasa di sektor restoran saat ini menuntut lebih dari sekadar masakan enak. Sistem Manajemen Restoran telah muncul sebagai faktor kunci untuk kelancaran operasional dan kepuasan pelanggan.
Kami akan membuat sistem manajemen restoran yang memungkinkan pengguna menemukan restoran terdekat dengan mudah. Mereka dapat dengan mudah mengakses menu, melihat peringkat, dan memesan secara online, dengan pilihan makan di tempat atau pengiriman ke lokasi mana pun dalam jangkauan yang ditentukan.
Brief System Description
Sistem ini dirancang untuk mengotomatisasi operasi restoran, termasuk pemesanan, pengelolaan meja, inventaris, dan transaksi pembayaran.
Functional requirements
Mengizinkan klien untuk menelusuri menu, mencari restoran, dan memesan.
Pesanan dan menu dapat diperbarui oleh staf restoran.
Pelanggan memiliki akses ke peringkat restoran.
Klien memiliki pilihan untuk memesan layanan pesan antar atau makan di tempat.
Pesanan makanan dapat dikelola dan dilihat oleh staf dapur.
Pesanan pengiriman yang dialokasikan dapat dilihat oleh pengemudi pengiriman.
Pesanan yang dilakukan pelanggan dapat dilacak.
Opsi pembayaran tersedia untuk pelanggan.
Non functional requirements
Skalabilitas: Sistem dapat menangani fluktuasi lalu lintas, menambahkan fitur baru, dan responsif bahkan selama periode permintaan tinggi.
Reliability: Kelangsungan bisnis dan kepercayaan konsumen sangat bergantung pada reliability. Pemrosesan pesanan oleh sistem harus dapat diandalkan dan akurat, dan waktu henti bagi pengemudi pengantaran dan pemilik restoran yang bergantung padanya harus dijaga seminimal mungkin.
Ketersediaan Tinggi: Keberhasilan seluruh ekosistem manajemen restoran pada akhirnya bergantung pada sistem yang dapat diandalkan dan selalu tersedia yang menumbuhkan kepercayaan konsumen dan memfasilitasi operasional restoran yang efisien.
Konsistensi tinggi: Setiap perubahan pada biaya, menu, lokasi pengguna, atau informasi pembayaran akan segera diterapkan.
Capacity Assumptions
Untuk memperkirakan skalabilitas sistem dan menentukan kebutuhan penyimpanan, kita harus membuat beberapa asumsi tentang data dan lalu lintas yang disimpan.
Following are some assumptions for the given design.
10 million restaurants
Daily active users = 100 million
Active users per second = 1160 users/sec (approx.)
Average Orders per minute = 250,000/min
Average Orders per second = 4200 orders/second (approx.)
Peak orders = 2 * Average orders per minute = 500,000 orders/minute
Storage Estimation
Let’s assume on average:
Each customer row in DB is 1 KB (with address, profile info etc.)
Each restaurant = 2 MB (details, menus, photos etc.)
Each order = 1 KB.
Total storage needed:
100 million customers x 1KB per user = 100 GB
10 million restaurants x 2 MB per restaurant = 20 TB
500,000 orders per minute = 72 million orders per day (approx.)
72 million orders per day x 1 KB per order = 72 GB per day
Assuming we maintain orders for last 3 years:
72 GB per day x 365 days x 3 years = 77TB (approx.)
High Level Design
Dalam framework ini, ada tiga layanan mendasar yang perlu dikelola:
Client Services
Pelanggan harus mengautentikasi diri mereka sendiri sebelum melakukan pemesanan di restoran. Setelah melakukan pemesanan, pengguna dapat mengikuti statusnya dan melakukan pembayaran menggunakan berbagai opsi.
Restaurant Admin Services
Bagi administrator restoran, otentikasi adalah langkah pertama dalam mengakses semua pesanan yang dikirimkan di tempat mereka. Pesanan dapat diterima dan diproses oleh administrator sesuai dengan permintaan pengguna untuk pengiriman atau makan di tempat. Mereka juga mempunyai wewenang untuk mengubah informasi tentang restoran, seperti menu dan harga.
Delivery Services
Agen pengiriman menggunakan Layanan Peta untuk melacak lokasi mereka saat mereka mengautentikasi dan berkomunikasi dengan Layanan Pengiriman. Layanan ini memberi tahu agen tentang pesanan yang ada di dekatnya, memungkinkan mereka menerima dan kemudian mengirimkan pesanan ke klien.
Necessary Components:
Client Interface
Pengguna berinteraksi dengan sistem melalui program desktop, antarmuka web, atau aplikasi seluler.
Load Balancer
Load Balancer memberikan ketersediaan tinggi dengan membagi lalu lintas masuk secara merata di antara beberapa server dan memaksimalkan kinerja sistem.
Authentication and Registration Services
Layanan ini menangani otentikasi dan registrasi pengguna. Semua pengguna, termasuk pelanggan, admin restoran, dan agen pengiriman, menjalani proses otentikasi dan registrasi.
Database
Menyimpan data pengguna, detail restoran, menu, pesanan, dan metadata, database berfungsi sebagai pusat penyimpanan untuk sistem.
Payment Services
Bertanggung jawab untuk mengelola semua data dan layanan terkait pembayaran.
Order Placement Services
Layanan ini bertugas melakukan pemesanan di restoran dan mengelola semua proses terkait pemesanan.
Delivery Services
Berfokus pada operasi terkait pengiriman, layanan ini menemukan agen pengiriman dan memfasilitasi pelacakan paket secara real-time menggunakan Layanan Map.
Restaurant Admin Services
Memungkinkan restoran untuk melihat dan mengelola pesanan yang dilakukan, layanan ini juga memungkinkan admin untuk mengubah menu, harga, dan gambar makanan.
Map Services
Melacak lokasi pengguna dan agen pengiriman, Layanan Map berkolaborasi dengan Layanan Pengirimn dan pelanggan untuk pelacakan lokasi waktu nyata.
Database Design
Tabel Customer:
customer_id (PK): Pengenal unik untuk setiap pelanggan.
customer_name: Mencatat nama pelanggan.
address: Menyimpan alamat pelanggan.
phone_no: Menyimpan nomor telepon pelanggan.
email: Menyimpan alamat email pelanggan.
Tabel Restaurant:
restaurant_id (PK): Pengenal unik untuk setiap restoran.
restaurant_name: Mencatat nama restoran.
payment_details_id (FK): Kunci asing terhubung ke detail pembayaran untuk transaksi.
location: Menyimpan lokasi restoran.
menu_id (FK): Kunci asing terhubung ke menu untuk modifikasi menu.
Tabel Agen Pengiriman:
agent_id (PK): Pengenal unik untuk setiap agen pengiriman.
payment_details_id (FK): Kunci asing terhubung ke detail pembayaran untuk transaksi agen.
phone_no: Menyimpan nomor telepon agen pengiriman.
email: Menangkap alamat email agen pengiriman.
vehicle_number: Mencatat nomor kendaraan yang digunakan oleh agen.
address: Menyimpan alamat permanen agen pengiriman.
Tabel Pesanan:
order_id (PK): Pengenal unik untuk setiap pesanan.
customer_id (FK): Kunci asing terhubung ke tabel pelanggan.
restaurant_id (FK): Kunci asing terhubung ke tabel restoran.
agent_id (FK): Kunci asing terhubung ke tabel agen pengiriman.
time_stamp: Mencatat penanda waktu saat pesanan ditempatkan.
is_delivery: Boolean yang menunjukkan apakah pesanan untuk pengiriman.
delivery_location: Menyimpan lokasi untuk pesanan pengiriman.
items_id (FK): Kunci asing yang menunjuk ke tabel yang menyimpan barang dan kuantitas.
delivery_price: Mencatat biaya pengiriman.
items_price: Menyimpan jumlah total harga barang yang dipesan.
transaction_id: Menyimpan rincian transaksi.
order_status: Mencatat status pesanan.
Tabel NoSQL:
Tabel Penilaian Restoran:
restaurant_id: Pengenal unik untuk setiap restoran.
rating: Menyimpan penilaian yang diberikan untuk restoran.
Tabel Penilaian Agen:
agent_id: Pengenal unik untuk setiap agen pengiriman.
rating: Mencatat penilaian yang diberikan untuk agen pengiriman.
Microservices yang Digunakan
Klien berinteraksi dengan penyeimbang beban untuk berbagai layanan.
Penyeimbang beban memantau kesehatan server dan mengelola lalu lintas.
Layanan API menangani otentikasi pengguna dan komunikasi dengan mikro layanan.
Layanan otentikasi menyediakan otentikasi pengguna yang kokoh dan fungsionalitas pendaftaran pengguna.
Layanan pembayaran memvalidasi pembayaran dan memastikan akurasi transaksi.
CDN menyimpan aset statis seperti gambar dan menu, mengurangi beban server.
Layanan pencarian restoran memungkinkan pengguna untuk mencari restoran berdasarkan kriteria.
Layanan penempatan pesanan mengelola siklus hidup pesanan dan komunikasi dengan restoran dan pelanggan.
Layanan pengiriman memfasilitasi pengambilan pesanan dan pelacakan waktu nyata.
Layanan peta memberikan pembaruan lokasi waktu nyata kepada pelanggan.
Antrian pemberitahuan dan layanan menangani pemberitahuan kepada pengguna.
Cache menyimpan permintaan yang sedang berlangsung untuk pengambilan cepat, meningkatkan kinerja sistem.
Database menyimpan data pengguna, informasi restoran, dan menu, menggunakan SQL untuk data penting dan NoSQL untuk metadata yang kurang penting.
Alur Kerja Sistem:
Pelanggan mendaftar dan melakukan otentikasi.
Pelanggan mencari restoran terdekat dan melakukan pemesanan.
Pesanan diproses, pemberitahuan dikirim, dan pengiriman dilacak secara real-time.
Optimisasi:
Melaksanakan strategi caching, pemrosesan asinkron, indeks database yang efisien, dan optimalisasi penyeimbang beban.
Memasukkan langkah-langkah keamanan seperti enkripsi dan titik akhir API yang aman.
Memantau kinerja secara teratur untuk mengidentifikasi dan mengatasi bottleneck yang potensial, memastikan optimasi sistem.
User Interface Design
Homepage
Menu Page
Payment page
Tracking page
- Get link
- X
- Other Apps
Comments
Post a Comment