Tugas PPL Pertemuan 10

 

Komponen Desain Sistem

Nama : Muhammad Ahyun Irsyada
NRP : 5025211251

Desain sistem 

Desain sistem adalah proses mendefinisikan arsitektur, komponen, modul, antarmuka, dan data untuk sistem komputer. Ini melibatkan analisis persyaratan sistem, mengidentifikasi kendala dan asumsi, dan menentukan struktur tingkat tinggi dan komponen sistem. Tujuan dari desain sistem adalah untuk membuat cetak biru pengembangan dan implementasi sistem komputer yang memenuhi kebutuhan pengguna dan pemangku kepentingan.

Komponen desain sistem mengacu pada berbagai elemen yang terlibat dalam desain sistem komputer sebagai berikut: 


1. Penyeimbang Beban

Penyeimbang beban adalah komponen desain sistem yang digunakan untuk mendistribusikan permintaan masuk atau beban kerja ke sejumlah sumber daya atau server berbeda. Hal ini dapat berguna dalam beberapa skenario yang berbeda, seperti ketika sistem menerima permintaan dalam jumlah besar dan perlu mendistribusikannya ke beberapa server untuk menghindari kelebihan beban pada satu server, atau ketika sistem memiliki beberapa server dan perlu mendistribusikan permintaan secara merata. di antaranya untuk memastikan bahwa semua server digunakan secara efisien.

Ada banyak jenis penyeimbang beban, dan jenis spesifik yang digunakan dalam sistem tertentu akan bergantung pada kebutuhan spesifik sistem. Beberapa jenis penyeimbang beban yang umum meliputi:

  • Penyeimbang beban lapisan 4 beroperasi pada lapisan jaringan model OSI dan mendistribusikan permintaan berdasarkan alamat IP sumber dan tujuan serta nomor port permintaan.
  • Penyeimbang beban lapisan 7 beroperasi pada lapisan aplikasi model OSI dan mendistribusikan permintaan berdasarkan konten permintaan, seperti URL atau jenis metode HTTP yang digunakan.
  • Penyeimbang beban global digunakan dalam sistem terdistribusi untuk mendistribusikan permintaan di antara beberapa server yang berlokasi di wilayah geografis berbeda.
  • Penyeimbang beban aplikasi adalah penyeimbang beban khusus yang dirancang untuk bekerja dengan jenis aplikasi atau protokol tertentu, seperti HTTP atau HTTPS.

Secara umum, penyeimbang beban adalah komponen kunci dari banyak desain sistem dan dapat memainkan peran penting dalam memastikan bahwa sistem dapat menangani permintaan dalam jumlah besar secara efisien dan tanpa membebani sumber dayanya secara berlebihan.

2. Penyimpanan nilai kunci

Penyimpanan nilai kunci adalah jenis database NoSQL yang dirancang untuk menyimpan data sebagai kumpulan pasangan nilai kunci. Di penyimpanan nilai kunci, setiap bagian data disimpan di bawah kunci unik, dan nilainya adalah data itu sendiri. Penyimpanan nilai kunci sering digunakan untuk menyimpan data yang sering diakses, karena dapat menyediakan akses cepat ke data berdasarkan kunci.

  • Ada beberapa jenis penyimpanan nilai kunci, termasuk penyimpanan nilai kunci dalam memori, yang menyimpan data dalam memori untuk akses cepat, dan penyimpanan nilai kunci persisten, yang menyimpan data pada disk atau sistem file terdistribusi agar tahan lama. Penyimpanan nilai kunci dapat digunakan dalam berbagai aplikasi, termasuk caching, manajemen sesi, dan analisis real-time.
  • Penyimpanan nilai kunci umumnya lebih sederhana untuk digunakan dan lebih skalabel dibandingkan jenis database lainnya, seperti sistem manajemen database relasional (RDBMS). Namun, mereka tidak cocok untuk menyimpan data yang kompleks dan terstruktur yang memerlukan kemampuan kueri tingkat lanjut.

Dalam sistem terdistribusi, penyimpanan nilai kunci dapat digunakan untuk menyimpan data yang perlu diakses dengan cepat dan konsisten di beberapa node. Mereka juga dapat digunakan untuk menyimpan metadata dan data tambahan lainnya yang digunakan oleh sistem. Penting untuk memilih jenis penyimpanan nilai kunci yang tepat untuk kebutuhan spesifik sistem, dengan mempertimbangkan faktor-faktor seperti skalabilitas, kinerja, dan daya tahan.

3. Penyimpanan & Basis Data Blob

Penyimpanan blob dan sistem database adalah dua jenis sistem penyimpanan berbeda yang dapat digunakan untuk menyimpan dan mengelola data.

Penyimpanan blob, juga dikenal sebagai penyimpanan objek, adalah jenis sistem penyimpanan yang dirancang untuk menyimpan data tidak terstruktur dalam jumlah besar, seperti dokumen, gambar, video, dan file audio. Sistem penyimpanan blob biasanya sangat skalabel dan dapat menangani sejumlah besar permintaan secara bersamaan. Mereka sering digunakan untuk menyimpan data yang sering diakses, seperti file media atau konten buatan pengguna.

  • Sistem basis data, di sisi lain, dirancang untuk menyimpan data terstruktur yang diatur dengan cara tertentu. 
  • Ada beberapa jenis sistem basis data, termasuk sistem manajemen basis data relasional (RDBMS), basis data NoSQL, dan basis data dalam memori. 
  • Sistem basis data biasanya digunakan untuk menyimpan data yang perlu ditanyakan dan diakses dengan cara terstruktur, seperti catatan pelanggan atau transaksi keuangan.

Penyimpanan blob dan sistem database dapat digunakan bersama dalam sistem terdistribusi untuk menyimpan dan mengelola berbagai jenis data. Misalnya, sistem terdistribusi mungkin menggunakan sistem penyimpanan blob untuk menyimpan data tidak terstruktur seperti konten buatan pengguna, dan sistem database untuk menyimpan data terstruktur seperti catatan dan transaksi pelanggan. Penting untuk memilih jenis sistem penyimpanan yang tepat untuk setiap jenis data, dengan mempertimbangkan persyaratan spesifik sistem dan kebutuhan pengguna.

4. Pembatas tarif

Pembatas kecepatan adalah komponen desain sistem yang digunakan untuk membatasi kecepatan proses sistem atau aplikasi meminta atau melakukan tindakan tertentu. Hal ini dapat berguna dalam sejumlah skenario yang berbeda, seperti ketika sistem perlu melindungi dirinya dari kelebihan beban karena terlalu banyak permintaan, atau ketika organisasi ingin mencegah pengguna atau kelompok pengguna tertentu membuat permintaan berlebihan yang dapat berdampak pada sistem. kinerja suatu sistem.

Ada banyak tipe pembatas laju yang berbeda, dan tipe spesifik yang digunakan dalam sistem tertentu akan bergantung pada kebutuhan spesifik sistem. Beberapa jenis pembatas tarif yang umum meliputi:

  • Pembatas tingkat permintaan digunakan untuk membatasi jumlah permintaan yang diproses oleh sistem atau aplikasi dalam jangka waktu tertentu.
  • Pembatas laju tindakan digunakan untuk membatasi berapa kali tindakan atau operasi tertentu dapat dilakukan dalam jangka waktu tertentu.
  • Pembatas kecepatan pengguna digunakan untuk membatasi kecepatan pengguna atau kelompok pengguna tertentu dapat membuat permintaan ke sistem atau aplikasi.
  • Pembatas tingkat token bucket digunakan untuk membatasi kecepatan pemrosesan permintaan oleh sistem dengan mengizinkan sejumlah permintaan diproses dalam setiap periode waktu, dengan kelebihan permintaan disimpan dalam “keranjang” hingga periode waktu berikutnya.

Secara umum, rate limiter adalah komponen yang berguna dalam banyak desain sistem, dan dapat memainkan peran penting dalam memastikan bahwa sistem mampu menangani permintaan dalam jumlah besar tanpa kewalahan. Dengan membatasi kecepatan pemrosesan permintaan, pembatas kecepatan dapat membantu mencegah sistem kelebihan beban atau penurunan kualitas, dan dapat membantu memastikan bahwa sistem mampu memberikan kinerja yang konsisten dan andal.

5. Sistem Pemantauan

Sistem pemantauan adalah komponen desain sistem yang digunakan untuk mengumpulkan, menganalisis, dan melaporkan berbagai metrik dan data kinerja yang terkait dengan sistem atau aplikasi. Hal ini dapat berguna dalam sejumlah skenario yang berbeda, seperti ketika suatu sistem perlu melacak kinerja dan ketersediaannya sendiri, atau ketika sebuah organisasi perlu memantau kinerja sistem dan aplikasinya untuk memastikan bahwa mereka memenuhi tingkat layanan yang diinginkan.

