Perancangan Perangkat Lunak - Tugas Pertemuan 6 - Low Level Design (LLD)

Nama : Timothy Hosia Budianto

NRP : 5025211098

Kelas : PPL - A

Tahun : 2024


Low Level Design 

Low Level Design (LLD) adalah tahap dalam pengembangan perangkat lunak di mana konsep-konsep yang telah diidentifikasi dalam desain tingkat tinggi (High Level Design atau HLD) diimplementasikan menjadi rancangan teknis yang lebih mendetail. Biasanya, tahap ini dilakukan setelah spesifikasi fungsional telah ditetapkan dan menjelaskan secara rinci bagaimana setiap fitur atau komponen akan diwujudkan. Fokus utama dalam desain tingkat rendah adalah pada aspek teknis dan implementasi konkret dari perangkat lunak yang sedang dikembangkan. Ini mencakup pemecahan masalah teknis seperti pemilihan struktur data yang tepat, algoritma yang akan digunakan, desain antarmuka yang akan dibangun, dan implementasi rinci dari fitur-fitur yang telah direncanakan pada tahap desain tingkat tinggi. Pada pertemuan mata kuliah ini, kami diberi tugas untuk berlatih dalam pembuatan desain tingkat tinggi (HLD) dan desain tingkat rendah (LLD) dalam dokumen pengembangan perangkat lunak.

Low Level Design Facebook




Untuk Pemilihan Database

Dalam memilih arsitektur database yang sesuai, sistem manajemen basis data relasional (RDBMS) seperti SQL dianggap penting untuk tabel-tabel yang mengandung informasi kritis, seperti detail pelanggan, restoran, dan agen. Pilihan ini dibuat karena kebutuhan akan konsistensi tinggi, yang memastikan refleksi yang cepat dan akurat terhadap setiap perubahan, seperti perubahan detail pembayaran atau harga menu.

Kepatuhan SQL terhadap properti ACID (Atomicity, Consistency, Isolation, Durability) membuatnya sangat cocok untuk menjaga integritas data dan memastikan keandalan dalam skenario-skenario semacam ini.

Sebaliknya, untuk data yang memerlukan persyaratan konsistensi yang lebih santai, seperti peringkat restoran dan agen, basis data NoSQL adalah pilihan yang bijaksana.

NoSQL, yang ditandai dengan properti BASE (Basically Available, Soft state, Eventually consistent), sejalan dengan sifat dataset ini. Ini memungkinkan fleksibilitas yang lebih besar, mengakomodasi sifat dinamis dan non-kritis dari informasi peringkat, di mana konsistensi yang langsung dan ketat bukanlah perhatian utama.

Pendekatan hibrida ini memanfaatkan kekuatan kedua basis data SQL dan NoSQL, menyesuaikan arsitektur database dengan kebutuhan khusus dan karakteristik data yang dikelola.

Komunikasi dengan Server

Menggunakan API RESTful untuk Sistem Manajemen Restoran membuktikan keunggulan karena kesederhanaan, antarmuka yang seragam, dan keadaan tanpa keadaan (statelessness). Desain REST yang langsung, dengan menggunakan metode-metode standar HTTP, memfasilitasi kemudahan penggunaan dan pengembangan, mempromosikan interoperabilitas di berbagai platform dan bahasa pemrograman.

Pendekatan yang berpusat pada sumber daya cocok dengan entitas-entitas dalam sistem, dan keadaan tanpa keadaan memungkinkan skalabilitas horizontal, yang penting untuk menangani lalu lintas tinggi yang diantisipasi dalam sistem manajemen restoran. Selain itu, API RESTful mendukung fleksibilitas dalam format data, penanganan kesalahan yang terstandarisasi melalui kode status HTTP, dan mekanisme caching, yang berkontribusi pada komunikasi yang efisien, identifikasi kesalahan, dan peningkatan kinerja secara keseluruhan.

Microservices Used



