Materi
Coba ulang tanpa jeda menambah beban pada layanan yang sedang kewalahan. AWS Builders' Library menyebut jalan keluarnya backoff: klien menunggu di antara percobaan, dan pada backoff eksponensial jeda itu dikalikan setiap kali gagal. Karena fungsi eksponensial tumbuh cepat, jedanya dibatasi nilai maksimum (capped exponential backoff), dan jumlah percobaan ulangnya juga dibatasi.
Step Functions menulis kebijakan ini sebagai field Retry. Dengan IntervalSeconds 3, BackoffRate 2, dan MaxAttempts 3, percobaan ulang pertama terjadi 3 detik setelah galat, kedua 6 detik sesudahnya, dan ketiga 12 detik sesudahnya. MaxDelaySeconds 5 memotong deret itu menjadi 3, 5, 5. MaxAttempts menghitung percobaan ulang, tidak termasuk percobaan pertama. Nama field dan nilai bawaannya milik AWS; alat lain memakai nama sendiri, tetapi hitungannya sama.
// Jeda awal 2 detik, dikali 3 setiap gagal, paling lama 30 detik, maksimal 4 percobaan ulang
// ulang ke-1: 2
// ulang ke-2: 2 × 3 = 6
// ulang ke-3: 6 × 3 = 18
// ulang ke-4: 18 × 3 = 54, dipotong menjadi 30
// total jeda bila semuanya gagal: 2 + 6 + 18 + 30 = 56 detikJitter menambahkan jeda acak supaya banyak klien tidak mencoba ulang pada detik yang sama. Karena acak, jitter dimatikan di latihan ini agar hasilnya tetap. Azure Architecture Center mengingatkan bahwa total waktu seluruh percobaan, yaitu timeout setiap percobaan ditambah semua jeda, harus tetap di bawah batas waktu yang dijanjikan alurnya.