Artikel ini membahas pola dan implementasi yang digunakan tim insinyur perangkat lunak komersial (CSE) saat mereka membuat Transformasi cloud sistem perbankan di Azure.
Sistem
Arsitektur saga
Unduh file Visio arsitektur ini.
Aliran data
Contoso Bank memiliki penerapan lokal dari saga berbasis orkestrasi. Dalam penerapannya, orkestrator adalah mesin keadaan terbatas (FSM). Tim CSE mengidentifikasi tantangan berikut dalam desain arsitektur:
Overhead penerapan dan kompleksitas pada orkestra stateful untuk ditangani dengan manajemen status, waktu tunggu, dan restart dalam skenario kegagalan.
Mekanisme observabilitas untuk melacak status alur kerja saga per permintaan transaksi.
Solusi yang diusulkan di bawah ini adalah implementasi pola saga melalui pendekatan orkestrasi menggunakan arsitektur tanpa server di Azure. Ini mengatasi tantangan dengan menggunakan:
Azure Functions untuk implementasi peserta saga.
Azure Durable Functions untuk orkestrasi, dirancang untuk menyediakan model pemrograman alur kerja dan pengelolaan status.
Azure Event Hubs sebagai platform streaming data.
Azure Cosmos DB sebagai layanan database untuk menyimpan model data.
Untuk informasi selengkapnya, lihat Pola: Saga di Microservices.io.
Pola saga
Saga adalah pola yang cocok untuk pengelolaan transaksi terdistribusi, yang umumnya diterapkan pada layanan keuangan. Skenario baru telah muncul di mana operasi didistribusikan di seluruh aplikasi dan database. Dalam skenario baru, pelanggan akan membutuhkan arsitektur dan desain implementasi baru untuk memastikan konsistensi data pada transaksi keuangan.
Pendekatan properti atomisitas, konsistensi, isolasi, dan daya tahan (ACID) tradisional tidak lagi sesuai. Itu karena data operasi sekarang terbentang ke dalam database yang terisolasi. Menggunakan pola saga mengatasi tantangan ini dengan mengoordinasikan alur kerja melalui urutan transaksi lokal yang didorong oleh pesan untuk memastikan konsistensi data.
Arsitektur KEDA
Unduh file Visio arsitektur ini.
Untuk informasi selengkapnya tentang penskala KEDA, lihat dokumen KEDA berikut:
Pemicu Azure Event Hubs: Kompatibilitas untuk membaca URI penyimpanan Azure blob untuk aplikasi Java. Ini menggunakan Event Processor Host SDK, memungkinkan kemampuan untuk menskalakan konsumen Java yang membaca pesan protokol antrean pesan tingkat lanjut (AMQP) dari Pusat Aktivitas. Sebelumnya penskala Pusat Aktivitas hanya bekerja dengan Azure Functions.
Pemicu topik Apache Kafka: Dukungan untuk autentikasi SASL_SSL Plain, memungkinkan kemampuan untuk menskalakan konsumen Java yang membaca pesan protokol Kafka dari Event Hubs.
Alur kerja
Tim CSE menyebarkan aplikasi pada kluster Azure Kubernetes Service (AKS). Solusi yang diperlukan untuk peluasan skala aplikasi secara otomatis berdasarkan jumlah pesan yang masuk. Tim CSE menggunakan penskala Kafka untuk mendeteksi apakah solusi harus mengaktifkan atau menonaktifkan penyebaran aplikasi. Penskala Kafka juga memasukkan metrik khusus untuk sumber peristiwa tertentu. Sumber kejadian dalam contoh ini adalah hub peristiwa Azure.
Ketika jumlah pesan di hub peristiwa Azure melebihi ambang batas, KEDA memicu pod untuk memperluas skala, meningkatkan jumlah pesan yang diproses oleh aplikasi. Penurunan pod secara otomatis terjadi ketika jumlah pesan dalam sumber peristiwa turun di bawah nilai ambang batas.
Tim CSE menggunakan pemicu topik Apache Kafka. Ini memberikan solusi kemampuan untuk menskalakan layanan Prosesor EFT jika proses melebihi jumlah maksimum pesan yang dikonsumsi dalam suatu interval.
KEDA dengan dukungan Java
Kubernetes Event-driven Autoscaler (KEDA) menentukan bagaimana solusi harus menskalakan kontainer apa pun di dalam Kubernetes. Keputusan didasarkan pada jumlah peristiwa yang perlu diproses. KEDA, yang memiliki berbagai jenis penskala, mendukung beberapa jenis beban kerja, mendukung Azure Functions, dan tidak mengenal vendor. Buka Penskalaan otomatis aplikasi Java dengan KEDA menggunakan Azure Event Hubs untuk menjelajahi contoh yang berfungsi.
Memuat arsitektur pengujian
Unduh file Visio arsitektur ini.
Solusi ini menggunakan Azure Load Testing dengan skrip JMeter (JMX). Azure Load Testing adalah layanan pengujian beban terkelola penuh yang memungkinkan Anda menghasilkan beban skala tinggi. Layanan ini mensimulasikan lalu lintas untuk aplikasi Anda, terlepas dari di mana mereka dihosting dan dapat menggunakan skrip JMeter yang ada.
Alur kerja
Azure Load Testing memungkinkan Anda membuat pengujian beban secara manual menggunakan portal Azure atau Azure CLI. Atau, Anda dapat mengonfigurasi alur CI/CD untuk diintegrasikan dengan Azure Load Testing. Melakukannya memungkinkan Anda mengotomatiskan uji beban untuk terus memvalidasi performa dan stabilitas aplikasi Anda sebagai bagian dari alur kerja CI/CD Anda.
- Pahami cara kerja Azure Load Testing dengan membuat dan menjalankan pengujian beban.
- Gunakan skrip JMeter baru atau yang sudah ada dan konfigurasikan alur kerja CI/CD Anda untuk menjalankan pengujian beban.
Detail skenario
Skenario ini membantu Anda lebih memahami pola dan implementasi gambaran besar di industri perbankan, ketika pindah ke cloud.
Langkah berikutnya
Pelajari selengkapnya tentang teknologi komponen:
- Pengantar Azure Functions
- Apa itu Durable Functions?
- Azure Event Hubs — Platform streaming big data dan layanan penyerapan peristiwa
- Selamat datang di Microsoft Azure Cosmos DB
Sumber daya terkait
Jelajahi arsitektur terkait: