
Πόσο σημαντική είναι η έννοια του αυτοματισμού διαδικασιών στις τεχνολογίες που χρησιμοποιούμε σήμερα;
Είναι 4:50 μμ και είσαι στη δουλειά σου, σε 10 λεπτά ετοιμάζεσαι να σχολάσεις.
Τέλεια… θα πας σπίτι να ξεκουραστείς! Μέχρι που…
Μαθαίνεις ότι κάτι πάει στραβά και πρέπει να αναλάβεις μία διεργασία που δεν γίνεται να αναβληθεί για αύριο.
Παρόλα αυτά, μιας και είσαι ένα από τα αξιόπιστα μέλη της ομάδας σου, με μεγάλη χαρά ξεκινάς να εκτελείς το έργο που χρειάζεται.
Φυσικά! Ως γνήσιος γκαντέμης, από εκεί που δεν το περιμένεις, για ακόμη μία φορά εφαρμόζεται ο θεμελιώδης νόμος του Murphy.
Σύντομα, θα δεις ότι τα πράγματα πάνε στραβά, πράγμα που καταλήγει να παίρνει πολύ περισσότερο χρόνο από όσο περίμενες η όλη διαδικασία. Και μάλιστα, για κάτι που έχεις κάνει στο παρελθόν επανειλημμένα και θα μπορούσε να εκμηδενιστεί χρονικά.
🧠 Πρόβλημα
Ωραία… Μέχρι τώρα δεν βγάζει κανένα απολύτως νόημα όλο αυτό που λέω, οπότε πάμε να δούμε ένα πραγματικό παράδειγμα για να γίνει πιο ξεκάθαρη η ιδέα.
Έστω ότι δουλεύεις ως IT σε μία τοπική εταιρεία που πουλάει ηλεκτρολογικό εξοπλισμό.
Αυτό λοιπόν που έγινε, είναι ότι το σύστημα που τρέχει το πρόγραμμα για τη διαχείριση της αποθήκης, για κάποιο λόγο, δεν ανταποκρίνεται. Παρόλα αυτά, επειδή το κατάστημα θα είναι ανοιχτό μέχρι τις 9:00 το βράδυ, θα πρέπει να μην έχει downtime ώστε να μπορουν να εξυπηρετηθούν οι πελάτες.
Καταλαβαίνεις ότι το θέμα δεν σχετίζεται με τη βάση δεδομένων, οπότε, αφού έχεις backup της εφαρμογής, για κάποιο λόγο επιλέγεις να την ξανακάνεις deploy σε κάποιο VM — τουλάχιστον για σήμερα — και αύριο να κάνεις troubleshoot το πρόβλημα και να το λύσεις.
Δημιουργείς σε έναν hypervisor ένα νέο VM, εγκαθιστάς τα dependencies και πας να κάνεις deploy την εφαρμογή — και βλέπεις ότι δεν δουλεύει…

