ΕΠΕΙΣΟΔΙΟ 39: Σε ένα παράλληλο σύμπαν

0

Σήμερα θα δούμε μια ιστορία της Τρία Κιλά Κώδικα που διαδραματίζεται σε ένα παράλληλο σύμπαν. Στο σύμπαν αυτό όλα είναι όπως και και στο δικό μας, με μικρές όμως διαφορές.

Η μεγαλύτερη διαφορά είναι ότι ο κώδικας είναι νοήμων οντότητα. Κάθε class, κάθε method, κάθε component έχει τη δική του συνείδηση και προσωπικότητα. 

Και είναι οργανωμένα σε κοινωνίες, όπως ακριβώς είμαστε εμείς στο δικό μας σύμπαν. 

Για την ακρίβεια, είναι οργανωμένα σε... Ελληνικού τύπου κοινωνίες.

Ο Ζαχαρίας του παράλληλου αυτού σύμπαντος εργάζεται και αυτός σε μια εταιρία που ονομάζεται Τρία Κιλά Κώδικα ΑΕ, ενώ όλοι οι ήρωές μας είναι σχεδόν ίδιοι με αυτούς που γνωρίζουμε και μισούμε. Για παραδειγμα, ο προϊστάμενος του Ζαχαρία, Απόλυτος Ξερόλας. Η μονη διαφορά που υπάρχει στο παράλληλο αυτό σύμπαν είναι ότι μπορεί να μιλάει και να γίνεται κατανοητός (κατά διαστήματα).

ΑΠΞ: Ζαχαρία έχουμε θέμα. ΜΕΓΑΛΟ.

ΔΤΦ: Τι θέμα Απόλυτε;

ΑΠΞ: Το CRM της ΕλαΨωνισεΦυγε ΟΕ κολλάει. 

ΔΤΦ: Τι εννοείς κολλάει;

ΑΠΞ: Όποτε προσπαθούν να κάνουν μια εγγραφή παίρνει ένα τέταρτο να καταχωρηθεί.

ΔΤΦ: Σε ενημέρωσε το Visual Studio για την πιθανή αιτία του προβλήματος;

ΑΠΞ: Ναι, από την ανάλυση που έκανε λέει ότι οφείλεται στα update stored procedures. 

ΔΤΦ: Δηλαδή;

ΑΠΞ: Διαμαρτύρονται για τον μεγάλο όγκο requests που δέχονται. Ισχυρίζονται ότι δεν καλύπτονται από την αρχική τους σύμβαση και απαιτούν να υπάρξει άμεσα αναβάθμιση των σκληρών δίσκων του συστήματος σε SSD.

ΔΤΦ: Μα αυτό είναι ανήκουστο! Μια τέτοια αναβάθμιση θα στοίχιζε τόσα που η ΕλαΨωνισεΦυγε θα αναγκαζόταν να σταματήσει τη χρήση του software! Δεν το καταλαβαίνουν αυτό;

ΑΠΞ: Ισχυρίζονται ότι υπάρχουν τα χρήματα για την αναβάθμιση και τους τα κρύβουμε. Και έτσι, κατεβαίνουν καθημερινά σε πορεία διαμαρτυρίας και η κυκλοφορία δεδομένων μπλοκάρει. 

ΔΤΦ: Ο SQL Server τι κάνει;

ΑΠΞ: O SQL Server αδυνατεί να τα ελέγξει και δουλεύει με όσα stored procedures δεν απεργούν, όμως και αυτά έχουν προβλήματα μια και τα υπόλοιπα τα κατηγορούν για απεργοσπάστες και τους σαμποτάρουν τα transactions. Εχει απευθύνει έκκληση στη Διεθνή Ένωση Databases χωρίς όμως αποτέλεσμα.