Ada banyak tipe sistem pemantauan yang berbeda, dan tipe spesifik yang digunakan dalam sistem tertentu akan bergantung pada kebutuhan spesifik sistem. Beberapa jenis sistem pemantauan yang umum meliputi:

  • Sistem pemantauan jaringan, digunakan untuk memantau kinerja suatu jaringan dan berbagai komponennya, seperti router, switch, dan server.
  • Sistem pemantauan sistem, digunakan untuk memantau kinerja sistem komputer dan berbagai komponennya, seperti CPU, memori, dan penggunaan disk.
  • Sistem pemantauan aplikasi , digunakan untuk memantau kinerja aplikasi atau layanan tertentu, seperti server web atau database.
  • Sistem pemantauan infrastruktur, digunakan untuk memantau kinerja infrastruktur dasar tempat sistem atau aplikasi berjalan, seperti mesin virtual atau container.

Secara umum, sistem pemantauan adalah komponen penting dari banyak desain sistem dan dapat memainkan peran penting dalam memastikan bahwa sistem bekerja dengan baik dan memenuhi tingkat layanan yang diinginkan. Dengan memberikan visibilitas real-time terhadap kinerja suatu sistem, sistem pemantauan dapat membantu mengidentifikasi dan memecahkan masalah yang muncul, dan dapat memberikan wawasan berharga mengenai kesehatan dan ketersediaan sistem secara keseluruhan.

6. Mendistribusikan antrian pesan sistem

Antrian pesan sistem terdistribusi adalah sistem yang memungkinkan pertukaran pesan antara node berbeda dalam sistem terdistribusi. Antrean perpesanan memungkinkan node untuk berkomunikasi secara asinkron, memisahkan pengirim dan penerima pesan, serta memungkinkan setiap node untuk beroperasi secara independen.

Ada beberapa jenis antrean perpesanan, termasuk:

  • Antrian point-to-point: Dalam antrian jenis ini, pesan dikirimkan ke penerima tertentu.
  • Antrean terbitkan-langganan: Dalam jenis antrean ini, pesan dipublikasikan ke suatu topik dan dikirimkan ke semua pelanggan topik tersebut.
  • Antrean hibrid: Antrian hibrid menggabungkan elemen antrean titik-ke-titik dan antrean terbitkan-berlangganan, yang memungkinkan pesan dikirimkan ke penerima tertentu atau ke semua pelanggan suatu topik.

Antrean pesan sistem terdistribusi dapat digunakan untuk mengaktifkan komunikasi antara berbagai komponen sistem terdistribusi, seperti layanan mikro atau aplikasi terdistribusi. Mereka juga dapat digunakan untuk memisahkan bagian-bagian berbeda dari sistem, memungkinkan setiap komponen beroperasi secara independen dan meningkatkan ketahanan dan skalabilitas sistem.

Ada beberapa alat dan kerangka kerja yang tersedia untuk mengimplementasikan antrean pesan sistem terdistribusi, termasuk Apache Kafka, RabbitMQ, dan Amazon Simple Queue Service (SQS). Penting untuk memilih antrean pesan yang memenuhi persyaratan spesifik sistem Anda, dengan mempertimbangkan faktor-faktor seperti skalabilitas, kinerja, dan toleransi kesalahan.

7. Generator id unik yang didistribusikan

Generator ID unik terdistribusi adalah sistem yang menghasilkan pengidentifikasi unik (ID) yang dapat digunakan untuk mengidentifikasi objek atau entitas dalam sistem terdistribusi. ID ini biasanya digunakan untuk mengidentifikasi item secara unik dalam database atau untuk menyediakan pengidentifikasi stabil untuk sumber daya yang diakses melalui jaringan.

Ada beberapa pendekatan untuk menghasilkan ID unik terdistribusi :

  • Menggunakan layanan terpusat
  • Menggunakan algoritma konsensus terdistribusi
  • Menggunakan stempel waktu

Pencarian terdistribusi mengacu pada praktik penggunaan beberapa node atau server untuk mengindeks dan mencari kumpulan data besar dalam sistem terdistribusi. Pencarian terdistribusi dapat digunakan untuk meningkatkan kinerja dan skalabilitas operasi pencarian, karena memungkinkan pemrosesan kueri pencarian paralel dan distribusi data di beberapa node.

