Μεθοδολογίες Ανάπτυξης Υπηρεσιών Διαδικτύου – Ανάπτυξη Εφαρμογών για Κινητά, Υπηρεσίες Ιστού, Αρχιτεκτονική - Τεχνολογία SOA
Μεταπηδήστε στο περιεχόμενο

Μεθοδολογίες Ανάπτυξης Υπηρεσιών Ιστού – Ανάπτυξη Εφαρμογών για Κινητά, Υπηρεσίες Ιστού, Αρχιτεκτονική SOA

Διαφημίσεις

Ο Coulouris όρισε τα κατανεμημένα συστήματα ως «συστήματα στα οποία στοιχεία υλικού και/ή λογισμικού που υπάρχουν σε ένα δίκτυο υπολογιστών επικοινωνούν και συντονίζουν τις ενέργειές τους ανταλλάσσοντας μηνύματα».

Αυτή η ιδέα έχει γίνει δημοφιλής τα τελευταία χρόνια λόγω πολλών παραγόντων. Ο πρώτος παράγοντας που προώθησε την ανάπτυξη κατανεμημένων συστημάτων ήταν η εμφάνιση τοπικών δικτύων υψηλής ταχύτητας. Ένας άλλος σημαντικός παράγοντας ήταν η τεχνολογική πρόοδος στην απόδοση των προσωπικών υπολογιστών και η ανάπτυξη λογισμικού για την υποστήριξη κατανεμημένων εφαρμογών. Τα κατανεμημένα συστήματα συνδέονται με την έννοια του Ιστού και του Διαδικτύου. Με την εξέλιξη του Web, και την εμφάνιση νέων περιοχών, αλληλεπιδράσεων, αναγκών και εφαρμογών, εμφανίζεται η έννοια του Web 2.0. Αυτός ο όρος επινοήθηκε από τον Tim O'Reilly το 2004 για να αναφέρεται σε μια δεύτερη γενιά στην ιστορία του Ιστού που βασίζεται σε κοινότητες χρηστών και σε μια ειδική σειρά υπηρεσιών, όπως κοινωνικά δίκτυα, ιστολόγια, wiki ή folksonomies, που ενθαρρύνουν τη συνεργασία και τη γρήγορη ανταλλαγή πληροφοριών μεταξύ των χρηστών.

Οι πρώτες αρχιτεκτονικές που μπορούν να θεωρηθούν προσανατολισμένες στις υπηρεσίες (SOA) βασίστηκαν στο CORBA (Common Object Request Broker Architecture), το οποίο λειτουργούσε ως στρώμα αφαίρεσης για τη διασύνδεση των διαφορετικών στοιχείων της αρχιτεκτονικής και τη δημιουργία υπηρεσιών. Άλλες προηγούμενες τεχνολογίες ήταν το DCOM (Distributed Component Object Model) ή το RPC (Remote Procedure Protocol). Με την ανάγκη αποτελεσματικού σχεδιασμού και υλοποίησης κατανεμημένων συστημάτων στον Ιστό, προκύπτουν αρκετές προκλήσεις, μερικές επικεντρωμένες στην ίδια την ανάπτυξη (απόδοση, εμπειρία χρήστη κ.λπ.) και άλλες συμπληρωματικές, με βάση την επαναχρησιμοποίηση και συμβατότητα των υπηρεσιών. Από αυτές τις ανάγκες προκύπτουν οι Υπηρεσίες Ιστού, οι οποίες παρέχουν τυποποιημένους μηχανισμούς διασύνδεσης διαφορετικών χρηστών με διακομιστές πληροφοριών.

ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΠΡΟΣΑΝΑΤΟΛΙΣΜΕΝΕΣ ΣΤΙΣ ΥΠΗΡΕΣΙΕΣ