Klien
Pelanggan menginisiasi permintaan ke pengimbang beban untuk berbagai layanan, seperti pendaftaran pengguna, pencarian restoran, dan penempatan pesanan. Selain itu, agen pengiriman dan administrator restoran menggunakan pengimbang beban untuk mengirim permintaan pendaftaran atau otentikasi.

Pengimbang Beban
Komponen penting ini memantau kesehatan server, mengalihkan lalu lintas dalam kasus kegagalan untuk memastikan waktu tidak aktif minimal. Tidak hanya meningkatkan keamanan dengan mengurangi serangan DDoS, tetapi juga memainkan peran krusial dalam penskalaan aplikasi. Tersedia dalam bentuk perangkat keras, perangkat lunak, dan berbasis cloud, pengimbang beban bertindak sebagai pengatur lalu lintas, mengarahkan aliran dalam infrastruktur TI modern.

Layanan API
Melayani dua fungsi utama, layanan API mengelola otentikasi pengguna, memastikan hanya pengguna yang diotorisasi yang mengakses sistem. Setelah diotentikasi, layanan ini bertindak sebagai perantara untuk komunikasi dengan berbagai mikro layanan seperti penempatan pesanan, pembayaran, dan pencarian. Sebagai contoh, implementasi Kafka untuk antrian pesan memastikan komunikasi yang handal antar mikro layanan.

Layanan Otentikasi
Menyediakan fungsionalitas otentikasi pengguna dan pendaftaran pengguna yang kuat, layanan ini penting untuk keamanan dan proses penerimaan pengguna baru. Proses pendaftaran menetapkan ID pengguna unik dan menyimpan dengan aman informasi penting pengguna, termasuk nama, alamat, dan detail pembayaran dalam database sistem.

Layanan Pembayaran
Menawarkan berbagai pilihan pembayaran, Layanan Pembayaran memastikan fleksibilitas dan kemudahan untuk menyelesaikan 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. Sebagai contoh, integrasi dengan gateway pembayaran seperti Stripe atau PayPal meningkatkan keamanan transaksi.

CDN
Khusus dalam menyimpan aset statis seperti gambar hidangan dan menu, CDN mengurangi beban pada server utama, meningkatkan aksesibilitas konten. Terletak secara strategis, CDN memastikan pengambilan data yang cepat, meminimalkan laten, dan mempercepat pengiriman konten. Sebagai contoh, menggunakan Akamai atau Amazon CloudFront untuk layanan CDN mengoptimalkan waktu muat halaman menu, 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 terbaik di sekitar mereka dengan memanfaatkan kemampuan pencarian kuat ElasticSearch.

Layanan Penempatan Pesanan
Mengelola siklus hidup pesanan secara keseluruhan, layanan ini memberikan informasi kepada restoran dan memperbarui status pesanan kepada pelanggan. Antrian Pesanan memfasilitasi komunikasi dengan Layanan Restoran, sementara permintaan pengiriman melibatkan interaksi dengan Layanan Pengiriman. Implementasi Apache Kafka sebagai pialang pesan memastikan pemrosesan pesanan yang efisien dan komunikasi antar layanan.

Layanan Pengiriman
Memfasilitasi pengambilan pesanan, layanan ini menjalin komunikasi lancar antara agen dan pelanggan, memungkinkan pelacakan pesanan secara real-time. Mereka sangat penting dalam memastikan pengiriman yang sukses dan mengumpulkan umpan balik pelanggan. Sebagai contoh, Layanan Pengiriman dengan efisien mengkoordinasikan pengiriman makanan dari restoran ke pelanggan menggunakan alat pelacakan real-time seperti Google Maps.

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

Antrian Notifikasi
Layanan yang ingin mengirimkan pemberitahuan kepada pengguna mendorong pesan ke Antrian Notifikasi, dengan Layanan Notifikasi mengonsumsi permintaan ini, kemudian mengirimkan pemberitahuan kepada pengguna. Sebagai contoh, Kafka dapat digunakan untuk mengimplementasikan antrian pemberitahuan yang kokoh dan dapat diskalakan.

