Studi Kasus 1 - Desain Sistem Restaurant

TUGAS 6 PPL - STUDI KASUS 1 - DESAIN SISTEM RESTAURAN


Anggota 1 :

Nama     : I Gusti Ngurah Ervan Juli Ardana NRP        : 5025211205

Anggota 2 :

Nama     : Rayhan Almer Kusumah NRP        : 5025211115

Kelas      : PPL - A Tahun     : 2024

Dalam pertemuan mata kuliah Perancangan Perangkat Lunak kali ini, tugas yang diberikan kepada kami adalah mendeskripsikan bagaimana Low Level Design dan High Level Designnya dari sistem food delivery/restaurant berdasarkan jurnal/dokumen perancangan perangkat lunak yang kami gunakan sebagai referensi.


High Level Design and Low Level Design Sistem Restaurant


Dengan majunya teknologi, berbagai sektor industri, termasuk industri restoran, telah mengadopsi pendekatan yang lebih modern. Kemunculan Sistem Manajemen Restoran bertujuan untuk meningkatkan efisiensi operasional serta memperbaiki pengalaman pelanggan. Maka dari itu, saya berencana untuk mengembangkan sebuah platform manajemen restoran yang memudahkan pengguna dalam menemukan restoran terdekat, menelusuri menu, melihat ulasan, dan melakukan pemesanan secara online dengan cepat dan fleksibel. Pengguna juga dapat memilih antara makan di tempat atau memesan antar ke lokasi mana pun dalam jangkauan tertentu. Sebelum mengembangkan sebuah platform, kita harus mengumpulkan semua requirement yang dibutuhkan diantaranya:



A. Idea/ Problem
berikut adalah beberapa ide dan masalah yang  menjadi fokus pengembangan platform manajemen restoran :

1. Integrasi Lokasi dan Pencarian Restoran: Memastikan platform dapat mengakses lokasi pengguna dan menampilkan restoran-restoran terdekat berdasarkan preferensi dan kriteria tertentu seperti jenis masakan, harga, atau rating.
2. Ketersediaan Menu dan Informasi Restoran: Memastikan platform menyediakan informasi lengkap tentang menu, harga, jam operasional, lokasi, dan ulasan restoran untuk membantu pengguna membuat keputusan yang tepat.
3. Pemesanan Online yang Mudah: Memiliki antarmuka yang intuitif dan ramah pengguna untuk melakukan pemesanan secara online dengan cepat dan efisien. Hal ini termasuk pemilihan waktu, jumlah tamu, dan opsi pengiriman atau pengambilan pesanan.
4. Fleksibilitas dalam Pemesanan: Memungkinkan pengguna untuk memilih antara makan di tempat atau memesan antar ke lokasi mana pun dalam jangkauan tertentu sesuai dengan preferensi dan kenyamanan mereka.
5. Manajemen Pesanan yang Efektif: Memastikan bahwa sistem dapat mengelola pesanan dengan baik, termasuk konfirmasi pesanan, pembaruan status pesanan, dan integrasi dengan sistem pembayaran yang aman dan andal.
6. Personalisasi Pengalaman Pengguna: Mengumpulkan data preferensi dan riwayat pesanan pengguna untuk menyajikan rekomendasi restoran atau menu yang sesuai dengan selera mereka.
7. Umpan Balik dan Ulasan Pengguna: Memfasilitasi pengguna untuk memberikan ulasan dan umpan balik tentang pengalaman mereka dengan restoran tertentu untuk membantu pengguna lain dalam membuat keputusan yang lebih baik.
8. Keamanan Data Pengguna: Menjaga keamanan data pengguna dengan mengimplementasikan protokol keamanan yang kuat untuk melindungi informasi pribadi dan pembayaran pengguna.

