Ηγέτες σκέψης
GraphQL – Αλλάζοντας και Βελτιώνοντας τον Τρόπο Επικοινωνίας των Εφαρμογών

Δεν θα χρειαστεί πολύς καιρός trước το επόμενο поколείο να αγοράσει κρυπτονομίσματα και να ελέγξει το ισοζύγιό του σε ενότητες εναλλακτικών επενδύσεων στο λόμπι του Fortnite μεταξύ των παιχνιδιών. Αυτό θα επιτευχθεί μέσω πολλών τεχνολογικών προόδων.
Αυτή την στιγμή συζητάμε τον τρόπο με τον οποίο μεταφέρεται η δεδομένα (διαβάζονται, ενημερώνονται, προστίθενται/αφαιρούνται) μεταξύ εφαρμογών και των εταιρειών που τις κατέχουν. Οι διεπαφές προγραμματισμού εφαρμογών (API) είναι η αρχιτεκτονική που ορίζει αυτή τη διαδικασία επικοινωνίας δεδομένων και, καθώς αυτές οι προδιαγραφές έχουν εξελιχθεί, οι απαιτήσεις επεξεργασίας και αποθήκευσης δεδομένων έχουν γίνει λιγότερο δυσχερείς.
Ο ηγέτης στο πακέτο όσον αφορά τη “λεία” χρήση πόρων είναι το GraphQL, μια ανοιχτού κώδικα γλώσσα ερωτήματος και χειρισμού δεδομένων. Η βάση του οικοσυστήματος του είναι η προδιαγραφή του και μια συλλογή εργαλείων που έχει δημιουργηθεί γύρω του.
Δεν είναι καινούργιο – ο χρόνος περνά γρήγορα. Η Facebook το ανέπτυξε το 2012 και το χρησιμοποιούσε μόνο εσωτερικά για την ανάπτυξη κινητών εφαρμογών. Το 2015 ήταν “ανοιχτό” και σήμερα φροντίζεται από το Ίδρυμα GraphQL (https://graphql.org/foundation/) που επιβλέπει την περαιτέρω ανάπτυξή του.
Γιατί γράφω γι’ αυτό τώρα; Ένας τυπικός δρόμος προς την τεχνολογική υιοθέτηση θα ακολουθήσει τις ακόλουθες υιοθεσίες 1) χόμπι/προσωπικά προγράμματα, 2) εφαρμογές σε πολλαπλά γλωσσικά, 3) εφαρμογές σε εταιρείες και μικρές εταιρείες, 4) μεσαίες εταιρείες και χρήση στην ανάπτυξη προϊόντων, 5) μεγάλες εταιρείες και τεχνολογικοί γίγαντες.
Το GraphQL έχει φτάσει στο επίπεδο 5. Αυτή τη στιγμή χρησιμοποιείται από το GitHub, το Pinterest, το Shopify, τη Microsoft για να αναφέρουμε μόνο quelques και πιο πρόσφατα, από τον Μάρτιο του 2022, η Salesforce.
Ψάχνοντας έναν τρόπο να ανακτήσω δεδομένα πιο αποτελεσματικά από τη Salesforce, ήρθα σε επαφή με την τεκμηρίωση GraphQL τους και άρχισα να διαβάζω και να εξετάζω τρόπους για να το εφαρμόσω.
Πώς διαφέρει από μια παραδοσιακή REST API;
- Ένα από τα κύρια πλεονεκτήματα είναι ότι με το GraphQL μπορείτε να κάνετε ερωτήματα και να λαμβάνετε μόνο τα συγκεκριμένα δεδομένα. Αν θέλετε μόνο δύο πεδία που σχετίζονται με μια συγκεκριμένη περίπτωση πελάτη, τότε αυτό είναι ό,τι θα λάβετε. Μια παραδοσιακή REST API θα σας επιστρέψει όλα τα πεδία που σχετίζονται με την περίπτωση. Αυτό θα μπορούσε να είναι 100+ πεδία. Τώρα πρέπει να κάνετε κάτι με όλα αυτά τα δεδομένα που δεν θέλατε να αρχίσετε. Αυτό ονομάζεται πλεονάζουσα λήψη δεδομένων (η ελλιπής λήψη είναι επίσης ένα πρόβλημα).
- Το παραπάνω καθιστά το GraphQL γρηγορότερο από άλλες μεθόδους API όταν επιστρέφονται δεδομένα.
- Το GraphQL είναι μια ισχυρά τυποποιημένη γλώσσα που, μεταξύ άλλων, σημαίνει ότι τα λάθη του κώδικα αναγνωρίζονται πριν από την εκτέλεση του προγράμματος και όχι κατά τη διάρκειά του.
- Ένα εξαιρετικό σύνολο εργαλείων έχει δημιουργηθεί γύρω από το GraphQL, το οποίο έχει κάνει πολύ φιλικό προς τους développers.
- Το GraphQL έχει ένα μόνο τελικό σημείο, σε αντίθεση με την REST API, η οποία έχει πολλαπλά τελικά σημεία. Αυτό σημαίνει ότι όλα τα δεδομένα σας μπορούν να ανακτηθούν με μια seule αίτηση.
Δυο πλευρές του νομίσματος: αιτούντα (πελάτης) και πάροχος (GraphQL host)
Έχω εξετάσει το GraphQL μέχρι τώρα από την πλευρά της “αίτησης” δεδομένων. Όπου μια εταιρεία όπως η Salesforce ή η Microsoft έχει ρυθμίσει ένα GraphQL API που μπορείτε να χρησιμοποιήσετε για να κάνετε ερωτήματα και να χειρίζεστε δεδομένα (διαβάζοντας, ενημερώνοντας, προσθέτοντας).
Για παράδειγμα, αν θέλαμε να συμπεριλάβουμε δεδομένα από τη Salesforce σχετικά με περιπτώσεις πελάτη σε einen πελάτη πύλη, ο πιο αποτελεσματικός τρόπος για να το κάνουμε αυτό θα ήταν να ζητήσουμε τα ακριβή δεδομένα που θέλουμε μέσω ενός ερωτήματος GraphQL από την πύλη προς τον διακομιστή GraphQL της Salesforce. Θα λάβετε ακριβώς τα δεδομένα που θέλετε, χωρίς υπέρ- ή υπο-λήψη και ως αποτέλεσμα, δεν θα χρειαστείτε πρόσθετη επεξεργασία ή αποθήκευση δεδομένων.
Η άλλη πλευρά του νομίσματος είναι η οργάνωση που ρυθμίζει την αρχιτεκτονική GraphQL, ώστε οι πελάτες σας να έχουν έναν αποτελεσματικό τρόπο για να προσεγγίσουν τα δεδομένα που θέλουν.
Κατά τη διάρκεια της δημιουργίας του GraphQL API, μια οργάνωση δημιουργεί ένα μοντέλο που ενσωματώνει όλα τα συστήματά της σε ένα μοντέλο. Αυτό ενοποιεί αυτά τα συστήματα και, μια φορά που ολοκληρωθεί το έργο, η ερώτηση των δεδομένων γίνεται άρτια μέσω του API.
Όταν συγκρίνω εφαρμογές ή παρόχους, κοιτάω τι λειτουργίες προσφέρουν για να λάβω τα δεδομένα μου πίσω από αυτούς. Δεν θέλω να πρέπει να τους στείλω email ή να βασιστώ σε σκληρά προκαθορισμένα αναφορές. Θέλω να μπορώ να “συνδεθώ” στα δεδομένα μου, να τα ερωτήσω με έναν ευέλικτο και έγκαιρο τρόπο. Αν έρθω σε δύο εφαρμογές/παρόχους και είναι παρόμοια σε άλλα σημεία σύγκρισης και ένας από αυτούς προσφέρει είτε μια REST API είτε μια GraphQL API, θα επιλέξω σίγουρα εκείνον με την API.












