Gaya arsitektur dan pola komunikasi

Mengembangkan Aplikasi di AWS

Ricardo Sueiras

Principal Technologist

Pengajar Anda

pengajar

Mengembangkan Aplikasi di AWS

Apa itu pola arsitektur?

 

 

Arsitektur aplikasi

 

  • Solusi yang dapat diulang untuk masalah umum.
  • Pola membantu menggabungkan layanan AWS.
  • Arsitektur menentukan kinerja app saat beban tinggi.
  • Beberapa pola arsitektur yang perlu Anda tahu.
Mengembangkan Aplikasi di AWS

Monolit

 

 

diagram arsitektur monolit contoh

 

 

  • Satu unit yang terikat erat.
  • Satu basis kode, satu deployment.
  • Awalnya mudah dikembangkan.
  • Sulit diskalakan: semua skala bersama.
Mengembangkan Aplikasi di AWS

Microservices

 

arsitektur microservices

 

  • Layanan kecil, independen: masing-masing menangani satu kapabilitas bisnis.
  • Deploy, skala, dan perbarui tiap layanan secara mandiri.
  • Konsekuensi: kompleksitas operasional dan komunikasi antarlayanan meningkat.
Mengembangkan Aplikasi di AWS

Serverless

  • Tidak ada infrastruktur untuk dikelola, hanya kode dan konfigurasi.
  • Bangun dengan menyusun layanan AWS terkelola.
  • AWS menangani provisioning, penskalaan, dan pemeliharaan.
  • Konsekuensi: batas waktu eksekusi, cold start, vendor lock-in.
  • Hampir tanpa beban operasional dan skala otomatis.

 

arsitektur serverless

Mengembangkan Aplikasi di AWS

Event-driven architecture (EDA)

  • Komponen berkomunikasi dengan memproduksi dan mengonsumsi event, bukan panggilan langsung.
  • Event mencatat sesuatu yang terjadi (pesanan dibuat, pembayaran diterima, barang dikirim).
  • Produser memancarkan event.
  • Konsumen berlangganan event yang relevan.

 

arsitektur event-driven

Mengembangkan Aplikasi di AWS

Sistem terikat erat vs longgar

  • App cloud modern terdiri dari banyak layanan.
  • Layanan harus berkomunikasi dan berkoordinasi untuk menyelesaikan kerja.
  • Komunikasi sinkron terikat erat.
  • Komunikasi asinkron terikat longgar.

sistem terikat erat dan longgar

Mengembangkan Aplikasi di AWS

Komunikasi sinkron

 

komunikasi sinkron

  • Satu layanan mengirim permintaan dan menunggu respons.
  • Pemanggil terblokir hingga respons atau batas waktu.
  • Mudah diimplementasikan dan dipahami.
  • Keterikatan erat: kelambatan/gagal hilir bisa merambat.
  • Kurangi risiko dengan timeout, retry, dan circuit breaker.
Mengembangkan Aplikasi di AWS

Pola: request/response

request response

  • Tulang punggung sebagian besar antarmuka aplikasi.
  • Perilaku prediktif.
  • Umpan balik langsung ke pengguna.
Mengembangkan Aplikasi di AWS

Komunikasi asinkron

 

komunikasi asinkron

  • Pengirim tidak menunggu respons.
  • Mengirim pesan/event lalu lanjut memroses.
  • Penerima memroses pesan secara independen.
  • Keterikatan longgar: skalabilitas dan toleransi kesalahan lebih baik.
  • Menangani lonjakan trafik dan gangguan parsial dengan mulus.
  • Tantangan: duplikasi pesan, pengurutan, konsistensi akhirnya.
Mengembangkan Aplikasi di AWS

Pola: pemisahan berbasis antrian

  • Produser mengirim pesan ke antrian.
  • Konsumen menarik dan memroses pesan secara independen.
  • Mencegah kegagalan merambat.
  • Produser dan konsumen diskalakan terpisah.

  berbasis antrian

Mengembangkan Aplikasi di AWS

Pola: worker queue

  • Banyak pekerja menarik pesan dari satu antrian.
  • Pesan diproses paralel.
  • Memungkinkan penskalaan horizontal dan throughput lebih tinggi.
  • Urutan pesan tidak dijamin.

antrian-pekerja

Mengembangkan Aplikasi di AWS

Pola: publish/subscribe

  • Publisher mengirim pesan ke topik SNS.
  • Banyak subscriber menerima pesan yang sama.
  • Penyiaran real time ke banyak konsumen.

 

pola pub-sub

Mengembangkan Aplikasi di AWS

Pola: fan-out

fanout

  • Satu pesan dikirim ke banyak konsumen secara bersamaan.
  • Banyak dipakai pada arsitektur event-driven.
  • Berguna saat banyak layanan harus bereaksi pada event yang sama.
Mengembangkan Aplikasi di AWS

Pengurutan pesan

pengurutan pesan

  • Beberapa beban kerja harus memproses pesan berurutan.
  • Amazon SQS FIFO dan Kinesis mendukung pemrosesan berurutan.
  • Pengurutan ketat menurunkan throughput.
  • Seimbangkan kebenaran dan skalabilitas.
Mengembangkan Aplikasi di AWS

Ayo berlatih!

Mengembangkan Aplikasi di AWS

Preparing Video For Download...