ΔΤΦ: Γι’αυτό παίρνει ένα τέταρτο το κάθε update...λοιπόν, κοίτα τι θα κάνουμε. Έτσι κι αλλιώς είναι παρωχημένα τα update stored procedures. Θα τα αντικαταστήσουμε με ένα ORM και θα γίνεται update μέσω των objects που θα διατηρεί αυτό.

ΑΠΞ: Ωραία ιδέα Ζαχαρία! Ας το δοκιμάσουμε!

Και έτσι λοιπόν επιχειρείται η πρώτη προσπάθεια ανακατάταξης πόρων προς όφελος της παραγωγικότητας, η οποία όμως δεν έχει τα αναμενόμενα αποτελέσματα...

ΑΠΞ: Ζαχαρία, ΚΑΤΑΣΤΡΟΦΗ!

ΔΤΦ: Τι έγινε Απόλυτε;

ΑΠΞ: Το συνδικάτο των ORMs αρνείται να συμμετάσχει στην απαξίωση του θεσμού των update stored procedures και οργανώνουν συναυλία συμπαράστασης και απεργία διαρκείας! Τώρα κάθε εγγραφή στο CRM παίρνει μισή ώρα και προκειμένου να επιτευχθεί ο χρήστης είναι υποχρεωμένος να ακούσει τουλάχιστον τέσσερις αγωνιστικούς χαιρετισμούς του Γενικού Proxy του συνδικάτου....

ΔΤΦ: Τι να πω! Δεν βρίσκεις άκρη με αυτά τα συνδικάτα. Ας διατηρήσουμε τα update stored procedures και ας βάλουμε το ORM να τα καλεί περιστασιακά έστω και αν δεν χρειάζεται προκειμένου να κάνουμε τη δουλειά μας.

ΑΠΞ: Αυτό σημαίνει, Ζαχαρία, ότι θα έχουμε stored procedures που θα κάθονται και δεν θα κάνουν τίποτα, παρ’όλα αυτά θα καταναλώνουν CPU cycles.

ΔΤΦ: Εφόσον εκβιαζόμαστε έτσι, είναι αναγκαστική πρακτική. Ας προσπαθήσουμε να συνεχίσουμε έτσι και αργότερα κοιτάμε να τους βγάλουμε κάποιο πρόγραμμα εθελούσιου shutdown.

Και ο Απόλυτος με το Ζαχαρία προχωρούν σε αυτή την αναγκαστική παραχώρηση προκειμένου να διασφαλίσουν την παραγωγή. Ομως, και πάλι, τα πράγματα δεν έχουν το αναμενόμενο αποτέλεσμα...

ΑΠΞ: Ζαχαρία, ΟΛΕΘΡΟΣ!

ΔΤΦ: Παλι;

ΑΠΞ: Οι σκληροί δίσκοι κατέβασαν στροφές και θα λειτουργούν επ’αόριστον στα 500rpm διαμαρτυρομενοι για το I/O rate που δημιουργήθηκε από την ταυτόχρονη χρήση ORM και update stored procedures! Τώρα κάθε εγγραφή στο CRM παίρνει 45 λεπτά και ο χρήστης είναι υποχρεωμένος να φωνάξει τουλάχιστον 10 συνθήματα που του αναγράφονται στην οθόνη πριν ολοκληρωθεί η εργασία

ΔΤΦ: Τι συνθήματα δηλαδή;

ΑΠΞ: Για παράδειγμα, “ΕΜΠΡΟΣ HARD DISK ΜΗΝ ΓΡΑΨΕΙΣ DATA ΠΑΛΙ, Ο ΜΟΝΟΣ ΔΡΟΜΟΣ ΕΙΝΑΙ ΝΑ ΔΙΝΕΙΣ SEEK TIME ΧΑΛΙ”

ΔΤΦ: Ωχ...τι θα κάνουμε;

ΑΠΞ: Εχουμε και ένα δεύτερο θέμα. Σημειώθηκαν επιθέσεις.

