Επισκόπηση pipeline

Stream-Ingest → Validators features → Αποθήκευση
                                        ↓
                                   Event bus (PG LISTEN/NOTIFY)
                                        ↓
                              ┌────────────────────┐
                              │ Daemon απόφασης    │ (config ανά tenant)
                              └──────────┬─────────┘
                                         ↓
                                  Επικυρωμένη ενέργεια
                                         ↓
                                  Feedback αποτελέσματος
                                         ↓
                              Εκπαίδευση / Tuning μοντέλου

Η πλατφόρμα μετατρέπει ακατέργαστες ροές δεδομένων σε συγκλίνουσες αποφάσεις μέσω μιας σκόπιμα κλιμακωτής pipeline. Κάθε στάδιο έχει μία ευθύνη και εκπέμπει durable events για το επόμενο.

Event-driven πυρήνας

  • Event bus. Το PostgreSQL LISTEN/NOTIFY μεταφέρει events μεταξύ daemons. Τα events αποθηκεύονται σε durable πίνακα, δεν απλώς μεταδίδονται — οι consumers μπορούν να κάνουν replay από cursor μετά από επανασύνδεση.
  • Παράδοση at-least-once. Οι consumers επιβεβαιώνουν τα επεξεργασμένα events. Τα μη επιβεβαιωμένα events επαναπαραδίδονται μετά από timeout. Η ιδεμποτεντικότητα είναι ευθύνη του consumer.
  • Cursor-tracked replay. Κάθε consumer διατηρεί τον δικό του cursor. Μετά από αποσύνδεση, συνεχίζει από εκεί που σταμάτησε — κανένα event δεν χάνεται, κανένα event δεν επεξεργάζεται διπλά πέρα από τις διαμορφωμένες σημασιολογίες retry.

Pipeline ML

  • Μοντέλα. XGBoost εκπαιδευμένο σε ιστορικά features, με ONNX Runtime για inference (2–5× ταχύτερο από το framework εκπαίδευσης).
  • Έξοδοι. Τα μοντέλα ταξινομούν καθεστώτα σε τρεις διαστάσεις — κατεύθυνση, μεταβλητότητα, ποιότητα. Καμία κερδοσκοπική σημειακή πρόβλεψη.
  • Tuning υπερ-παραμέτρων. Optuna με walk-forward holdout, champion/challenger waves, quality gates.
  • Feedback loop. Το αποτέλεσμα κάθε απόφασης καταγράφεται και τροφοδοτείται στον επόμενο γύρο tuning.

Multi-tenant μοντέλο

Η απομόνωση tenant επιβάλλεται σε δύο επίπεδα:

  • Stored procedures. Όλες οι λειτουργίες πλευράς tenant περνούν από stored procedures που επιβάλλουν ownership. Άμεσες εγγραφές πίνακα από κώδικα tenant δεν επιτρέπονται.
  • Row-level security. Το RLS της Postgres ως σκληρό backstop. Ακόμη και αν η λογική εφαρμογής έχει bug, το RLS εμποδίζει πρόσβαση δεδομένων μεταξύ tenants.

Η ανά-tenant διαμόρφωση καλύπτει:

  • Κλειδιά και rate limits.
  • Kill-switch. Operator override για άμεση απενεργοποίηση ενός tenant χωρίς redeployment.
  • Προφίλ κινδύνου. Παράμετροι κατωφλίων ανά κλάση απόφασης.

Validators

Τρία σημεία όπου γίνεται validation:

  1. Πριν την αποθήκευση. Stream events που αποτυγχάνουν στο validation σημειώνονται, δεν απορρίπτονται σιωπηλά. Οι operators τα βλέπουν στο dashboard.
  2. Πριν την εκπαίδευση μοντέλων. Τα features που χρησιμοποιούνται για εκπαίδευση επανα-επικυρώνονται έναντι του σχήματος. Το drift πυροδοτεί alert πριν την επανεκπαίδευση.
  3. Σε runtime. Οι validators features τρέχουν συνεχώς με αυτόματη ανάκαμψη DATAMISSING — όταν ένα αναμενόμενο feature απουσιάζει, ο daemon πέφτει πίσω σε ένα τεκμηριωμένο default και εκπέμπει ένα δομημένο event.

Παρατηρησιμότητα

  • 21 live dashboards. Heartbeat, latency, drift detection, κατανομή αποφάσεων, όγκος ανά tenant.
  • Δομημένη καταγραφή. Κονσόλα, αρχείο και βάση δεδομένων — τα ίδια log events αναγνώσιμα και από τα τρία με το ίδιο query.
  • Health monitoring. Κάθε daemon εκπέμπει events υγείας σε σταθερή συχνότητα. Τα events που λείπουν πυροδοτούν pages.

Μηχανισμοί production-readiness

  • Circuit breakers ανά πηγή δεδομένων — οι αστοχίες υποβαθμίζονται graceful αντί να κλιμακώνονται.
  • Email και XMPP alerting για events ορατά στον operator.
  • Universal config-driven defaults. Mappings πηγών δεδομένων, αλυσίδες fallback, μετατροπές μονάδων, κατώφλια — όλα σε JSON. Κανένα magic number στον κώδικα.
  • Απομόνωση διεργασίας μέσω tmux + Devuan — οι daemons μπορούν να επανεκκινηθούν μεμονωμένα χωρίς συντονισμό.

Τι δεν είναι αυτό

  • Δεν είναι πλατφόρμα autoscaling τύπου Kubernetes. Αυτό τρέχει σε μικρό αριθμό καλά κατανοητών μηχανημάτων με σκόπιμη τοποθέτηση daemon.
  • Δεν είναι «στήσε και ξέχνα». Σύνολα tokens, εκδόσεις μοντέλων, configs tenant και dashboards απαιτούν προσοχή operator.
  • Δεν είναι γενικό. Η πλατφόρμα αντικατοπτρίζει μια συγκεκριμένη κλάση προβλημάτων αποφάσεων υψηλής συχνότητας — η προσαρμογή της σε πολύ διαφορετικό workload είναι η υπηρεσία Ανάπτυξη.