B. Functional Requirements

  • Pencarian Restoran: Platform harus memungkinkan pelanggan untuk melakukan pencarian restoran berdasarkan lokasi, jenis masakan, harga, dan rating.
  • Tampilan Menu: Pelanggan harus dapat melihat menu lengkap dari restoran yang dipilih, termasuk harga, deskripsi makanan, dan gambar-gambar menarik.
  • Pemesanan: Pelanggan harus bisa memesan makanan dengan mudah melalui platform, termasuk pemilihan jumlah dan waktu pemesanan.
  • Manajemen Pesanan oleh Staf: Staf restoran harus memiliki akses untuk mengelola pesanan yang masuk, termasuk konfirmasi pesanan, memperbarui status pesanan, dan mengelola inventaris.
  • Peringkat Restoran: Pelanggan harus dapat melihat peringkat dan ulasan dari restoran untuk membantu mereka dalam membuat keputusan.
  • Opsi Makan di Tempat atau Pengiriman: Pelanggan harus diberikan pilihan untuk makan di tempat atau meminta pengiriman pesanan ke lokasi mereka.
  • Manajemen Pesanan oleh Staf Dapur: Staf dapur harus dapat melihat dan memproses pesanan makanan yang masuk dengan cepat dan efisien.
  • Manajemen Pengiriman oleh Pengemudi: Pengemudi pengiriman harus dapat melihat pesanan pengiriman yang telah ditugaskan kepada mereka dan memperbarui status pengiriman.
  • Pelacakan Pesanan: Pelanggan harus bisa melacak status pesanan mereka secara real-time, termasuk ketika pesanan diproses, dikirim, dan diterima.
  • Pilihan Pembayaran: Pelanggan harus diberikan pilihan metode pembayaran yang fleksibel, seperti kartu kredit, transfer bank, atau pembayaran tunai saat pengiriman.
  • Notifikasi dan Konfirmasi: Sistem harus mengirimkan notifikasi kepada pelanggan tentang konfirmasi pesanan, pembaruan status, dan informasi pengiriman.
  • Integrasi dengan Sistem Pembayaran: Platform harus terintegrasi dengan sistem pembayaran yang aman dan dapat diandalkan untuk memproses transaksi dengan lancar.
  • Rekomendasi Personalisasi: Platform dapat memberikan rekomendasi personalisasi berdasarkan riwayat pemesanan pelanggan untuk meningkatkan pengalaman pengguna.
  • Pembaruan Menu oleh Staf Restoran: Staf restoran harus memiliki akses untuk memperbarui menu mereka secara berkala, termasuk menambahkan atau menghapus item-menu dan mengatur harga.
  • Analisis Data: Platform harus menyediakan alat analisis data untuk membantu restoran memahami tren pelanggan, kinerja menu, dan area potensial untuk perbaikan.

C. Non Functional Requirements

  • Skalabilitas: Sistem harus mampu menangani lonjakan permintaan pengguna, baik dalam hal jumlah pengguna yang meningkat secara tiba-tiba maupun penambahan fitur baru. Ini termasuk kemampuan untuk mengelola fluktuasi lalu lintas dengan efisien dan tanpa penurunan kinerja yang signifikan.
  • Keandalan: Ketersediaan sistem yang konsisten dan akurat sangat penting untuk membangun kepercayaan pelanggan. Proses pemesanan harus terjamin konsistensi dan akurasi, sehingga pelanggan dan pemilik restoran merasa yakin dengan penggunaan platform ini. Waktu henti harus diminimalkan untuk memastikan kelancaran operasional bagi semua pihak yang terlibat.
  • Ketersediaan Tinggi: Platform harus selalu tersedia dan dapat diakses oleh pengguna, baik pelanggan maupun staf restoran. Ketersediaan tinggi ini tidak hanya meningkatkan kepercayaan pelanggan, tetapi juga mendukung operasional restoran yang efisien dan kontribusi terhadap keseluruhan keberhasilan ekosistem manajemen restoran.
  • Konsistensi yang Kuat: Setiap perubahan yang terjadi, seperti perubahan harga, menu, lokasi pengguna, atau rincian pembayaran, harus terlihat secara cepat dan konsisten di seluruh platform. Hal ini akan memastikan bahwa pengguna mendapatkan pengalaman yang mulus dan tidak ada kebingungan terkait dengan informasi yang disajikan.
  • Keamanan Data: Perlindungan data pengguna harus menjadi prioritas utama. Sistem harus mematuhi standar keamanan yang ketat untuk melindungi informasi pribadi dan pembayaran pengguna dari akses yang tidak sah atau kebocoran data.
  • Performa yang Optimal: Sistem harus memberikan kinerja yang optimal dalam hal waktu respons dan waktu muat halaman. Pengguna harus dapat mengakses dan menggunakan platform dengan lancar tanpa mengalami penundaan yang berarti.
  • Kemudahan Penggunaan: Antarmuka pengguna harus ramah pengguna dan mudah dinavigasi, sehingga pengguna dari berbagai latar belakang dapat menggunakan platform dengan mudah tanpa perlu pelatihan tambahan.
  • Kompatibilitas: Platform harus kompatibel dengan berbagai perangkat dan browser yang berbeda, sehingga pengguna dapat mengaksesnya dari mana saja dan kapan saja sesuai dengan preferensi mereka.