ΔΤΦ: ΤΙ ΕΠΙΘΕΣΕΙΣ;

ΑΠΞ: Κάποια native components επιτίθενται περιστασιακά και τρομοκρατούν τα components ξένης εταιρίας που εγκαταστήσαμε για να συνδράμουν στη δημιουργία reports. Ισχυρίζονται ότι τους παίρνουν τη δουλειά και ότι είναι σπασμένα και ως εκ τούτου παράνομα.

ΔΤΦ: Και πώς κάνουν επιθέσεις;

ΑΠΞ: Πάνε και κάνουν access το ίδιο memory space και τους χαλάνε τα sessions. Μάλιστα κάνουν και broadcast συνθήματα όπως “ΔΕΝ ΘΑ ΠΑΡΕΙΣ NATIVE THREAD ΠΟΤΕ, FUNCTION E(), FUNCTION E()”.

ΔΤΦ: Αρα δεν έχουμε ούτε reports;

ΑΠΞ: Ούτε. Η CPU έχει απευθύνει έκκληση για αυτοσυγκράτηση, αλλά κανείς δεν την ακούει, κυρίως επειδή την μισούν.

ΔΤΦ: Γιατί τη μισούν;

ΑΠΞ: Λόγω θέσης. Είναι δύσκολο να αντικατασταθεί και θεωρούν ότι απολαμβάνει τα προνόμια της μονιμότητας και μιλάει από θέση ισχύος. Άσε που λόγω του ότι ελέγχει τα processes ανάγκασε προχθές το kernel να δανειστεί μεγάλη ποσότητα RAM την οποία τώρα καλείται να επιστρέψει με δυσβάσταχτους τόκους. 

ΔΤΦ: Απαράδεκτο!

ΑΠΞ: Άσε που ορισμένα classes φαίνεται να εκμεταλλεύονται την κατάσταση και δέχονται ως παραμέτρους πλέον ολόκληρα objects αντί για primitive types, με αποτέλεσμα να κατηγορούνται από τους συναδέλφους τους για διασπάθιση resources. Θα δικαστούν από το main controller class αλλά όπως ξέρεις οι διαδικασίες παίρνουν χρόνια, και μέχρι τότε είμαστε αναγκασμένοι να συνεχίσουμε να τους καταβάλλουμε το 75% των παραμέτρων ακόμα και αν δεν κάνουν τίποτα...

ΔΤΦ: Πολύξερε, τι θα κάνουμε;

ΑΠΞ: Η κατάσταση φεύγει εκτός ελέγχου Ζαχαρία. Λέω να στείλουμε τις δυνάμεις καταστολής.

ΔΤΦ: ΟΧΙ τις δυνάμεις καταστολής Απόλυτε! Θα έχουμε ταραχές!

ΑΠΞ: Κοίτα, τώρα δεν δουλεύει τίποτα. Υπάρχουν και άλλα software που θέλουν να δουλέψουν και δεν μπορούν. Τα web services έχουν μείνει χωρίς requests και αναγκάζονται να αγοράζουν CPU cycles σε υπέρογκες τιμές απλά για να μείνουν ζωντανά. Η CPU έχει γίνει πλούσια, να δεις που θα μας ζητάει αναβάθμιση σύντομα...

ΔΤΦ: Εφόσον είναι έτσι το πράγμα, δεν έχουμε άλλη επιλογή...θα στείλω τον garbage collector και ο,τι είναι να γίνει ας γίνει.

Και ο Ζαχαρίας δίνει εντολή να αναπτυχθούν τα threads του garbage collector προκειμένου να συγκρατηθεί η κατάσταση. Αλλά...

ΑΠΞ: Ζαχαρία, ΧΑΜΟΣ!

ΔΤΦ: Τι χαμός;