Cache
Menyimpan permintaan yang sedang berlangsung untuk akses cepat, cache menyediakan akses cepat kepada pelanggan dan mikro layanan lainnya. Misalnya, cache Redis secara efisien menyimpan dan mengambil data yang sering diakses, meningkatkan kinerja sistem secara keseluruhan.

Database
Menyimpan data pengguna, informasi restoran, dan menu, database ini dibagi dan direplikasi di berbagai server. Sharding horizontal, seperti yang ditunjukkan oleh MySQL untuk konsistensi tinggi dalam data pengguna dan transaksi, disertai dengan NoSQL untuk metadata non-kritis seperti peringkat restoran dan detail agen pengiriman. Sebagai contoh, MongoDB dapat digunakan karena fleksibilitasnya dalam menangani data tidak terstruktur seperti peringkat dan informasi agen.

Alur kerja sistem

Berikut adalah proses langkah demi langkah:

  • 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, memilih dari detail restoran dan menu yang disimpan di CDN.
  • Setelah memilih, Layanan Penempatan Pesanan menangkap spesifikasi pesanan, termasuk item dan jumlah. Pengguna kemudian memilih antara pengiriman makanan atau makan di tempat, dengan sistem melacak status pesanan.
  • Layanan Penempatan Pesanan mengirimkan pesanan ke Antrian Pesanan, yang selanjutnya diambil oleh Layanan Penempatan Restoran untuk diterima dan diproses oleh admin restoran.
  • Pada kasus makan di tempat, ketika makanan siap, Layanan Penempatan Pesanan memberi tahu pelanggan melalui Antrian Notifikasi. Layanan Notifikasi mengelola permintaan ini, mengirimkan pemberitahuan kepada pelanggan.

Berikut adalah proses langkah demi langkah untuk pengiriman:

  • Layanan Penempatan Pesanan memberi tahu Antrian Pengiriman, memicu Layanan Pengiriman untuk mencari agen pengiriman terdekat.
  • Setelah seorang agen menerima pesanan, mereka terhubung dengan pengguna melalui Layanan Peta, memungkinkan pelanggan untuk melacak lokasi agen secara teratur.
  • Transaksi pembayaran difasilitasi oleh Layanan Pembayaran, diarahkan ke portal pembayaran bank atau layanan UPI yang sesuai.
  • Setelah pengiriman berhasil, status pesanan diperbarui menjadi "telah dikirim," dengan detail pesanan disimpan dalam database.
  • Pelanggan juga dapat memberikan peringkat restoran, disimpan dalam database NoSQL.

Optimalisasi lebih lanjut untuk sistem

Untuk meningkatkan efisiensi Sistem Manajemen Restoran lebih lanjut, beberapa optimalisasi dapat dipertimbangkan:

  • Strategi caching, seperti mengimplementasikan Content Delivery Network (CDN) untuk aset statis seperti gambar dan menu, dapat signifikan meningkatkan waktu respons dan mengurangi beban server.
  • Menggunakan pemrosesan asinkron untuk tugas-tugas yang tidak sensitif waktu, seperti notifikasi pesanan, dapat meningkatkan respons sistem.
  • Indeksasi database yang efisien, strategi sharding, dan replikasi harus diimplementasikan untuk memastikan pengambilan data cepat dan ketersediaan tinggi.
  • Pengimbang beban dapat dioptimalkan secara dinamis untuk mendistribusikan lalu lintas secara efektif, dan sistem harus mencakup langkah-langkah keamanan yang menyeluruh, termasuk enkripsi untuk data sensitif dan titik akhir API yang aman.
  • Pemantauan kinerja secara teratur dan analisis akan membantu mengidentifikasi dan mengatasi bottleneck potensial, memastikan optimalisasi berkelanjutan dari Manajemen Restoran.




Comments

Popular posts from this blog

Pemrograman Perangkat Beregerak - ETS - - Timothy Hosia

Pemrograman Perangkat Beregerak - Tugas Pertemuan 4 - Timothy Hosia

ETS PPL A