D. Capacity Assumptions
  • Storage Estimation :
Estimasi memiliki 1000.000 pelanggan
Estimasi memiliki 1000 Resoran

Setiap baris pelanggan di DB berukuran 1 KB (dengan alamat, info profil, dll.)
Setiap restoran = 2 MB (detail, menu, foto, dll.)
Setiap pesanan = 1 KB.

Total yang dibutuhkan :

1 juta pelanggan x 1 KB per pengguna = 1 GB
1000 restoran x 2 MB per restoran = 2 GB
5.000 pesanan per jam = 120.000 pesanan per hari (perkiraan)
120.000 pesanan per hari x 1 KB per pesanan = 0,12 GB per hari
Dengan asumsi kami mempertahankan pesanan selama 3 tahun terakhir:

0,12 GB per hari x 365 hari x 3 tahun = 131,4 GB (kurang-lebih)

E. High Level Design
Sistem ini dapat dibagi menjadi beberapa bagian diantaranya:

1. Pelanggan (Customer):

  • Antarmuka Pengguna: Memberikan antarmuka pengguna yang ramah pengguna untuk mencari restoran, melihat menu, melakukan pemesanan, dan melacak pesanan mereka.
  • Fitur Pencarian: Menyediakan fitur pencarian yang canggih untuk memungkinkan pelanggan menemukan restoran berdasarkan lokasi, jenis masakan, harga, dan peringkat.
  • Manajemen Pesanan: Memberikan akses kepada pelanggan untuk melihat dan mengelola pesanan mereka, termasuk konfirmasi pesanan, pembaruan status, dan pembatalan pesanan jika diperlukan.
  • Pilihan Pembayaran: Memungkinkan pelanggan untuk memilih metode pembayaran yang nyaman, seperti kartu kredit, transfer bank, atau pembayaran tunai saat pengiriman.
2. Restoran:
  • Antarmuka Staf Restoran: Memberikan antarmuka khusus bagi staf restoran untuk mengelola pesanan yang masuk, memperbarui menu, dan mengelola inventaris.
  • Manajemen Pesanan: Memungkinkan staf restoran untuk menerima, memproses, dan memperbarui status pesanan dengan cepat dan efisien.
  • Manajemen Menu: Memberikan akses bagi restoran untuk memperbarui menu mereka, menambahkan atau menghapus item-menu, mengatur harga, dan mengelola ketersediaan stok.
  • Pelaporan dan Analisis: Menyediakan fitur pelaporan dan analisis untuk membantu restoran memahami kinerja mereka, tren penjualan, dan preferensi pelanggan.
3. Driver:
  • Antarmuka Pengemudi: Memberikan antarmuka khusus bagi pengemudi pengiriman untuk melihat pesanan pengiriman yang ditugaskan kepada mereka, melacak lokasi pengiriman, dan memperbarui status pengiriman.
  • Manajemen Pengiriman: Memungkinkan pengemudi untuk menerima, mengambil, dan mengirimkan pesanan dengan efisien, serta memberikan kemampuan untuk melaporkan masalah atau penundaan dalam pengiriman.
4. Admin:
  • Antarmuka Admin: Memberikan antarmuka administrasi yang memungkinkan admin untuk mengelola pengguna, restoran, pengemudi, dan aspek lain dari platform.
  • Manajemen Pengguna: Memungkinkan admin untuk mengelola akun pengguna, mengonfirmasi pendaftaran baru, menangani masalah keamanan, dan menghapus akun yang tidak aktif atau melanggar.
  • Manajemen Restoran dan Pengemudi: Memungkinkan admin untuk mengelola daftar restoran yang bekerja sama dengan platform, memverifikasi informasi, dan menangani pertanyaan atau masalah yang muncul dari restoran atau pengemudi.
Secara umum, komponen penting yang dibutuhkan sebagai berikut :


  • Client Interface