Γρήγορα συνειδητοποιείς ότι πρόκειται για compatibility issue με τα dependencies. Αυτά που εγκατέστησες δεν είναι συμβατά, οπότε πρέπει να περιμένεις ξανά να εγκατασταθούν τα απαραίτητα πακέτα και να ξαναδοκιμάσεις.
Έπειτα, βλέπεις ότι τα resources που είχες δώσει όταν δημιούργησες το VM δεν επαρκούν, τώρα έχεις και αυτό το πρόβλημα. Πρέπει δηλαδή να σταματήσεις το VM, να κάνεις τις απαραίτητες αλλαγές στα hardware characteristics που έχεις ορίσει και να ξαναδοκιμάσεις αν λειτουργεί η εφαρμογή.
Τελικά μετά από αρκετή ώρα, καταφέρνεις να ξανά δουλέψει το σύστημα, έστω προσωρινά, μέχρι αύριο να το λύσεις. Ακόμα και αν είναι “μπακαλίστικη” μέθοδος, υποθέτουμε για το παράδειγμα ότι δουλεύει…
Η διαδικασία, γενικά, είναι απλή σε αυτήν τη συγκεκριμένη περίπτωση. Παρ’ όλα αυτά, λίγο ότι βιαζόσουν να φύγεις, λίγο ότι δεν είχες όρεξη σήμερα, λίγο η φασαρία που υπήρχε στο κατάστημα… δεν σε άφησαν να συγκεντρωθείς.
Καταλαβαίνουμε, λοιπόν, ότι ο ανθρώπινος παράγοντας, σε συνδυασμό με το “δεν κρατάω notes γιατί τα θυμάμαι όλα” και το “δεν αυτοματοποιώ καταστάσεις”, τελικά σε οδήγησαν σε καθυστέρηση.
Βέβαια… ας μην είμαστε άδικοι! Δεν χρειάζεται — ή δεν είναι δυνατόν — όλες οι διαδικασίες να αυτοματοποιούνται. Σε όλα υπάρχει ένα trade-off, με βάση το οποίο θα πρέπει να ενεργούμε.
Επίσης, φαντάσου να μην εργαζόσουν σε ένα τοπικό κατάστημα, αλλά να έπρεπε να κάνεις αντίστοιχες ενέργειες ως μέλος του IT Operations team σε μία πολυεθνική. Τι θα γινόταν τότε;
🔧 Εργαλεία
Στο συγκεκριμένο λοιπόν πλαίσιο που συζητάμε, είναι δυνατόν — με established εργαλεία — όχι μόνο να αυτοματοποιήσουμε κάθε μέρος από όσα αναφέραμε, αλλά και να μην χρειάζεται καν να ανησυχούμε ότι η εφαρμογή μπορεί να σταματήσει να ανταποκρίνεται.
Εργαλεία όπως το Terraforms, Puppet, Ansible, Jenkins, Pulumi, κλπ. μπορούν να παρέχουν αυτοματοποίση σε διάφορα στάδια.
Σε αρκετά από αυτά, μάλιστα, μπορούμε να “τους πούμε” ποιες ενέργειες θέλουμε να πραγματοποιήσουμε μέσω αρχείων κειμένου, με αποτέλεσμα να μας παρέχονται αρκετά πλεονεκτήματα — όπως η δυνατότητα για version control, η συνεργασία με άλλους συναδέλφους πάνω στα ίδια συστήματα, ή η επανάληψη παρόμοιων διεργασιών σε διαφορετικούς πελάτες.
Ενδεικτικά, ας αναφέρουμε για διάφορες διεργασίες μερικά εργαλεία.
🏗️ Provisioning Tools:
- Terraforms: Cloud-agnostic IaC tool - Pulumi: IaC using general-purpose languages (e.g. Python, Go) - AWS CloudFormation: AWS-specific IaC tool - Vagrant: Local development environments with virtual machines
Με αυτά τα εργαλεία μπορούμε να δημιουργήσουμε, με αυτοματοποιημένο τρόπο, επαναλαμβανόμενες υποδομές όπως servers, networks, security groups κ.λπ.
🧩 Configuration Tools:
- Ansible: Agentless configuration management using YAML - Chef: Ruby-based configuration management using cookbooks - Puppet: Declarative configuration with its own DSL
Τα συγκεκριμένα εργαλεία μπορούν να μας βοηθήσουν στο configuration των servers, routers, κλπ.
🔁 CI/CD (Continuous Integration / Continuous Deployment)
- Jenkins: Popular open-source automation server. - GitLab CI/CD: Built into GitLab repositories. - GitHub Actions: CI/CD automation directly in GitHub
Αν μας ενδιαφέρει να αυτοματοποιήσουμε τον τρόπο με τον οποίο ελέγχουμε και κάνουμε deploy τις εφαρμογές, μπορούμε να χρησιμοποιήσουμε κάποιο από τα παραπάνω εργαλεία.
🔧 Monitoring, Logging & Observability
- Prometheus: Monitoring and alerting toolkit - Grafana: Visualization and dashboards - ELK Stack: Logging and analytics
Για τον αυτόματο έλεγχο των πόρων συστημάτων ή των προβλημάτων που μπορεί να εμφανιστούν σε αυτά, υπάρχουν επίσης αντίστοιχα tools.
🧠 General Automation
- n8n: Low-code automation tool
Σε περίπτωση που μας ενδιαφέρει να αυτοματοποιήσουμε μία γενική διεργασία στο διαδίκτυο, αυτό είναι επίσης εφικτό.
💭 Σύνοψη
Η λίστα με εργαλεία υπάρχει μόνο για να μας δείξει ότι, καθημερινά, είναι σημαντικό να αυτοματοποιούμε διεργασίες — και ότι, ανάλογα με τη διεργασία που θέλουμε να αυτοματοποιήσουμε, κάποιος… κάπου… εκεί έξω, πιθανόν να είχε παρόμοιο πρόβλημα με εμάς και έφτιαξε ένα εργαλείο.
Όσο αυτοματοποιούμε καταστάσεις, λύνουμε ένα πρόβλημα μία φορά — και ίσως να μην χρειαστεί να το ξαναλύσουμε στο μέλλον!
Αυτό μας δίνει τη δυνατότητα, μελλοντικά, να μη χρειάζεται να επανεφευρίσκουμε τον τροχό· να παίρνουμε λύσεις μικρότερων προβλημάτων ως έτοιμες υλοποιήσεις (σαν εργαλεία) και να ασχολούμαστε με πιο σύνθετα και μεγάλα προβλήματα.
Είναι ο ίδιος λόγος για τον οποίο επιλέγουμε πλέον, από την Αθήνα, να επικοινωνήσουμε με κάποιον στη Νέα Υόρκη μέσω μηνύματος σε κάποια πλατφόρμα κοινωνικής δικτύωσης — και όχι στέλνοντας γράμμα μέσω ταχυδρομείου. Δεν χρειάζεται ο ανθρώπινος παράγοντας σε όλο αυτό: λιγότερη πιθανότητα για ανθρώπινα λάθη, πιο γρήγορο και πιο εύκολο. Πλέον, το πρόβλημα της επικοινωνίας έχει σχεδόν εκμηδενιστεί — χωρίς, όμως, αυτό να σημαίνει ότι έχει λυθεί οριστικά. Μας δίνει, όμως, τη δυνατότητα να επικεντρωθούμε σε άλλα ζητήματα.
Σε μελλοντικά άρθρα, θα καταπιαστούμε με μερικά από τα παραπάνω εργαλεία, προκειμένου να δούμε τελικά πώς μπορούμε να τα αξιοποιήσουμε, σε περίπτωση που ασχολούμαστε — είτε επαγγελματικά είτε ερασιτεχνικά — με τεχνολογικά θέματα.