Υλοποίηση εφαρμογής restful web-service σε spring framework με οπτικοποίηση metrics σε prometheus και grafana
Data processing by implementation of restful api web service in spring framework with metrics visualization in prometheus and grafana
Προβολή/ Άνοιγμα
Λέξεις κλειδιά
Web services ; Spring Boot ; DevOpsΠερίληψη
Η δημιουργία του Διαδικτύου[1] αποτέλεσε το λίκνο για την επιστήμη της μετάδοσης της πληροφορίας, αρχής γενομένης στα τέλη της δεκαετίας του 60 με την δημιουργία του project ARPANET. Η εξέλιξη του τελευταίου καθώς και η δημιουργία του Παγκόσμιου Ιστού από τον Tim Berners Lee στα τέλη της δεκαετίας του 80, έφερε την επανάσταση, το μέγεθος της οποίας συνεχίζει να ανακαλύπτεται και σήμερα με νέες τεχνολογίες και υπηρεσίες στην διάθεση των ανθρώπων.
Αναμφισβήτητα το Διαδίκτυο θεωρείται ως το πλέον κοινωνικό αγαθό στις υπηρεσίες των πολιτών ενώ προβλέπονται ειδικές μέριμνες έτσι ώστε να γίνεται παντού προσβάσιμο. Ειδικά κονδύλια και επενδύσεις έχουν ήδη δοθεί και συνεχίζουν δίδονται από κυβερνητικούς και οργανισμούς τηλεπικοινωνιών, με σκοπό την ανάπτυξη σύγχρονων δικτύων υψηλών ταχυτήτων με κύρια τεχνολογία αυτής των οπτικών ινών κατ’ οίκων (Fiber To The Home - FTTH).
Όλα τα ανωτέρω σε συνδυασμό με την είσοδο της ανθρωπότητας στην 4η Βιομηχανική Επανάσταση, η οποία συντελεί στην όλο και μεγαλύτερη ψηφιοποίηση των υπηρεσιών και των διαδικασιών, όπου διέπονται απλές και καθημερινές λειτουργίες του ανθρώπινου πληθυσμού, κατέστησε εφικτή την δημιουργία του Διαδικτύου των Πραγμάτων (IoT). Η ανάπτυξη αυτή, απαιτεί με την σειρά της, μια ακόμη μεγαλύτερη ροή πληροφοριών από και προς σε συσκευές, οι οποίες απεικονίζουν και επεξεργάζονται τα δεδομένα αυτά, με στόχο την έγκαιρη ενημέρωση των χρηστών, απρόσκοπτα και σε πραγματικό χρόνο.
Καταλυτικό ρόλο στην επίτευξη των στόχων της 4ης Βιομηχανικής Επανάστασης αλλά και του Διαδικτύου των Πραγμάτων, εκτός των πολλών διαφορετικών τεχνολογιών, έπαιξε και συνεχίζει να παίζει η ανάπτυξη των υπηρεσιών διαδικτύου μέσω των πρωτοκόλλων SOAP και REST. Υπηρεσίες με ιδιαίτερη βαρύτητα στην μετάδοση και επεξεργασία δεδομένων, με σκοπό την επίτευξη των προαναφερθέντων στόχων.
Στην παρούσα διατριβή, θα αποτυπωθεί επι τω πρακτέω η υλοποίηση μιας υπηρεσίας διαδικτύου με χρήση της γλώσσας προγραμματισμού JAVA υπό το πρωτόκολλο REST, κάνοντας εφαρμογή του πιο διαδεδομένου περιβάλλοντος δημιουργίας υπηρεσιών διαδικτύου, ήτοι του Spring Boot. Κύριος σκοπός μέσα από την υλοποίηση αυτή, είναι η δημιουργία μιας εφαρμογής, η οποία θα μπορεί να λαμβάνει στην είσοδο της, δεδομένα απ’ οποιαδήποτε εξωτερική διεπαφή API, να τα επεξεργάζεται και να αποτυπώνει στην έξοδο της, αποτελέσματα που αφορούν το πεδίο ενδιαφέροντος των εκάστοτε χρηστών.
Υπό τις παραδοχές αυτές, η συγγραφή του παρόντος εγγράφου ξεκινά με το πρώτο κεφάλαιο να αναφέρεται σε εισαγωγικές έννοιες περί των υπηρεσιών JAVA WEB, με ιδιαίτερη έμφαση στα δύο πρωτοκόλλα που αναφέρθηκαν στις προηγούμενες παραγράφους. Θα πραγματοποιηθεί στοιχειοθέτηση ως προς την τελική χρήση του πρωτοκόλλου REST και εν συνεχεία, θα γίνει μια σύντομη εισαγωγή στο framework Spring και τα οφέλη που προκύπτουν από την χρήση του . Για λόγους ευκολότερης πρόσβασης στην βιβλιογραφία της παρούσας διατριβής, θα γίνεται χρήση bookmarks τα οποία θα λειτουργούν ως υπερσύνδεσμοι προς την τελευταία.
Το δεύτερο κεφάλαιο συνθέτει την εγκαθίδρυση των στόχων του παρόντος έργου, αρχής γενομένης με την υλοποίηση μιας ανάλυσης απαιτήσεων. Κατά την διεξαγωγή τους, θα προκύψει η ανάγκη για την κατανάλωση δύο εξωτερικών APIs. Μέσα από τo συνονθύλευμα αυτό, θα κατασκευασθεί ένα διάγραμμα τύπου χάρτη, για την κατανόηση των βημάτων και της αλληλουχίας των συστατικών που θα απαρτίσουν το τελικό αποτέλεσμα.
Το τρίτο κεφάλαιο, αποτελεί το σημείο τομής μεταξύ της θεωρίας μέχρι και την τελική υλοποίηση, αφού εκεί καταγράφονται οι τεχνολογίες και τα εργαλεία που χρησιμοποιήθηκαν. Θα δοθεί ιδιαίτερη βαρύτητα στην ασφάλεια της εφαρμογής, με υλοποίηση Spring Security σε πρωτόκολλο HTTPS και συστήματος αυθεντικοποίησης χρηστών μέσω συστήματος Email Verification. Σε ειδική ενότητα, θα αποτυπωθούν τα είδη των κλάσεων από τα οποία συνήθως αποτελείται ένα project Spring Boot και θα δοθούν επεξηγήσεις στα annotations που έλαβαν χώρα.
Στο τέταρτο κεφάλαιο, αναλαμβάνεται η κατασκευή DevOps διαδικασιών με τις πλατφόρμες Prometheus και Grafana, να έχουν πρωταγωνιστικό ρόλο. Θα δοθούν λεπτομερείς επεξηγήσεις ως προς την χρήση αυτών μέσω Docker και τα οφέλη που προκύπτουν με την αποτύπωση metrics και γραφικών dashboards. Η συνολική υλοποίηση έγινε μέσω WSL Ubuntu σε Windows 11 OS.
Τέλος στο πέμπτο κεφάλαιο, γίνεται η τελική χρήση των δύο API υπηρεσιών που καταναλώθηκαν εντός της εφαρμογής. Με εικόνες τύπου print screen δίνονται οι κατευθυντήριες γραμμές και η ακολουθία των HTML σελίδων πάνω στις οποίες απεικονίζονται τα καταναλισκόμενα αποτελέσματα από τις δύο APIs.