Αρχιτεκτονική Λογισμικού Τα σχήματα και το κείμενο είναι από το βιβλιο © Web services: Concepts, Architectures and Applications by Gustavo Alonso, Fabio Casati 1 Νοεμβρίου 2007
Αρχιτεκτονική Λογισμικού Σχεδίαση Πληροφοριακών Συστημάτων (ΠΣ) Σε εννοιολογικό επίπεδο, τα ΠΣ σχεδιάζονται γύρω από τρία στρώματα (layers): Στρώμα Παρουσίασης (presentation layer), Στρώμα Λογικής της Εφαρμογής (Application Logic Layer) και Στρώμα Διαχείρισης Πόρων (Resource Management Layer) Τα στρώματα αυτά μπορεί να είναι μόνο αφαιρετικοί σχεδιασμοί στο μυαλό των σχεδιαστών οι οποίοι παρόλα αυτά μπορεί να σχεδιάσουν πολύπλοκες υλοποιήσεις για λόγους απόδοσης διακριτά και απομεμονωμένα υποσυστήματα, που συχνά έχουν υλοποιηθεί με διαφορετικά εργαλεία
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Στρώματα ενός ΠΣ Client (πελάτης) είναι κάθε χρήστης ή πρόγραμμα το οποίο θέλει να πραγματοποιήσει μία λειτουργία σε ένα σύστημα. Presentation Layer (Στρώμα Παρουσίασης) Διευκολύνει την αλληλεπίδραση των πελατών με το σύστημα Application Logic Layer (Στρώμα λογικής της εφαρμογής) Καθορίζει τι ακριβώς κάνει το σύστημα. Φροντίζει για την εφαρμογή των business rules και εγκαθιδρύει τις business processes. Μπορεί να έχει διάφορες μορφές: προγράμματα, περιορισμοί, business processes, κλπ. Resource Management Layer (Στρώμα Διαχείρισης Πόρων) ασχολείται με την οργάνωση (storage, indexing, και retrieval) των απαραίτητων δεδομένων για την υποστήριξη του application logic. Συνήθως είναι μία βάση δεδομένων αλλά μπορεί να είναι και ένα σύστημα ανάκτησης δεδομένων ή ένα οποιοδήποτε άλλο σύστημα διαχείρισης δεδομένων που παρέχει δυνατότητα επερωτήσεων και persistence. presentation layer resource management layer application logic layer client Πληροφοριακό σύστημα
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Ένα παιχνίδι με κουτιά και βέλη Κουτί: ένα τμήμα του συστήματος Βέλος: σύνδεση μεταξύ δύο τμημάτων Όσο πιό πολλά κουτιά Τόσο πιό πολύ αρθρωτό (modular) σύστημα Τόσο πιό πολλές δυνατότητες γιά να είναι κατανεμημένο και παράλληλο Υποστηρίζεται η επαναχρησιμοποίηση Όσο πιό πολλά κουτιά και βέλη: Τόσο πιό πολλές συνδέσεις χρειάζεται να συντηρούνται και να συντονίζονται Τόσο πιό πολύπλοκη διαχείριση και παρακολούθηση Τα πολλά κουτιά: Οδηγούν σε μεγάλο αριθμό από context switches και απαιτούμενα ενδιάμεσα βήματα πριν φτάσεις στα δεδομένα Επιδρούν αρνητικά στην απόδοση Χρειάζεται εξισορρόποηση μεταξύ Του αρθρωτού σχεδιασμού Και των απαιτήσεων για απόδοση Οι σχεδιαστές συστημάτων προσπαθούν να συνδυάσουν την ευελιξία του αρθρωτού σχεδιασμού με τις απαιτήσεις απόδοσης των εφαρμογών. Δεν υπάρχει πρόβλημα στο σχεδιασμό συστήματος που να μη μπορεί να λυθεί με την προσθήκη ενός ακόμη επιπέδου indirection. Δεν υπάρχει πρόβλημα με την απόδοση που να μη μπορεί να λυθεί με την αφαίρεση ενός επιπέδου indirection
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού 1-tier αρχιτεκτονική : πλήρως συγκεντρωτική Οι presentation layer, application logic and resource manager έχουν δημιουργηθεί σαν μία μονολιθική οντότητα. Χρήστες/προγράμματα προσπελαύνουν το σύστημα μέσω οθονών-τερματικά αλλά το τι εμφανίζεται και το πως ελέγχεται από τον εξυπηρετητή. (Αυτά είναι “χαζά” τερματικά). Αυτή είναι η τυπική αρχιτεκτονική των mainframes, που προσφέρουν πολλά πλεονεκτήματα: Δεν χρειάζονται context switches στον έλεγχο ροής (όλα συμβαίνουν μέσα στο ίδιο σύστημα), Όλα είναι συγκεντρωμένα, η διαχείριση και ο έλεγχος πόρων είναι πιο εύκολος, η σχεδίαση είναι πλήρως βελτιστοποιημένη κάνοντας αόρατο το διαχωρισμό μεταξύ των επιπέδων. Server
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Μειονεκτήματα 1tier αρχιτεκτονικής Μονολιθικά κομμάτια κώδικα Δύσκολη και ακριβή συντήρηση Συνήθως υπάρχει έλειψη τεκμηρίωσης -> αδύνατον να αλλάξει το σύστημα Δύσκολο να κατανοηθεί αρχιτεκτονική του Έλειψη προγραμματιστών με εμπειρία σε αυτά τα συστήματα (legacy systems)
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού 2 tier: client/server Καθώς οι υπολογιστές γίονταν πιο ισχυροί, ήταν εύκολο να μετακινηθεί the presentation layer στον εξυπηρετούμενο. Αυτό έχει αρκετά πλεονεκτήματα: Clients είναι ανεξάρτητοι μεταξύ τους: μπορεί να υπάρχουν πολλά presentation layers ανάλογα με το τι θέλει να κάνει ο κάθε client. Η υπολογιστική ισχύς της μηχανής μπορεί να εκμεταλλευθεί από τον client για να έχει πιο πολύπλοκα presentation layers (πχ. Χρήστες και διαχειριστές) Έτσι κερδίζει πόρους και ο υπολογιστής του εξυπηρετητή. Eισάγεται η έννοια του API (Application Program Interface). Είναι ένας τρόπος αλληλεπίδρασης με το σύστημα από έξω. Portability of client across different platforms. The resource manager only sees one client: the application logic. Αυτό βοηθάει πάρα πολύ την απόδοση αφού δεν υπάρχουν συνδέσεις μεταξύ των clients να διατηρηθούν. 2-tier architecture Server
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού 2tier Αρχιτεκτονική presentation layer client Πληροφοριακό σύστημα resource management layer application logic layer Server
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού API in client/server Tα συστήματα Client/server εισήγαγαν τις έννοιες: service: ο client καλεί ένα service που υλοποιεί ο server service interface: με ποιό τρόπο ο client μπορεί να καλέσει ένα service) Το Application Program Interface (API) είναι όλα μαζί τα service interfaces που παρέχονται από τον server (είτε είναι application-specific είτε system specific). Δηλαδή το ΑPI περιγράφει πως μπορεί κάποιος απ έξω να επικοινωνήσει με τον server. Many standardization efforts were triggered by the need to agree to common APIs for each type of server resource management layer server service interface service interface service interface service interface server’s API service
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Πλεονεκτήματα 2-tier αρχιτεκτονικής Εκμεταλλεύονται τις δυνατότητες των clients μοιράζοντας φόρτο δουλειάς σε αυτούς. Η εργασία στον εξυπηρετητή λαμβάνει χώρα εντός ενός περιβάλλοντος (σχεδόν όπως στο 1- tier), Η σχεδίαση του εξυπηρετητή παραμένει tightly coupled και μπορεί να βελτιστοποιηθεί αγνοώντας τα θέματα παρουσίασης (μιάς και αυτά πάνε στο presentation layer) Εύκολο σχετικά να διαχειριστεί και να ελεγχθεί από άποψη λογισμικού
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Ο εξυπηρετητής έχει να αντιμετωπίσει όλες τις πιθανές συνδέσεις μεταξύ των εξυπηρετούμενων. Ο μέγιστος αριθμός εξυπηρετούμενων δίνεται από τον αριθμό των συνδέσεων που υποστηρίζει ο εξυπηρετητής με αποτέλεσμα να μειώνεται η επεκτασιμότητα της αρχιτεκτονικής. Οι εξυπηρετούμενοι είναι συνδεδεμένοι με το σύστημα αφού δεν υπάρχει συγκεκριμένο presentation layer. Εάν κάποιος θέλει να συνδεθεί με δύο συστήματα χρειάζεται δύο presentation layers. Αυτό συνεπάγεται αύξηση της πολυπλοκότητας του εξυπηρετούμενου. Δεν αντιμετωπίζονται θέματα αποτυχίας του εξυπηρετητή και εξισορρόπησης φορτίου. Εάν ο εξυπηρετητής «πέσει» κανείς δε μπορεί να δουλέψει. Παρόμοια ο φόρτος που δημιουργήθηκε από τον εξυπηρετούμενο θα επηρεάσει τη δουλειά όλων των υπολοίπων αφού όλοι μοιράζονται τους ίδιους πόρους Mειονεκτήματα 2-tier αρχιτεκτονικής
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Βασικός περιορισμός του client/server Η ευθύνη αντιμετώπισης ετερογενών συστημάτων έχει μεταφερθεί στον εξυπηρετούμενο. Ο εξυπηρετούμενος είναι υπεύθυνος να γνωρίζει που βρίσκονται τα πράγματα, πως να φτάσει σε αυτά και πως να εξασφαλίσει συνέπεια. Αυτό είναι δύσκολο από όλες τις πλευρές (σχεδίαση λογισμικού, μεταφερσιμότητα, επαναχρησιμοποίηση κώδικα, απόδοση αφού οι δυνατότητες του client είναι περιορισμένες κλπ.). Παραμένοντας στο 2 tier μοντέλο δεν υπάρχουν πολλά που μπορούν να γίνουν για να λυθούν τέτοια προβλήματα. Εάν οι εξυπηρετούμενοι θέλουν να προσπελάσουν δύο ή περισσότερους εξυπηρετητές η 2-tier αρχιτεκτονική προκαλεί διάφορα προβλήματα: Τα από κάτω συστήματα δεν γνωρίζονται μεταξύ τους Δεν υπάρχει κοινή business logic Ο client είναι το σημείο της ενοποίησης (increasingly fat clients) client presentation layer 1 resource management layer application logic layer server 1 resource management layer application logic layer server 2 presentation layer 2 application logic
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού 3-tier Αρχιτεκτονική Οι 3-tier αρχιτεκτονικές εισάγουν ένα επιπλέον επίπεδο ανάμεσα στον εξυπηρέτη και τον εξυπηρετούμενο. Στο επιπλέον αυτό επίπεδο πραγματοποιείται η ολοκλήρωση των υπηρεσιών από διαφορετικούς εξυπηρετητές Στο επίπεδο αυτό μεταφέρεται επίσης το application logic layer του πληροφοριακού συστήματος client presentation layer resource management layer application logic layer information system 3-tier architecture middleware
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού 3 tier αρχιτεκτονική: middleware Σε ένα 3 tier σύστημα, τα τρία επίπεδα είναι πλήρως διαχωρισμένα Τα επίπεδα είναι κατανεμημένα και εκμεταλλεύονται την πλήρως διαδικαστική σχεδίαση (in two tier συστήματα, the server is typically centralized) A middleware based system is a 3 tier architecture. Αν και είναι λίγο απλουστευμένη είναι σωστή ιδέα αφού μπορούμε να συμπεριφερθούμε στα υποκείμενα συστήματα σαν μαύρα κουτιά. Στην πραγματικότητα το 3 tier αντιλαμβάνεται μόνο τα στοιχεία περιγραφής των middleware συστημάτων (αλλιώς ο εξυπηρετούμενος έχει τα ίδια προβλήματα με το 2 tier σύστημα).
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Middleware Middleware είναι ένα ενδιάμεσο επίπεδο μεταξύ εξυπηρετούμενων και άλλων επιπέδων του συστήματος. Παρουσιάζει ένα επιπλέον επίπεδο τη business logic που περικλείει όλα τα υποκείμενα συστήματα. Με αυτό τον τρόπο ένα middleware σύστημα: Απλοποιεί το σχεδιασμό των εξυπηρετούμενων μειώνοντας τον αριθμό των interfaces, Λειτουργεί ως πλατφόρμα για διασυστημική λειτουργία και υψηλού επιπέδου application logic Φροντίζει για τον εντοπισμό των πόρων, την προσπέλασή τους, και τη συλλογή αποτελεσμάτων (Load balancing, logging, replication, persistence). Αλλά ένα middleware σύστημα είναι σαν ένα οποιοδήποτε άλλο σύστημα! Μπορεί να είναι 1 tier, 2 tier, 3 tier... Middleware or global application logic clients Local resource managers Local application logic Server AServer B middleware
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού Τεχνικά Χαρακτηριστικά Μiddleware Η εισαγωγή του middleware επιπέδου βοηθάει στα παρακάτω: Ο αριθμός των απαραίτητων interfaces μειώνεται σημαντικά: Οι εξυπηρετούμενοι βλέπουν ένα μόνο σύστημα (the middleware), Οι τοπικές εφαρμογές βλέπουν ένα μόνο σύστημα (the middleware), Επικεντρώνει τον έλεγχο (τα middleware συστήματα είναι συνήθως 2 tier), Διαθέτει τις απαραίτητες λειτουργίες σε όλους τους εξυπηρετούμενους, Επιτρέπει λειτουργίες που αλλιώς θα ήταν πολύ δύσκολο να παρέχονται it is a first step towards dealing with application heterogeneity (some forms of it). Το middleware επίπεδο δε βοηθάει στα παρακάτω: Είναι ένα ακόμα ενδιάμεσο επίπεδο Είναι σύνθετο λογισμικό Είναι μία πλατφόρμα ανάπτυξης και όχι ολοκληρωμένο σύστημα
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού A three tier middleware based system... External clients connecting logic control user logic internal clients 2 tier systems Resource managers wrappers middleware Resource manager 2 tier system middleware system External client
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού N-tier αρχιτεκτονική: σύνδεση στοWeb N-tier αρχιτεκτονικές είναι αποτέλεσμα σύνδεσης πολλών 3- tier συστημάτων και προσθέτοντας επιπλέον επίπεδα που να επιτρέπουν στους εξυπηρετούμενους να προσπελαύνουν το σύστημα μέσω ενός Web server Το Web επίπεδο ήταν αρχικά εξωτερικά του συστήματος (πραγματικά επιπλέον επίπεδο). Σήμερα, σταδιακά ενσωματώνεται στο presentation layer που ανήκει στη μεριά του εξυπηρετητή (τμήμα του middleware σε ένα 3-tier σύστημα, ή τμήμα του εξυπηρετητή κατευθείαν σε ένα 2-tier σύστημα) client resource management layer application logic layer information system middleware presentation layer Web server Web browser HTML filter
1 Νοεμβρίου 2007Αρχιτεκτονική Λογισμικού INTERNET FIREWALL LAN Web server cluster LAN, gateways LAN internal clients LAN middleware application logic Επίπεδο διαχείρισης πόρων database server LAN middleware application logic Επιπλέον επίπεδα Διαχείρισης πόρων LAN Wrappers and gateways file server application N-tier συστήματα σήμερα