Pelanggan terlibat dengan sistem melalui aplikasi seluler, antarmuka web, atau aplikasi desktop.

  • Load Balancer
Mendistribusikan lalu lintas masuk secara merata ke beberapa server, penyeimbang beban meningkatkan ketersediaan tinggi dan mengoptimalkan kinerja secara keseluruhan.

  • 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 Peta.

  • 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 Peta berkolaborasi dengan Layanan Pengiriman dan pelanggan untuk pelacakan lokasi waktu nyata.

F. Low Level Design


  1. Database :
  • Customer
Customer_Id (PK): Unique identifier for each customer.
Customer_name: Stores the name of the customer.
Address: Records the address of the customer.
Phone_no: Stores the phone number of the customer.
Email: Captures the email address of the customer.
  • Restaurant
Restaurant_id (PK): Unique identifier for each restaurant.
Restaurant_name: Stores the name of the restaurant.
Payment_details_id (FK): Foreign key linked to the payment details table for crediting transactions.
Location: Records the location of the restaurant.
Menu_Id (FK): Foreign key pointing to the menu table for menu modifications by the restaurant admin.

  • Delivery agent
Agent_id (PK): Unique identifier for each delivery agent.
Payment_details_id (FK): Foreign key linked to the payment details table for agent’s account information.
Phone_no: Stores the phone number of the delivery agent.
Email: Captures the email address of the delivery agent.
Vehicle_number: Records the vehicle number used by the agent for deliveries.
Address: Stores the permanent address of the delivery agent.
  • Order
Order_id (PK): Unique identifier for each order.
Customer_id (FK): Foreign key linking to the customer table.
Restaurant_id (FK): Foreign key linking to the restaurant table.
Agent_id (FK): Foreign key linking to the delivery agent table (NULL for dine-in orders).
Time_stamp: Records the timestamp when the order was placed.
Is_delivery: Boolean value indicating whether the order is for delivery (true) or dine-in (false).
Delivery_location: Stores the location for delivery orders (NULL for dine-in).
Items_id (FK): Foreign key pointing to the table storing items and quantities.
Delivery_price: Records the delivery charges calculated by the Delivery Services based on delivery proximity.
Items_price: Stores the total sum of the price of ordered items.
Order_status: Records the status of the order (e.g., delivered, cancelled).
Transaction_id: Stores the transaction details for the specific order.

  • Restaurant_rating
Restaurant_id: Unique identifier for each restaurant.
Rating: Stores the rating given to the restaurant.

  • Agent_rating
Agent_id: Unique identifier for each delivery agent.
Rating: Records the rating given to the delivery agent.

2. Microservices

  • Client
Pelanggan memulai permintaan ke penyeimbang beban untuk berbagai layanan, seperti pendaftaran pengguna, pencarian restoran, dan penempatan pesanan. Selain itu, agen pengiriman dan admin restoran menggunakan penyeimbang beban untuk mengirim permintaan registrasi atau otentikasi.

  • Load Balancer
Komponen penting ini memantau kesehatan server, mengubah rute lalu lintas jika terjadi kegagalan untuk memastikan waktu henti yang minimal. Tidak hanya meningkatkan keamanan dengan memitigasi serangan DDoS, namun juga memainkan peran penting dalam penskalaan aplikasi. Tersedia dalam bentuk perangkat keras, perangkat lunak, dan berbasis cloud, penyeimbang beban bertindak sebagai pengelola lalu lintas, mengarahkan aliran dalam infrastruktur TI modern.
  • API Services
Melayani dua fungsi utama, layanan API menangani otentikasi pengguna, memastikan hanya pengguna yang berwenang yang mengakses sistem. Setelah diautentikasi, layanan ini bertindak sebagai perantara komunikasi dengan berbagai layanan mikro seperti penempatan pesanan, pembayaran, dan pencarian. Misalnya, penerapan Kafka untuk antrian pesan memastikan komunikasi yang andal antar layanan mikro.

  • Authentication Services
Menawarkan fungsionalitas autentikasi pengguna dan registrasi pengguna yang kuat, layanan ini sangat penting untuk keamanan dan orientasi pengguna baru. Proses pendaftaran memberikan ID pengguna unik dan menyimpan informasi penting pengguna dengan aman, termasuk nama, alamat, dan rincian pembayaran, dalam database sistem
  • Payment Services