Ada beberapa pendekatan untuk menerapkan pencarian terdistribusi, antara lain:

  • Menggunakan mesin pencari terdistribusi: Mesin pencari terdistribusi adalah platform pencarian yang dirancang untuk menskalakan secara horizontal di beberapa node. Sistem ini biasanya menggunakan indeks terdistribusi untuk menyimpan data yang dicari, memungkinkan pemrosesan kueri penelusuran secara paralel. Contoh mesin pencari terdistribusi termasuk Elasticsearch dan Apache Solr.
  • Menggunakan database dengan kemampuan pencarian: Beberapa database, seperti MongoDB dan Cassandra, memiliki kemampuan pencarian bawaan yang memungkinkan pengindeksan dan pencarian data yang disimpan dalam database. Sistem ini dapat digunakan untuk mengimplementasikan pencarian terdistribusi dalam sistem terdistribusi.
  • Menggunakan layanan pencarian berbasis cloud: Layanan pencarian berbasis cloud, seperti Amazon Elasticsearch Service dan Google Cloud Search, dapat digunakan untuk menerapkan pencarian terdistribusi dalam sistem terdistribusi. Layanan ini biasanya sangat skalabel dan toleran terhadap kesalahan, dan dapat menjadi pilihan yang baik bagi organisasi yang tidak ingin mengelola infrastruktur pencarian mereka sendiri.

Dalam sistem terdistribusi, penting untuk memilih solusi pencarian terdistribusi yang memenuhi persyaratan spesifik sistem, dengan mempertimbangkan faktor-faktor seperti skalabilitas, kinerja, dan biaya.

9. Layanan logging terdistribusi

Pencatatan log terdistribusi mengacu pada praktik pengumpulan, penyimpanan, dan analisis data log dari berbagai sumber dalam sistem terdistribusi. Hal ini dapat berguna untuk melacak kesehatan dan kinerja sistem terdistribusi, serta untuk melakukan debug masalah yang mungkin timbul.

Ada beberapa pendekatan untuk menerapkan logging terdistribusi, antara lain:

  • Menggunakan layanan logging terpusat
  • Menggunakan sistem logging terdistribusi
  • Menggunakan layanan logging berbasis cloud

10. Mendistribusikan penjadwal tugas

Penjadwal tugas terdistribusi adalah sistem yang bertanggung jawab untuk menjadwalkan dan melaksanakan tugas dalam sistem terdistribusi. Penjadwal tugas dapat digunakan untuk mengotomatiskan pelaksanaan tugas secara berkala, pada jadwal tertentu, atau sebagai respons terhadap peristiwa tertentu.

Ada beberapa pendekatan untuk mengimplementasikan penjadwal tugas terdistribusi, antara lain:

  • Menggunakan penjadwal tugas mandiri: Penjadwal tugas mandiri adalah sistem terpisah yang bertanggung jawab untuk menjadwalkan dan melaksanakan tugas dalam sistem terdistribusi. Pendekatan ini sederhana untuk diterapkan dan memungkinkan fleksibilitas dalam hal jenis tugas yang dapat dijadwalkan. Namun, pengelolaannya mungkin lebih rumit dan mungkin memerlukan infrastruktur tambahan.
  • Menggunakan penjadwal tugas bawaan: Beberapa sistem terdistribusi, seperti platform orkestrasi kontainer atau platform tanpa server berbasis cloud, memiliki penjadwal tugas bawaan yang dapat digunakan untuk menjadwalkan tugas dalam sistem. Pendekatan ini mungkin lebih sederhana untuk diterapkan dan dikelola, namun mungkin kurang fleksibel dalam hal jenis tugas yang dapat dijadwalkan.
  • Menggunakan penjadwal tugas berbasis cloud: Penjadwal tugas berbasis cloud, seperti Amazon Simple Notification Service (SNS) atau Google Cloud Scheduler, dapat digunakan untuk menjadwalkan tugas dalam sistem terdistribusi. Layanan ini biasanya sangat terukur dan toleran terhadap kesalahan, dan dapat menjadi pilihan yang baik bagi organisasi yang tidak ingin mengelola infrastruktur penjadwalan tugas mereka sendiri.