Σύμφωνα με το SOA (Service Oriented Architecture) είναι αρχιτεκτονικές λογισμικού που ορίζουν τη χρήση υπηρεσιών για την υποστήριξη επιχειρηματικών απαιτήσεων, στόχος των οποίων είναι να επιτευχθεί η ελάχιστη δυνατή σύζευξη μεταξύ των πρακτόρων λογισμικού. Μια υπηρεσία είναι μια μονάδα εργασίας που εκτελείται από έναν πάροχο υπηρεσιών για την επίτευξη ενός τελικού αποτελέσματος που επιθυμεί ένας καταναλωτής υπηρεσιών. Τόσο ο πάροχος υπηρεσιών όσο και ο καταναλωτής υπηρεσιών είναι ρόλοι που παίζουν οι πράκτορες λογισμικού και όχι οι ιδιοκτήτες λογισμικού. Με μια γενική έννοια, μια αρχιτεκτονική προσανατολισμένη στις υπηρεσίες είναι μια λύση λογισμικού που προορίζεται να επιτρέψει σε μια επιχείρηση να οργανώσει και να χρησιμοποιήσει διάφορες διαδικασίες. Με το SOA, οι εφαρμογές λογισμικού δεν είναι πλέον τεράστια μπλοκ λειτουργιών και διαδικασιών. Αντίθετα, αυτές οι εφαρμογές αποτελούνται από συναρμολογημένες αρθρωτές υπηρεσίες. Να θυμάστε ότι μια υπηρεσία είναι μια απλή λειτουργία λογισμικού (όπως η ακύρωση ενός CD). Μπορεί να εκτελεστεί κατόπιν ζήτησης από οποιοδήποτε σύστημα, ανεξάρτητα από λειτουργικό σύστημα, πλατφόρμα, γλώσσα προγραμματισμού ή γεωγραφική θέση.

Αυτό που είναι επαναστατικό για το SOA δεν είναι η ίδια η έννοια, η οποία υπάρχει εδώ και πολύ καιρό, αλλά το γεγονός ότι μπορεί να εφαρμοστεί μέσω του WWW (World Wide Web). Με τον ίδιο τρόπο που οι ιστοσελίδες φορτώνονται σε οποιαδήποτε πλατφόρμα, οι υπηρεσίες ιστού λειτουργούν παρόμοια ανεξάρτητα από την πλατφόρμα καθώς κατασκευάζονται χρησιμοποιώντας
καθολικά πρότυπα.

ΦωτογραφίαΗ ιδέα του SOA πηγάζει απευθείας από τον αντικειμενοστραφή προγραμματισμό, ο οποίος υποδηλώνει μια σχέση μεταξύ των δεδομένων και της επεξεργασίας τους. Έτσι, ορίζουν επίσημα τις υπηρεσίες μέσω διεπαφών που είναι ανεξάρτητες από την υποκείμενη πλατφόρμα και τη γλώσσα προγραμματισμού. Αυτές οι διεπαφές κρύβουν τις ιδιαιτερότητες της υλοποίησής τους, γεγονός που τις καθιστά ανεξάρτητες από το προγραμματιστής και γλώσσα προγραμματισμού. Μέσω αυτών των αρχιτεκτονικών, είναι δυνατός ο σχεδιασμός και η εφαρμογή συστημάτων υψηλής κλιμάκωσης που αντικατοπτρίζουν την επιχειρηματική λογική και ταυτόχρονα διευκολύνουν την αλληλεπίδραση μεταξύ διαφορετικών ιδιόκτητων ή τρίτων συστημάτων. Ο λόγος που θέλουμε κάποιος άλλος να κάνει τη δουλειά για εμάς είναι επειδή είναι ειδικοί. Η χρήση μιας υπηρεσίας είναι συνήθως φθηνότερη και πιο αποτελεσματική από το να την κάνετε μόνοι σας. Έτσι οι περισσότεροι από εμάς καταλαβαίνουμε ότι δεν μπορούμε να είμαστε ειδικοί σε όλα. Ο ίδιος κανόνας μπορεί να εφαρμοστεί στην κατασκευή συστημάτων λογισμικού.

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

Έτσι, επειδή διαθέτουμε μόνο λίγες γενικές διεπαφές, πρέπει να συμπεριλάβουμε σημασιολογία για συγκεκριμένη εφαρμογή στα μηνύματα. Μπορούμε να στείλουμε οποιοδήποτε είδος μηνύματος μέσω των διεπαφών μας, αλλά υπάρχουν ορισμένοι κανόνες που πρέπει να ακολουθούνται για να πούμε ότι μια αρχιτεκτονική είναι προσανατολισμένη στις υπηρεσίες.

