Εδώ, στο Palo, τα δεδομένα είναι το πιο ζωτικό στοιχείο που έχουμε. Τα δεδομένα πηγαίνουν χέρι-χέρι με τις καθιερωμένες διαδικασίες επεξεργασίας, για να εξυπηρετήσουμε την αποστολή μας, η οποία είναι να προσφέρουμε ποιοτικές υπηρεσίες δεδομένων που σχετίζονται με ειδήσεις και αναλύσεις δεδομένων.
Αυτό είναι το πρώτο άρθρο της σειράς των άρθρων μας για την Τεχνολογία των Δεδομένων. Στόχος αυτής της σειράς είναι να μοιραστούμε τις γνώσεις που έχουμε αποκτήσει καθ ‘όλη τη διάρκεια των ετών στα οποία αντιμετωπίζουμε προβλήματα που σχετίζονται με τα δεδομένα. Θα ακολουθήσουν περισσότερα άρθρα, οπότε παραμείνετε συντονισμένοι, καθώς προχωρούμε, θα εμβαθύνουμε σε τεχνικά ζητήματα και θα προχωρήσουμε από το γενικό πρόβλημα στην περιγραφή τεχνικών λύσεων.
Ο όρος Big Data έχει κάνει την εμφάνισή του τελευταία και ακούγεται όλο και περισσότερο. Οι όροι Buzz είναι πολύ συχνοί στην τεχνολογία και οι περισσότεροι από αυτούς έχουν μικρή διάρκεια ζωής. Αυτό δεν φαίνεται να συμβαίνει για τα «Fast Data» επειδή φαίνεται να ανταποκρίνεται σε μια πραγματική ανάγκη: η ανάκτηση, επεξεργασία, αποθήκευση και εξυπηρέτηση τεράστιων ποσοτήτων δεδομένων δεν αρκεί. Αυτό πρέπει να γίνει γρήγορα, αξιόπιστα και σε πολλές περιπτώσεις με συνεχή τρόπο.
Ας σπάσουμε έναν «αγωγό» επεξεργασίας δεδομένων (data processing pipeline) στα πιο σημαντικά μέρη του.
Πρώτα απ ‘όλα είναι η φάση “κατάποσης” (ingestion phase). Τα δεδομένα πρέπει να εισέρχονται με κάποιο τρόπο στο σύστημα και αυτή είναι η ευθύνη των συστατικών της κατάποσης. Οι πηγές από τις οποίες θα ανακτηθούν τα δεδομένα μπορούν να είναι πολυάριθμες και μπορούν να κυμανθούν από API κοινωνικών μέσων, ανίχνευση ιστοσελίδων, ενσωμάτωση με αποθηκευμένα δεδομένα και υπηρεσίες τρίτων, κλπ. Η εργασία αυτού του στοιχείου είναι να φέρει τα δεδομένα και, ενδεχομένως, να εφαρμόσει ένα βήμα προ-επεξεργασίας, πριν τη διάθεσή τους στην επόμενη φάση.
Η πρόοδος προς την εποχή της «Ταχείας Πληροφορίας» έρχεται, ωστόσο, κυρίως από την πρόοδο όσον αφορά την επόμενη φάση του «αγωγού»: τη φάση επεξεργασίας. Παρόλο που αυτό το άρθρο δεν έχει σκοπό να μιλήσει για συγκεκριμένες τεχνολογίες, δεν μπορεί να μην γίνει αναφορά στο Apache Spark, επειδή είναι ένα από τα βασικά στοιχεία που συνεχίζουν να ωθούν τις εξελίξεις. Πριν από τον Spark, ο Hadoop κυριαρχούσε στη φάση της επεξεργασίας. Ένα πράγμα που ο Hadoop δεν κάνει καλά είναι η ταχύτητα και αυτό οφείλεται στην batch-oriented φύση του. Οι batch εργασίες συνήθως χρειάζονται πολύ χρόνο για να ολοκληρωθούν και αυτό μπορεί να έχει ως αποτέλεσμα καθυστερήσεις στην ανταπόκριση ολόκληρου του συστήματος. Ο Spark εισήγαγε μια προσέγγιση επεξεργασίας mini batch και βοήθησε στην ανακούφιση αυτής της συμφόρησης, παρέχοντας τα μέσα για να δημιουργήσει μια εμπειρία επεξεργασίας σαν ρεύμα (stream-like processing).
Τελευταίο αλλά όχι ασήμαντο είναι η πραγματική αποθήκευση των δεδομένων και φυσικά οι συνοδευτικές διεργασίες συστατικών, υπηρεσιών και ενορχηστρώσεων ολόκληρου του αγωγού. Ενώ η αποθήκευση έχει τις δικές της προειδοποιήσεις, η ενορχήστρωση και οι υπηρεσίες είναι ζωτικής σημασίας και αξίζουν το δικό τους άρθρο. Τα προβλήματα για την επίλυση είναι πολλά και αυτά είναι μερικές λέξεις-κλειδιά σε τυχαία σειρά για να εμβαθύνουμε σε επόμενα άρθρα: temporal decoupling, κλιμάκωση, ελαστικότητα, μηνύματα, actor model, reactive applications, backpressure… και ο κατάλογος συνεχίζεται …