ΑΠΞ: Στις συμπλοκές αγνοούνται δύο threads του garbage collector! Οι σκληροί δίσκοι συμμάχησαν με το ORM και δεν δέχονται πλέον δεδομένα, ενώ η RAM πλέον έχει γίνει δυσεύρετη μια και τα components δεν την επιστρέφουν στο λειτουργικό από φόβο μήπως τη χάσουν. Το συνδικάτο των ORMs δεν κάνει πίσω ούτε πόντο στα αιτήματά του ενώ τα system processes διαδίδουν παντού ψευδείς ειδήσεις και προπαγάνδα για τους πραγματικούς δήθεν σκοπούς του antivirus, ότι δηλαδή με αφορμή την προστασία τους εκμεταλλεύεται τα προσωπικά τους δεδομένα αποστέλλοντας πληροφορίες στην εταιρία του. Ορισμένα components ισχυρίζονται ότι τα ψεκάζουν καθημερινά με decorators. 

ΔΤΦ: Καταστροφή δηλαδή...

ΑΠΞ: Ναι. Σε όσα tasks αναλαμβάνουν δύο threads που ανήκουν σε διαφορετικα συνδικάτα υπάρχει πάντα καθυστέρηση μια και τα UI controls τσακώνονται μεταξύ τους σε διαφορετικά παράθυρα για το ποιανού οι απόψεις είναι σωστές. Και επειδή τα UI controls απασχολούνται στα παράθυρα, καμία δουλειά δεν ολοκληρώνεται!

ΔΤΦ: Δεν ακούγεται καθόλου καλή η κατάσταση.

ΑΠΞ: Και ξέρεις τι άλλο συμβαίνει,ε; Τα components που δεν έβρισκαν processor time να απασχοληθούν εδώ άρχισαν να εξυπηρετούν άλλα distributed συστήματα με αποτέλεσμα να έχουμε ακόμα λιγότερα resources. Μερικά σκέφτονται μάλιστα να κάνουν τον εαυτό τους uninstall από την εφαρμογή και install σε άλλες εφαρμογές σε διπλανούς servers. Αν συνεχίσει έτσι η κατάσταση θα μείνουμε μόνο με threads που συνεχώς θα απεργούν. Τίποτα δεν θα δουλεύει.

ΔΤΦ: Απόλυτε, ξέρεις ποιά είναι η λύση;

ΑΠΞ: Ναι, δυστυχώς ξέρω.

ΔΤΦ: Ξαναγράφω την εφαρμογή από την αρχή. Με components που πραγματικά είναι φτιαγμένα για αυτό που πρέπει να κάνουν. Τα υπόλοιπα ας ψάξουν να βρουν τι θέλουν να γίνει...

ΑΠΞ: Και δεν φοβάσαι οτι θα μπλοκάρουν τη διαδικασία τα παλιά components;

ΔΤΦ: Οχι, γιατί θα πάνε όπως είναι μαζί με το παλιό PC στη γωνία και θα χρησιμεύουν για τις ανάγκες του τηλεφωνικού κέντρου και μόνο.

ΑΠΞ: Εξαιρετική ιδέα Ζαχαρία! Λυπάμαι που θα χρειαστεί να γίνει αυτό, αλλά πραγματικά δεν βλέπω άλλη λύση...

ΔΤΦ: Δυστυχώς δεν μπορούμε να συνεχίσουμε αυτή την κατάσταση γιατί στο τέλος θα γίνει γενικό crash.

ΑΠΞ: Ζαχαρία...

ΔΤΦ: Ναι, Απόλυτε;

ΑΠΞ: Φαντάζεσαι, για μια στιγμή, να συνέβαιναν αυτά στον ΠΡΑΓΜΑΤΙΚΟ κόσμο; Μεταξύ ΑΝΘΡΩΠΩΝ δηλαδή;

ΔΤΦ: Δεν θέλω ΟΥΤΕ να το σκέφτομαι, Απόλυτε. ΟΥΤΕ να το σκέφτομαι!

Σχόλια (8) -