– Πρώτον, τα μηνύματα πρέπει να είναι περιγραφικά και όχι διδακτικά, καθώς ο πάροχος υπηρεσιών είναι υπεύθυνος για την επίλυση του προβλήματος. Για παράδειγμα, θα ήταν παρόμοιο με την περίπτωση να πηγαίνεις σε ένα εστιατόριο και να λες στον σερβιτόρο τι θα ήθελες να πιεις και τις προτιμήσεις σου, αλλά δεν πρέπει να εξηγούμε στον μάγειρα πώς να ετοιμάζει τα πιάτα σου, βήμα-βήμα.

‐ Δεύτερον, οι πάροχοι υπηρεσιών δεν θα είναι σε θέση να κατανοήσουν το αίτημά σας εάν τα μηνύματά τους δεν είναι γραμμένα σε μορφή, δομή και λεξιλόγιο κατανοητό από όλους τους εμπλεκόμενους. Έτσι, ο περιορισμός του λεξιλογίου και της δομής των μηνυμάτων είναι α
απαραίτητη για αποτελεσματική επικοινωνία. Όσο πιο στενό είναι το μήνυμα, τόσο πιο κατανοητό.

- Τρίτον, η δυνατότητα παρατάσεων είναι ζωτικής σημασίας. Ο κόσμος είναι ένα μέρος που αλλάζει συνεχώς, όπως και το περιβάλλον στο οποίο ζει το λογισμικό. Αυτές οι αλλαγές απαιτούν αντίστοιχες αλλαγές στο λογισμικό συστήματος, τους καταναλωτές των υπηρεσιών, των παρόχων και των μηνυμάτων που ανταλλάσσουν. Εάν τα μηνύματα δεν είναι επεκτάσιμα, οι καταναλωτές και οι πάροχοι είναι κλειδωμένοι σε μια συγκεκριμένη έκδοση της υπηρεσίας. Ο περιορισμός και η επεκτασιμότητα συνδέονται βαθιά, χρειάζεστε και τα δύο, και η αύξηση του ενός σημαίνει μείωση του άλλου. Το ιδανικό είναι να επιτύχετε μια σωστή ισορροπία.

– Τέταρτον, ένα SOA πρέπει να έχει έναν μηχανισμό που επιτρέπει στον καταναλωτή να ανακαλύψει έναν πάροχο υπηρεσιών στο πλαίσιο μιας υπηρεσίας που αναζητά ο καταναλωτής. Ο μηχανισμός θα πρέπει να είναι ευέλικτος και όχι ένα κεντρικό μητρώο.

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

- Έκτον, ανεπαρκή αιτήματα (χωρίς αλλαγές): τα διπλά αιτήματα που λαμβάνονται από έναν πράκτορα λογισμικού έχουν το ίδιο αποτέλεσμα με ένα μεμονωμένο αίτημα. Αυτή η απαίτηση επιτρέπει στους παρόχους και τους καταναλωτές να αυξήσουν τη συνολική αξιοπιστία του σέρβις, επαναλαμβάνοντας απλώς το αίτημα σε περίπτωση αποτυχίας.

Μπορούμε λοιπόν να πούμε ότι το SOA δεν είναι ένα εργαλείο, αλλά ένα σύνολο προτύπων για τη δημιουργία νέων εφαρμογών, πιο δυναμικών και λιγότερο εξαρτημένων. Το SOA διευκολύνει την πρόσβαση σε επιχειρησιακή λογική και πληροφορίες σε πολλές υπηρεσίες με συστηματικό τρόπο και μπορεί επίσης να ενορχηστρώσει πολλαπλές απομακρυσμένες υπηρεσίες για να συνθέσει μία. τα περισσότερα από οι ορισμοί προσδιορίζουν τη χρήση των Υπηρεσιών Ιστού, που θα δούμε στο επόμενο κεφάλαιο, στην υλοποίηση μιας αρχιτεκτονικής προσανατολισμένης σε υπηρεσίες. Ωστόσο, μπορεί να εφαρμοστεί χρησιμοποιώντας οποιαδήποτε άλλη τεχνολογία που βασίζεται σε υπηρεσίες.