Menawarkan beragam pilihan pembayaran, Layanan Pembayaran memastikan fleksibilitas dan kenyamanan untuk penyelesaian tagihan. Mereka memvalidasi pembayaran, mengonfirmasi keakuratan transaksi dan ketersediaan dana. Proses ini mencegah kesalahan, penipuan, atau pembayaran yang gagal, memastikan pengalaman pembayaran yang lancar dan dapat dipercaya. Misalnya, integrasi dengan gateway pembayaran seperti Stripe atau PayPal meningkatkan keamanan transaksi.
  • CDN
Mengkhususkan diri dalam menyimpan aset statis seperti gambar hidangan dan menu, CDN mengurangi beban pada server utama, sehingga meningkatkan aksesibilitas konten. Diposisikan secara strategis, CDN memastikan pengambilan data yang cepat, meminimalkan latensi, dan mempercepat pengiriman konten. Misalnya, penggunaan layanan Akamai atau Amazon CloudFront untuk CDN mengoptimalkan waktu pemuatan halaman menu, sehingga meningkatkan pengalaman pengguna secara keseluruhan.

  • Restaurant Search Services
Memungkinkan pengguna untuk mencari restoran berdasarkan kriteria seperti peringkat dan masakan, layanan ini memanfaatkan ElasticSearch untuk pengambilan data cepat dalam database terdistribusi. Misalnya, pengguna dapat dengan mudah menemukan restoran Italia berperingkat teratas di sekitar mereka dengan memanfaatkan kemampuan pencarian ElasticSearch yang canggih.

  • Order Placement Services
Mengelola seluruh siklus hidup pesanan, layanan ini memberikan informasi kepada restoran dan memperbarui status pesanan kepada pelanggan. Antrean Pesanan memfasilitasi komunikasi dengan Layanan Restoran, sedangkan permintaan pengiriman mencakup interaksi dengan Layanan Pengiriman. Menerapkan Apache Kafka sebagai perantara pesan memastikan pemrosesan pesanan dan komunikasi antar layanan yang efisien.

  • Delivery Services
Memfasilitasi pengambilan pesanan, layanan ini membangun komunikasi yang lancar antara agen dan pelanggan, memungkinkan pelacakan pesanan secara real-time. Mereka berperan penting dalam memastikan keberhasilan pengiriman dan mengumpulkan umpan balik pelanggan. Misalnya, Layanan Pengiriman secara efisien mengoordinasikan pengiriman makanan dari restoran ke pelanggan menggunakan alat pelacakan waktu nyata seperti Google Maps.

  • Map Services
Mencari agen terdekat dan melacak pesanan, map services menyediakan pembaruan lokasi waktu nyata kepada pelanggan. Dengan menggunakan teknologi seperti Google Maps, ini menghubungkan pengguna ke layanan pelacakan pesanan melalui polling yang panjang, meminimalkan lalu lintas sambil memberikan pembaruan tepat waktu.
  • Notification Queue
Layanan yang ingin mengirim pemberitahuan kepada pengguna memasukkan pesan ke Antrean Pemberitahuan, dengan Layanan Pemberitahuan menerima permintaan ini, kemudian mengirimkan pemberitahuan kepada pengguna. Misalnya, Kafka dapat digunakan untuk mengimplementasikan antrean notifikasi yang kuat dan terukur.
  • Cache
Menyimpan permintaan pengambilan cepat yang sedang berlangsung, cache menyediakan akses cepat ke pelanggan dan layanan mikro lainnya. Cache Redis, misalnya, menyimpan dan mengambil data yang sering diakses secara efisien, sehingga meningkatkan kinerja sistem secara keseluruhan.
  • Database
Menyimpan data pengguna, informasi restoran, dan menu, database dibagikan dan direplikasi di berbagai server. Sharding horizontal, yang dicontohkan oleh MySQL untuk konsistensi tinggi dalam data pengguna dan transaksi, dilengkapi dengan NoSQL untuk metadata yang tidak penting seperti peringkat restoran dan detail agen pengiriman. Misalnya, MongoDB dapat digunakan karena fleksibilitasnya dalam menangani data tidak terstruktur seperti peringkat dan informasi agen.

3. Interface



Comments

Popular posts from this blog

ETS Perancangan Perangkat Lunak

High Level Design