Οι Durable Functions στις Azure Functions χωρίζονται σε τέσσερις κύριες κατηγορίες. Κάθε μία εξυπηρετεί διαφορετικό σκοπό μέσα στην ορχήστρωση της ροής εργασιών. Παρακάτω θα αναλύσουμε κάθε τύπο, πότε και γιατί να τον χρησιμοποιήσουμε.
1️⃣ Activity Functions
🔹 Τι είναι:
Οι Activity functions είναι οι "εργάτες" μιας Durable Function. Είναι απλές συναρτήσεις που εκτελούν συγκεκριμένες εργασίες μέσα στη ροή εργασιών.
🔹 Πότε να τις χρησιμοποιήσω:
Για απομονωμένες εργασίες που χρειάζονται επεξεργασία, όπως πρόσβαση σε βάσεις δεδομένων, κλήσεις σε API ή εκτέλεση σύνθετων υπολογισμών.
Όταν θέλεις να διαχειριστείς αποτυχημένες εκτελέσεις, καθώς οι Activity Functions υποστηρίζουν automatic retries (αυτόματες επαναπροσπάθειες).
🔹 Παράδειγμα χρήσης:
Αν έχεις μια εφαρμογή που επεξεργάζεται παραγγελίες, μια Activity Function μπορεί να ελέγχει το απόθεμα, να δημιουργεί τιμολόγια ή να στέλνει email επιβεβαίωσης.
2️⃣ Orchestrator Functions
🔹 Τι είναι:
Οι Orchestrator functions ελέγχουν τη ροή εκτέλεσης των εργασιών. Είναι υπεύθυνες για να καθορίζουν τη σειρά με την οποία εκτελούνται οι Activity Functions, καθώς και για την επικοινωνία με άλλες λειτουργίες.
🔹 Πότε να τις χρησιμοποιήσω:
Όταν έχεις πολλαπλά βήματα σε μια διαδικασία και θέλεις να διασφαλίσεις ότι εκτελούνται με τη σωστή σειρά.
Αν θέλεις να υποστηρίξεις παύση και επανεκκίνηση (stateful execution) μιας διαδικασίας.
Όταν πρέπει να περιμένεις εξωτερικά γεγονότα ή απαντήσεις από APIs πριν προχωρήσει η ροή εργασιών.
🔹 Παράδειγμα χρήσης:
Μια εφαρμογή επεξεργασίας βίντεο που πρώτα ανεβάζει ένα αρχείο, μετά το μετατρέπει σε διάφορες μορφές, και τέλος ειδοποιεί τον χρήστη ότι η διαδικασία ολοκληρώθηκε.
3️⃣ Entity Functions
🔹 Τι είναι:
Οι Entity functions επιτρέπουν τη διατήρηση κατάστασης (stateful objects). Ουσιαστικά, λειτουργούν σαν μικρά αντικείμενα (objects) μέσα στο σύστημα, τα οποία διατηρούν μια κατάσταση και μπορούν να δεχτούν ενημερώσεις.
🔹 Πότε να τις χρησιμοποιήσω:
Όταν χρειάζεσαι διατήρηση κατάστασης (state) σε μια διαδικασία χωρίς να χρησιμοποιείς εξωτερική βάση δεδομένων.
Για καταμέτρηση, όπως π.χ. τον αριθμό των ενεργών χρηστών ή τον αριθμό αιτημάτων προς επεξεργασία.
Αν θέλεις να διαχειρίζεσαι κατανεμημένα αντικείμενα, όπως sessions ή αντικείμενα παιχνιδιών σε ένα multiplayer game.
🔹 Παράδειγμα χρήσης:
Ένα σύστημα κρατήσεων που διατηρεί πληροφορίες για τη διαθεσιμότητα ενός ξενοδοχείου. Κάθε δωμάτιο μπορεί να αντιπροσωπεύεται ως μια Entity Function που διατηρεί αν είναι ελεύθερο ή κλεισμένο.
4️⃣ Client Functions
🔹 Τι είναι:
Οι Client functions είναι αυτές που ενεργοποιούν την εκτέλεση μιας Durable Function. Μπορούν να είναι HTTP triggers, timers, ή άλλες Azure Functions που ξεκινούν μια διαδικασία.
🔹 Πότε να τις χρησιμοποιήσω:
Όταν θέλεις να ξεκινήσεις μια orchestration function από HTTP request.
Αν θέλεις να ενεργοποιήσεις μια Durable Function μέσω Azure Service Bus, Event Grid, ή ακόμα και μέσω ενός χρονοδιαγράμματος (timer).
Για να ελέγχεις την κατάσταση μιας τρέχουσας εκτέλεσης μιας Durable Function.
🔹 Παράδειγμα χρήσης:
Ένα API που ξεκινά μια Durable Function για επεξεργασία παραγγελίας, και μετά από λίγο ελέγχει αν ολοκληρώθηκε.
Πότε να χρησιμοποιήσω Azure Functions και πότε Durable Functions
✅ Χρήση απλών Azure Functions όταν:
- Χρειάζεσαι να επεξεργαστείς ένα απλό αίτημα (π.χ. HTTP request, event από queue).
- Εκτελείς απομονωμένες εργασίες που δεν εξαρτώνται από άλλες διαδικασίες.
- Αλληλεπιδράς με εξωτερικές υπηρεσίες (APIs, βάσεις δεδομένων), αλλά χωρίς περίπλοκη ροή εργασιών.
✅ Χρήση Durable Functions όταν:
- Πρέπει να εκτελέσεις πολλαπλές εργασίες με συγκεκριμένη σειρά (Orchestrator Functions).
- Χρειάζεσαι διατήρηση κατάστασης (stateful execution) σε μια μακροχρόνια διαδικασία (Entity Functions).
- Πρέπει να περιμένεις ένα εξωτερικό γεγονός πριν συνεχίσεις την εκτέλεση (Orchestrator Functions).
- Θέλεις να εκτελείς επαναλαμβανόμενες εργασίες με αυτόματες επαναπροσπάθειες (retries) σε περίπτωση αποτυχίας (Activity Functions).
*Χρήση Azure Functions και Durable Functions σε τραπεζικές διαδικασίες
*
✅ Χρήση απλών Azure Functions όταν:
- Επεξεργασία απλών συναλλαγών → Π.χ. ένας πελάτης ζητάει το υπόλοιπο του λογαριασμού του. Μια απλή Azure Function μπορεί να κάνει ένα API call στη βάση δεδομένων και να επιστρέψει το υπόλοιπο.
- Αποστολή ειδοποιήσεων → Όταν γίνεται μια πληρωμή, μια Azure Function μπορεί να στείλει ένα email ή SMS επιβεβαίωσης στον πελάτη.
- Καταγραφή συναλλαγών → Μια Azure Function μπορεί να αποθηκεύει κάθε συναλλαγή σε μια βάση δεδομένων ή σε ένα log system.
✅ Χρήση Durable Functions όταν:
- Διαδικασία επιστροφής χρημάτων (Refund Payment)
- Ο πελάτης ζητάει επιστροφή χρημάτων (refund).
- Μια Orchestrator Function ελέγχει αν η συναλλαγή είναι επιλέξιμη για επιστροφή.
- Αν εγκριθεί, καλεί μια Activity Function που στέλνει το αίτημα επιστροφής στο σύστημα πληρωμών.
- Περιμένει επιβεβαίωση από την τράπεζα (μέσω external event).
- Αν ολοκληρωθεί επιτυχώς, καλεί μια άλλη Activity Function που ενημερώνει τον πελάτη και το σύστημα λογιστικής.
- Διαχείριση καθυστερημένων πληρωμών
- Αν ένας πελάτης έχει καθυστερημένη πληρωμή, μια Durable Function μπορεί να ελέγχει περιοδικά (με timers) αν η πληρωμή έγινε.
- Αν δεν έχει γίνει, στέλνει ειδοποιήσεις υπενθύμισης μέσω Activity Functions.
- Αν η πληρωμή παραμείνει εκκρεμής για μεγάλο διάστημα, η Orchestrator Function μπορεί να κλιμακώσει το θέμα σε τμήμα είσπραξης χρεών.
- Έλεγχος δόλιων συναλλαγών (Fraud Detection)
- Μια Orchestrator Function μπορεί να αναλύει μεγάλες συναλλαγές ή ασυνήθιστες αγορές.
- Καλεί διαφορετικές Activity Functions που κάνουν ελέγχους ασφαλείας (π.χ. σύγκριση με ιστορικό πελάτη).
- Αν εντοπιστεί ύποπτη συναλλαγή, ενεργοποιεί ένα external event για να ζητήσει επιβεβαίωση από τον πελάτη ή να μπλοκάρει την κάρτα.
- Διαδικασία χορήγησης δανείου
- Ο πελάτης υποβάλλει αίτηση για δάνειο.
- Η Orchestrator Function καλεί Activity Functions που ελέγχουν το πιστωτικό ιστορικό, τα εισοδήματα και άλλες οικονομικές παραμέτρους.
- Αν εγκριθεί, μια άλλη Activity Function δημιουργεί τη σύμβαση δανείου και στέλνει τα έγγραφα στον πελάτη.
- Περιμένει επιβεβαίωση από τον πελάτη (external event) πριν εκταμιεύσει το ποσό.
Συμπέρασμα
Οι Durable Functions προσφέρουν έναν πιο ευέλικτο και οργανωμένο τρόπο για τη δημιουργία workflows που περιλαμβάνουν πολλαπλά βήματα, διατήρηση κατάστασης, retries και χρονισμούς. Αν η εφαρμογή σου χρειάζεται σύνθετες ροές εργασιών, τότε είναι προτιμότερο να χρησιμοποιήσεις Durable Functions αντί για απλές Azure Functions.
Durable Functions είναι απαραίτητες για περίπλοκες τραπεζικές ροές εργασιών που περιλαμβάνουν διαδοχικά βήματα, αναμονές, retries και αλληλεπίδραση με τρίτα συστήματα.
Azure Functions είναι κατάλληλες για απλές τραπεζικές λειτουργίες όπως ενημερώσεις υπολοίπων, ειδοποιήσεις ή καταγραφή συναλλαγών.
Top comments (0)