Penting untuk memilih penjadwal tugas terdistribusi yang memenuhi persyaratan spesifik sistem, dengan mempertimbangkan faktor-faktor seperti skalabilitas, kinerja, dan biaya.


Load Balancer 

Apa itu Load Balancing?, Load balancing adalah metode untuk mendistribusikan lalu lintas jaringan ke beberapa server agar tidak ada satu server pun yang terbebani secara berlebihan. Pada website yang populer, tingkat kunjungan yang tinggi dalam waktu bersamaan dapat menyebabkan server kelebihan beban. Jika ini terjadi, server bisa mengalami downtime, membuat situs web tidak bisa diakses. Salah satu solusi untuk menghindari kelebihan beban ini adalah dengan mengimplementasikan load balancing.


Jenis Load Balancer


Ada beberapa metode load balancing yang penting untuk diketahui, dan masing-masing menggunakan algoritma yang berbeda. Berikut beberapa di antaranya:

1. Hardware Load Balancer

  • F5 Networks BIG-IP
    • Terkenal dengan fitur-fitur canggih dan skalabilitas tinggi.
  • Citrix ADC (sebelumnya dikenal sebagai NetScaler)
    • Menawarkan berbagai fitur untuk load balancing dan keamanan aplikasi.
  • A10 Networks Thunder ADC
    • Dikenal dengan performa tinggi dan fitur keamanan.

2. Software Load Balancer

  • HAProxy
    • Open-source dan sangat populer untuk load balancing HTTP dan TCP.
  • Nginx
    • Selain sebagai web server, Nginx juga memiliki kemampuan load balancing.
  • Traefik
    • Open-source, cocok untuk lingkungan container dan microservices.

3. Cloud-based Load Balancer

  • Amazon Elastic Load Balancing (ELB)
    • Menawarkan berbagai jenis load balancer (Application, Network, dan Classic Load Balancer) di AWS.
  • Google Cloud Load Balancing
    • Mendukung load balancing global untuk aplikasi di Google Cloud.
  • Azure Load Balancer
    • Menawarkan load balancing untuk aplikasi di Microsoft Azure.

4. Application Delivery Controller (ADC)

  • F5 BIG-IP
    • Selain load balancing, juga menyediakan caching, compression, dan keamanan.
  • Citrix ADC
    • Selain load balancing, juga menawarkan optimisasi aplikasi dan fitur keamanan.

5. Container-Orchestrator Load Balancer

  • Kubernetes Ingress
    • Mengelola load balancing dalam kluster Kubernetes.
  • Istio
    • Service mesh yang menyediakan load balancing bersama dengan fitur lainnya seperti observability dan security.

6. Open-source Load Balancer

  • HAProxy
    • Sangat efisien dan dapat dikonfigurasi untuk berbagai kebutuhan load balancing.
  • Nginx
    • Sangat fleksibel dan dapat diintegrasikan dengan berbagai teknologi lainnya.
  • Traefik
    • Dibuat untuk bekerja dengan container, sangat cocok untuk lingkungan Kubernetes dan Docker.


Layer 4 Load Balancer



Load balancing layer 4 beroperasi pada layer transport dari model OSI, terutama berkaitan dengan alamat IP dan port. Load balancer layer 4 unggul dalam mendistribusikan lalu lintas secara efisien ke server backend. Mereka dapat menangani volume lalu lintas yang besar dan relatif mudah untuk dikonfigurasi. Mereka tidak perlu memproses pesan.


Layer 7 Load Balancer


Load balancing layer 7 beroperasi pada layer aplikasi dari model OSI dan berhubungan dengan isi paket data. Load balancer layer 7 sangat penting ketika Anda perlu membuat keputusan routing berdasarkan isi permintaan HTTP atau protokol layer aplikasi lainnya. Ini memungkinkan routing yang lebih canggih, seperti mengarahkan lalu lintas ke server backend tertentu berdasarkan jalur URL, header permintaan, atau cookie.


Layer 7 membuat load balancer yang cerdas dan terinformasi berdasarkan isi data, sedangkan layer 4 melakukan load balancing berdasarkan algoritma perangkat lunaknya yang sudah ada. Layer 4 tidak cocok untuk microservices, tetapi layer 7 sangat baik untuk microservices.





Komentar

Postingan populer dari blog ini

Tugas 1 PPB-B

PPB-B EAS