Tugas Pertemuan 7 PPL-A
Nama : Muhammad Ahyun Irsyada
NRP : 5025211251
Desain Sistem Manajemen Restoran
Referensi : Desain Sistem Manajemen RestoranDesain Sistem Manajemen Restoran adalah proses merancang sebuah sistem yang terintegrasi untuk mengelola berbagai aspek operasional dalam sebuah restoran. Tujuan utamanya adalah untuk meningkatkan efisiensi operasional, meningkatkan pengalaman pelanggan, dan memudahkan pengelolaan bisnis secara keseluruhan.
Desain Sistem Manajemen Restoran mencakup pengembangan dan implementasi berbagai komponen teknologi informasi yang mendukung fungsi-fungsi kunci dalam operasi restoran. Ini melibatkan perencanaan dan integrasi perangkat lunak dan perangkat keras untuk memungkinkan pengelola restoran dan stafnya mengelola pesanan, inventaris, keuangan, dan aspek lain dari bisnis dengan lebih efisien.
Requirements
Functional requirements - Izinkan pelanggan untuk mencari restoran, melihat menu, memesan.
- Staf restoran dapat mengelola pesanan, memperbarui menu.
- Pelanggan dapat melihat peringkat restoran.
- Pelanggan dapat makan di tempat atau meminta pengiriman.
- Staf dapur dapat melihat dan mengelola pesanan makanan.
- Driver pengiriman dapat melihat pesanan pengiriman yang ditetapkan.
- Pelanggan dapat melacak pesanan mereka.
- Pelanggan dapat memilih metode pembayaran.
Persyaratan non-fungsional
- Skalabilitas: Ini memastikan sistem tetap responsif selama permintaan puncak, beradaptasi dengan penambahan fitur baru, dan menangani fluktuasi lalu lintas.
- Keandalan: Keandalan sangat penting untuk kepercayaan pelanggan dan kelangsungan bisnis. Pengguna harus memiliki keyakinan pada pemrosesan pesanan sistem yang konsisten dan akurat, dan waktu henti harus diminimalkan untuk pemilik restoran dan agen pengiriman yang mengandalkan platform.
- Ketersediaan Tinggi: Sistem yang andal dan selalu dapat diakses meningkatkan kepercayaan pelanggan, mendukung operasi restoran yang efisien, dan pada akhirnya berkontribusi pada keberhasilan seluruh ekosistem manajemen restoran.
- Konsistensi yang kuat: Setiap perubahan harga, menu, lokasi pengguna, detail pembayaran harus mencerminkan dengan cepat.
Asumsi Kapasitas
Berikut adalah beberapa asumsi untuk desain yang diberikan.
- 10 juta restoran
- Pengguna aktif harian = 100 juta
- Pengguna aktif per detik = 1160 pengguna/detik (perkiraan)
- Rata-rata Pesanan per menit = 250.000 / menit
- Rata-rata Order per detik = 4200 order/detik (perkiraan)
- Pesanan puncak = 2 * Pesanan rata-rata per menit = 500.000 pesanan / menit
Estimasi Penyimpanan
Mari kita asumsikan rata-rata:
- Setiap baris pelanggan di DB adalah 1 KB (dengan alamat, info profil, dll.)
- Setiap restoran = 2 MB (detail, menu, foto, dll.)
- Setiap pesanan = 1 KB.
Total penyimpanan yang dibutuhkan:
100 juta pelanggan x 1 KB per pengguna = 100 GB10 juta restoran x 2 MB per restoran = 20 TB
500.000 pesanan per menit = 72 juta pesanan per hari (sekitar)
72 juta pesanan per hari x 1 KB per pesanan = 72 GB per hari
Dengan asumsi kami mempertahankan pesanan selama 3 tahun terakhir:
Desain Tingkat Tinggi
Komponen yang diperlukan:
Desain Database
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.
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 memulai proses pendaftaran melalui layanan pendaftaran, memberikan semua detail yang diperlukan dan menerima ID pelanggan unik.
- Pelanggan yang kembali menggunakan layanan otentikasi untuk verifikasi.
- Selanjutnya, pelanggan menjelajahi restoran terdekat menggunakan layanan pencarian, membuat pilihan dari detail dan menu restoran yang disimpan CDN.
- Setelah membuat pilihan, Layanan Penempatan Pesanan menangkap spesifik pesanan, yang mencakup item dan jumlah. Pengguna kemudian memilih pengiriman makanan atau makan di tempat, dengan sistem melacak status pesanan.
- Jasa Penempatan Pesanan menyalurkan pesanan ke Antrian Pesanan, selanjutnya diambil oleh Jasa Penempatan Restoran untuk penerimaan dan pengolahan oleh admin restoran.
- Dalam skenario makan di tempat, ketika makanan sudah siap, Layanan Penempatan Pesanan memberi tahu pelanggan melalui Antrian Pemberitahuan. Layanan Pemberitahuan menangani permintaan, mengirimkan pemberitahuan kepada pelanggan.
Di bawah ini adalah proses langkah demi langkah untuk pengiriman:
- Layanan Penempatan Pesanan memberi tahu Antrean Pengiriman, mendorong Layanan Pengiriman untuk menemukan agen pengiriman terdekat.
- Setelah agen menerima pesanan, mereka terhubung dengan pengguna melalui Map Services, memungkinkan pelanggan untuk melacak lokasi agen secara berkala.
- Transaksi pembayaran difasilitasi oleh Layanan Pembayaran, mengarahkan ke portal pembayaran bank masing-masing atau layanan UPI.
- Setelah pengiriman berhasil, status pesanan diperbarui menjadi "terkirim," dengan detail pesanan disimpan dalam database.
- Pelanggan juga dapat memberikan peringkat restoran, disimpan dalam database NoSQL.
Optimisasi:
Untuk lebih meningkatkan efisiensi Sistem Manajemen Restoran, beberapa optimasi dapat dipertimbangkan:
- Strategi caching, seperti menerapkan Jaringan Pengiriman Konten (CDN) untuk aset statis seperti gambar dan menu, dapat secara signifikan meningkatkan waktu respons dan mengurangi beban server.
- Menggunakan pemrosesan asinkron untuk tugas yang tidak sensitif terhadap waktu, seperti pemberitahuan pesanan, dapat meningkatkan responsivitas sistem.
- Strategi pengindeksan, sharding, dan replikasi database yang efisien harus diterapkan untuk memastikan pengambilan data yang cepat dan ketersediaan tinggi.
- Load balancing dapat dioptimalkan secara dinamis untuk mendistribusikan lalu lintas secara efektif, dan sistem harus menggabungkan langkah-langkah keamanan menyeluruh, termasuk enkripsi untuk data sensitif dan mengamankan titik akhir API.
- Pemantauan dan analisis kinerja secara teratur akan membantu mengidentifikasi dan mengatasi potensi kemacetan, memastikan optimalisasi Manajemen Restoran yang berkelanjutan.
Komentar
Posting Komentar