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
Persyaratan non Fungsional
High Level Design

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

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.
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.
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.
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.
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
Post a Comment