Pertemuan 7 HLD LLD

 

 

High Level Design and Low Level Design 

Food Delivery System

 

 

Deskripsi

Tujuan dari perancangan sistem  restoran adalah untuk menciptakan  platform yang efisien dan terintegrasi untuk mengelola berbagai aspek operasional  restoran.Seiring dengan pertumbuhan industri restoran yang pesat dan ekspektasi pelanggan yang terus meningkat, penting bagi restoran untuk memiliki sistem yang siap menghadapi tantangan-tantangan ini.Sistem ini bertujuan untuk menyelesaikan berbagai permasalahan yang dihadapi  restoran, mulai dari pengelolaan menu hingga analisis data pelanggan.Sistem ini  membantu meningkatkan efisiensi operasional, meningkatkan pengalaman pelanggan, dan mengoptimalkan kinerja perusahaan secara keseluruhan melalui pendekatan terencana dan terstruktur.Sistem ini dirancang untuk memberikan landasan yang kuat bagi kesuksesan dan pertumbuhan restoran dalam lingkungan bisnis yang semakin kompetitif dengan memanfaatkan teknologi terkini dan praktik terbaik pengembangan perangkat lunak.

Persyaratan Fungsional

  • Mengizinkan pelanggan untuk mencari restoran, melihat menu, dan memesan makanan.
  • Staf restoran dapat mengelola pesanan dan memperbarui menu.
  • Pelanggan dapat melihat rating restoran.
  • Pelanggan bisa memilih untuk makan di tempat atau meminta pengiriman.
  • Staf dapur dapat melihat dan mengelola pesanan makanan.
  • Pengemudi pengiriman dapat melihat pesanan pengiriman yang ditugaskan.
  • Pelanggan dapat melacak pesanan mereka.
  • Pelanggan dapat memilih metode pembayaran.


  • Persyaratan non Fungsional
     
  • Skalabilitas: 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 kontinuitas bisnis. Pengguna harus memiliki keyakinan pada pemrosesan pesanan yang konsisten dan akurat, dan downtime harus diminimalkan untuk pemilik restoran dan agen pengiriman yang bergantung pada platform.
  • Ketersediaan Tinggi: Sistem yang andal dan selalu tersedia meningkatkan kepercayaan pelanggan, mendukung operasi restoran yang efisien, dan akhirnya berkontribusi pada kesuksesan seluruh ekosistem manajemen restoran.
  • Konsistensi Kuat: Setiap perubahan pada harga, menu, lokasi pengguna, dan detail pembayaran harus segera tercermin.
  •  
     

     

     
     

     
     High Level Design 
    High-level-design-of-restaurant-management-system

    Client Interface

    Pelanggan berinteraksi dengan sistem melalui aplikasi seluler, antarmuka web, atau aplikasi desktop.Pilihan Pembayaran: Demi kenyamanan pelanggan kami, kami menawarkan berbagai pilihan pembayaran yang fleksibel.

    Load Balancer

    Mendistribusikan lalu lintas yang masuk secara merata di beberapa server, penyeimbang beban meningkatkan ketersediaan yang 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 pengantaran, menjalani proses autentikasi dan registrasi.

    Database 

    Menyimpan data pengguna, detail restoran, menu, pesanan, dan metadata, database berfungsi sebagai tempat penyimpanan pusat untuk sistem.
    Layanan Pembayaran

    Payment Services

     Bertanggung jawab untuk mengelola semua data dan layanan yang berhubungan dengan pembayaran.

    Order Placement Services

    Layanan ini bertugas untuk melakukan pemesanan di restoran dan mengelola semua proses yang berhubungan dengan pemesanan.

    Delivery Services

    Berfokus pada operasi yang berhubungan dengan pengiriman, layanan ini menempatkan agen pengiriman dan memfasilitasi pelacakan paket secara real-time menggunakan Layanan Peta.

    Restaurant Admin Services

     Memungkinkan restoran untuk melihat dan mengelola pesanan yang masuk, layanan ini juga memungkinkan admin untuk memodifikasi menu, harga, dan gambar makanan.
     

    Map Services

    Melacak lokasi pengguna dan agen pengantaran, Layanan Peta berkolaborasi dengan Layanan Pengantaran dan pelanggan untuk pelacakan lokasi secara real-time.
     

    Low Level Design

    restaurant-design-low-level-microservices
    Klien

    Pelanggan melakukan permintaan ke load balancer untuk berbagai layanan, seperti registrasi pengguna, pencarian restoran, dan penempatan pesanan. Selain itu, agen pengiriman dan admin restoran menggunakan load balancer untuk mengirim permintaan pendaftaran atau otentikasi.

    Load Balancer

    Komponen vital ini memantau kesehatan server, mengalihkan lalu lintas jika terjadi kegagalan untuk memastikan waktu henti yang minimal. Tidak hanya meningkatkan keamanan dengan memitigasi serangan DDoS, tetapi juga memainkan peran penting dalam penskalaan aplikasi. Tersedia dalam bentuk perangkat keras, perangkat lunak, dan berbasis cloud, load balancer bertindak sebagai manajer lalu lintas, mengarahkan aliran dalam infrastruktur TI modern.

    Layanan API

    Melayani dua fungsi utama, layanan API menangani otentikasi pengguna, memastikan hanya pengguna yang berwenang yang mengakses sistem. Setelah diautentikasi, layanan ini bertindak sebagai perantara untuk komunikasi dengan berbagai layanan mikro seperti penempatan pesanan, pembayaran, dan pencarian. Sebagai contoh, mengimplementasikan Kafka untuk antrian pesan memastikan komunikasi yang andal antara layanan mikro.

    Layanan Otentikasi

    Menawarkan otentikasi pengguna yang kuat dan fungsi pendaftaran pengguna, layanan ini sangat penting untuk keamanan dan penerimaan pengguna baru. Proses registrasi memberikan ID pengguna yang unik dan menyimpan informasi pengguna yang penting, termasuk nama, alamat, dan detail pembayaran, dengan aman di dalam basis data sistem.

    Layanan Pembayaran

    Menawarkan berbagai pilihan pembayaran, Layanan Pembayaran memastikan fleksibilitas dan kenyamanan untuk menyelesaikan tagihan. Layanan ini 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, mengintegrasikan 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. Sebagai contoh, menggunakan Akamai atau Amazon CloudFront untuk layanan CDN mengoptimalkan waktu pemuatan halaman menu, sehingga meningkatkan pengalaman pengguna secara keseluruhan.

    Layanan Pencarian Restoran

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

    Layanan Peta

    Mencari agen terdekat dan melacak pesanan, Layanan Peta memberikan pembaruan lokasi secara real-time kepada pelanggan. Dengan menggunakan teknologi seperti Google Maps, layanan ini menghubungkan pengguna ke layanan pelacakan pesanan melalui polling yang panjang, meminimalkan lalu lintas sekaligus memberikan pembaruan yang tepat waktu.

    Queue Notification

    Layanan yang ingin mengirim pemberitahuan kepada pengguna mendorong pesan ke Antrian Pemberitahuan, dengan Layanan Pemberitahuan yang menerima permintaan ini, dan kemudian mengirimkan pemberitahuan kepada pengguna. Sebagai contoh, Kafka dapat digunakan untuk mengimplementasikan antrean notifikasi yang kuat dan terukur.

    Cache

    Menyimpan permintaan yang sedang berlangsung untuk diambil dengan cepat, cache menyediakan akses cepat ke pelanggan dan layanan mikro lainnya. Cache Redis, misalnya, secara efisien menyimpan dan mengambil data yang sering diakses, sehingga meningkatkan performa sistem secara keseluruhan.

    Basis Data

    Menyimpan data pengguna, informasi restoran, dan menu, basis data dibagi dan direplikasi di berbagai server. Horizontal sharding, 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. Sebagai contoh, MongoDB dapat digunakan karena fleksibilitasnya dalam menangani data yang tidak terstruktur seperti peringkat dan informasi agen.

    Comments

    Popular posts from this blog

    Tugas 1 RK Studi Kasus PeduliLindungi

    ETS PPL

    Tugas Kelompok Rekayasa Kebutuhan 1