Αρχιτεκτονική Λογισμικού
Αρχιτεκτονική Συστήματος Λογισμικού Η Αρχιτεκτονική περιγράφει τη γενική στατική δομή του συστήματος, τα βασικά δομικά του στοιχεία, πως αυτά τα στοιχεία επικοινωνούν, και ποια είναι τα βασικά χαρακτηριστικά του κάθε στοιχείου. Τα στοιχεία είναι υποσυστήματα ή (για μικρότερα συστήματα) ψηφίδες. Η Αρχιτεκτονική παρέχει ένα τρόπο ανάλυσης και περιγραφής του συστήματος σε υψηλό αφαιρετικό επίπεδο Η Αρχιτεκτονική εστιάζει στις βασικές σχεδιαστικές αποφάσεις που λαμβάνουμε για ένα σύστημα
Ορισμός Αρχιτεκτονικής (Shaw and Garlan) Περιγράφει τα στοιχεία από τα οποία αποτελείται ένα σύστημα (υποσυστήματα/συστατικά - components) τις αλληλεπιδράσεις ανάμεσα σε αυτά τα στοιχεία, πρότυπα και περιορισμούς που καθοδηγούν τη σύνθεση αυτών των στοιχείων. Ένα σύστημα μπορεί να είναι υποσύστημα σε κάποια άλλη (μεγαλύτερη και πολυπλοκότερη) εφαρμογή Τα υποσυστήματα και τα συστατικά (και συνολικά η αρχιτεκτονική) μπορούν να περιγράφουν από διαφορετικές σκοπιές (λογική, δομική κλπ.) Άλλοι ορισμοί μπορούν να βρεθούν στον ιστότοπο
Τι Προδιαγράφει η Αρχιτεκτονική Τη γενική διάσπαση και κατάτμηση μιας εφαρμογής στα συστατικά δομικά του στοιχεία – Η κατάκτηση γίνεται κατά ένα ιεραρχικό τρόπο (υποσυστήματα / ψηφίδες / κλάσεις) – Η αρχιτεκτονική μιας εφαρμογής μπορεί να ακολουθεί και να είναι συμβατή με συγκεκριμένες τεχνοτροπίες και πρότυπα Τις σημαντικές ιδιότητες του συστήματος π.χ. Απόδοση, ασφάλεια, ευρωστία, ευκολία αναβάθμισης Τις βασικές σχεδιαστικές αποφάσεις που συσχετίζουν απαιτήσεις και υλοποίηση Τον «σκελετό» της εφαρμογής
Kruchten’s “4+1 View Model” of the Architecture P. Kruchten. The 4+1 View Model of Architecture. In IEEE Software, vol. 12, no. 6, November 1995, pp , IEEE 1995
Αρχιτεκτονική Τεχνοτροπία (Architectural Style) Μια αρχιτεκτονική τεχνοτροπία (architectural style) ορίζει μια οικογένεια από αρχιτεκτονικές που έχουν – Κοινή τοπολογία – Σημασιολογικούς περιορισμούς – Κοινό λεξιλόγιο για τα components και τα connectors
Ταξινόμηση Αρχιτεκτονικών Τεχνοτροπιών Βασικές Αρχιτεκτονικές Τεχνοτροπίες – Ροής Δεδομένων (Data Flow) – Κλήσης-Επιστροφής (Call-and-return) – Αλληλεπιδρώντων Λειτουργιών (Interacting processes) – Δεδομενο-κεντρικής αποθήκης (Data-oriented repository) – Κοινών Δεδομένων (Data-sharing) – Ιεραρχικές (Hierarchical) – Ετερογενείς Αρχιτεκτονικές (heterogeneous architectures)
Αρχιτεκτονική Λογισμικού Με τι ασχολείται - 1 Την οργάνωση του συστήματος ως σύνθεση συστατικών Την ευθυγράμμιση των λειτουργιών με τα συστατικά του σχεδιασμού Τη σύνθεση των συστατικών του σχεδιασμού Καθολικές δομές ελέγχου Πρωτόκολλα επικοινωνίας, συγχρονισμού και πρόσβασης σε αποθηκευμένα δεδομένα Αρχιτεκτονική Λογισμικού
Αρχιτεκτονική Λογισμικού Με τι ασχολείται - 2 Τη φυσική υλοποίηση του συστήματος Την απόδοση και την ανταπόκριση σε αυξανόμενες απαιτήσεις (scaling). Τις δυνατότητες εξέλιξης Την επιλογή μεταξύ εναλλακτικών σχεδίων Η αρχιτεκτονική ενός συστήματος λογισμικού περιγράφει το σύστημα ως σύνολο υπολογιστικών συστατικών και συνδέσεων μεταξύ αυτών των συστατικών Αρχιτεκτονική Λογισμικού
Αρχιτεκτονική Λογισμικού Τι στόχους έχει και που βοηθάει Την περιγραφή του λογισμικού σε υψηλό επίπεδο αφαίρεσης – μέσω συγκεκριμένων αρχιτεκτονικών μοτίβων και προτύπων (architectural styles, architectural patterns) Έναρξη σχεδιασμού: – Καθοδηγούμαστε από λύσεις δοκιμασμένες από τον χρόνο και από την πράξη – Εντοπίζουμε το αρχιτεκτονικό πρότυπο που ταιριάζει καλύτερα στο σύστημα – δεν ανακαλύπτουμε πάλι τον τροχό Αποτελεί – Τη βάση της διαδικασίας ανάπτυξης του λογισμικού – Το μέσο επικοινωνίας μεταξύ των μηχανικών λογισμικού
Αρχιτεκτονική Λογισμικού Βάση της Διεργασίας Ανάπτυξης Λογισμικού Καθοδηγεί τη διεργασία ανάπτυξης λογισμικού: – Μετά την ανάλυση των απαιτήσεων επιλέγεται η κατάλληλη για το σύστημα αρχιτεκτονική. – Η αρχιτεκτονική αναλύεται και παρουσιάζεται στους εταίρους. – Το σύστημα σχεδιάζεται και υλοποιείται σύμφωνα με την αρχιτεκτονική. – Επιβεβαιώνεται ότι η υλοποίηση είναι σύμφωνη με την επιλεχθείσα αρχιτεκτονική. Το σύστημα μπορεί να αναλυθεί σε υποσυστήματα με διαφορετική αρχιτεκτονική το καθένα Μπορούν να χρησιμοποιηθούν διάφορες αρχιτεκτονικές σε διαφορετικά επίπεδα αφαίρεσης.
Αρχιτεκτονική Λογισμικού Κριτήρια Ποιότητας Καλά τεκμηριωμένη, με χρήση συμβόλων που καταλαβαίνουν όλοι οι εμπλεκόμενοι με την ελάχιστη προσπάθεια Έχει την ελάχιστη δυνατή εξάρτηση από το υλικό. Δεν εξαρτάται από κάποιο εμπορικό εργαλείο ή προϊόν. Περιέχει ποσοτικές μετρικές (π.χ. #δοσοληψιών στη μονάδα του χρόνου) Περιέχει ποιοτικές μετρικές (π.χ. συντηρησιμότητα) Περιέχει ένα μικρό σύνολο περιορισμών οι οποίοι είναι καταγεγραμμένοι και τεκμηριωμένοι. Αποτελείται από καλά ορισμένα τμήματα, ανεξάρτητα που αποκρύπτουν τα εσωτερικά τους χαρακτηριστικά. Επιτρέπει την ανάπτυξη του συστήματος σε βήματα Μπορεί να υλοποιηθεί από πολλές ομάδες που εργάζονται ανεξάρτητα σε διαφορετικά τμήματά της
13 Αρχιτεκτονικά πρότυπα Διαστρωματωμένη αρχιτεκτονική Μοντέλο Όψη Ελεγκτή (MVC)
14 Διαστρωματωμένη αρχιτεκτονική
Χαλαρή Διαστρωμάτωση
16 Πλεονεκτήματα διαστωμάτωσης Αυξάνεται η συνεκτικότητα του λογισμικού. Κάθε στρώμα παρέχει ένα σύνολο συνεκτικών υπηρεσιών. Μπορούμε να κατανοήσουμε ένα επίπεδο, χωρίς να μας απασχολούν τα υπόλοιπα. Πολλές αλλαγές στο λογισμικό έχουν τοπικό χαρακτήρα. Μπορούμε να υποκαταστήσουμε τις υπηρεσίες ενός στρώματος με κάποια άλλη υλοποίηση. Παρέχονται περισσότερες ευκαιρίες μείωσης της σύζευξης. Διαφορετικές ευθύνες των στρωμάτων καθοδηγούν και τη διανομή της υλοποίησης στην ομάδα ανάπτυξης. Δίνονται περισσότερες ευκαιρίες διανομής των μονάδων λογισμικού σε διαφορετικούς κόμβους επεξεργασίας, υιοθετώντας κατανεμημένες αρχιτεκτονικές. Ένα (χαμηλού επιπέδου) στρώμα μπορεί να επαναχρησιμοποιηθεί σε πολλά διαφορετικά προϊόντα λογισμικού.
17 Προβλήματα διαστρωμάτωσης Η ενθυλάκωση μεταξύ στρωμάτων δεν είναι πάντα πλήρης. Αλλαγές σε χαμηλότερο επίπεδο μπορεί να επεκτείνονται έως και τα ανώτερα στρώματα. Η διαστρωμάτωση πιθανόν να μειώνει την απόδοση του λογισμικού. Ο αριθμός των στρωμάτων επηρεάζει κατά πολύ τη συνολική αρχιτεκτονική, αλλά σε πολύπλοκα συστήματα ο ακριβής προσδιορισμός των στρωμάτων είναι αρκετά δύσκολος.
18 Τα τρία στρώματα των πληροφοριακών συστημάτων ΣτρώμαΤι παρέχει/περιέχει Στρώμα Παρουσίασης (presentation layer) Υπηρεσίες που σχετίζονται με την παρουσίαση της πληροφορίας με τις διεπαφές χρήστη Στρώμα Λογικής της Εφαρμογής (Application Logic Layer) Η λογική του πεδίου όπου είναι ο κορμός της λειτουργικότητας του λογισμικού Στρώμα Διαχείρισης Πόρων (Resource Management Layer) Επικοινωνία με βάσεις δεδομένων ή άλλες πηγές δεδομένων
Σχεδίαση Πληροφοριακών Συστημάτων (ΠΣ) Σε εννοιολογικό επίπεδο, τα ΠΣ σχεδιάζονται γύρω από τρία στρώματα (layers): – Στρώμα Παρουσίασης (presentation layer), – Στρώμα Λογικής της Εφαρμογής (Application Logic Layer) και – Στρώμα Διαχείρισης Πόρων (Resource Management Layer) Τα στρώματα αυτά μπορεί να είναι – μόνο αφαιρετικοί σχεδιασμοί στο μυαλό των σχεδιαστών οι οποίοι παρόλα αυτά μπορεί να σχεδιάσουν πολύπλοκες υλοποιήσεις για λόγους απόδοσης – διακριτά και απομεμονωμένα υποσυστήματα, που συχνά έχουν υλοποιηθεί με διαφορετικά εργαλεία Αρχιτεκτονική Λογισμικού
Στρώματα ενός ΠΣ Client (πελάτης) κάθε χρήστης ή πρόγραμμα το οποίο θέλει να πραγματοποιήσει μία λειτουργία σε ένα σύστημα. Presentation Layer (Στρώμα Παρουσίασης) Διευκολύνει την αλληλεπίδραση των πελατών με το σύστημα Application Logic Layer (Στρώμα λογικής της εφαρμογής) Καθορίζει τι ακριβώς κάνει το σύστημα. Φροντίζει για την εφαρμογή των business rules και εγκαθιδρύει τις business processes. Μπορεί να έχει διάφορες μορφές: προγράμματα, περιορισμοί, business processes, κλπ. Resource Management Layer (Στρώμα Διαχείρισης Πόρων) ασχολείται με την οργάνωση (storage, indexing, και retrieval) των απαραίτητων δεδομένων για την υποστήριξη του πάνω επιπέδου Συνήθως είναι μία βάση δεδομένων – Μπορεί να είναι και ένα σύστημα ανάκτησης δεδομένων ή ένα οποιοδήποτε άλλο σύστημα διαχείρισης δεδομένων που παρέχει δυνατότητα επερωτήσεων και persistence. Αρχιτεκτονική Λογισμικού presentation layer resource management layer application logic layer client Πληροφοριακό σύστημα
Ένα παιχνίδι με κουτιά και βέλη Κουτί: ένα τμήμα του συστήματος Βέλος: σύνδεση μεταξύ δύο τμημάτων Όσο πιό πολλά κουτιά – Τόσο πιό πολύ αρθρωτό (modular) σύστημα – Τόσο πιό πολλές δυνατότητες γιά να είναι κατανεμημένο και παράλληλο – Υποστηρίζεται η επαναχρησιμοποίηση Όσο πιό πολλά κουτιά και βέλη: – Τόσο πιό πολλές συνδέσεις χρειάζεται να συντηρούνται και να συντονίζονται – Τόσο πιό πολύπλοκη διαχείριση και παρακολούθηση Τα πολλά κουτιά: – Οδηγούν σε μεγάλο αριθμό από context switches και απαιτούμενα ενδιάμεσα βήματα πριν φτάσεις στα δεδομένα – Επιδρούν αρνητικά στην απόδοση Χρειάζεται εξισορρόπηση μεταξύ – Του αρθρωτού σχεδιασμού – Και των απαιτήσεων για απόδοση – Οι σχεδιαστές συστημάτων προσπαθούν να συνδυάσουν την ευελιξία του αρθρωτού σχεδιασμού με τις απαιτήσεις απόδοσης των εφαρμογών. Αρχιτεκτονική Λογισμικού Δεν υπάρχει πρόβλημα στο σχεδιασμό συστήματος που να μη μπορεί να λυθεί με την προσθήκη ενός ακόμη επιπέδου Δεν υπάρχει πρόβλημα με την απόδοση που να μη μπορεί να λυθεί με την αφαίρεση ενός επιπέδου
1-tier αρχιτεκτονική : πλήρως συγκεντρωτική Οι presentation layer, application logic and resource manager έχουν δημιουργηθεί σαν μία μονολιθική οντότητα Χρήστες/προγράμματα προσπελαύνουν το σύστημα μέσω οθονών-τερματικά αλλά το τι εμφανίζεται και το πως ελέγχεται από τον εξυπηρετητή. (Αυτά είναι “χαζά” τερματικά) Αυτή είναι η τυπική αρχιτεκτονική των mainframes, που προσφέρουν πολλά πλεονεκτήματα: – Δεν χρειάζονται context switches στον έλεγχο ροής (όλα συμβαίνουν μέσα στο ίδιο σύστημα), – Όλα είναι συγκεντρωμένα, η διαχείριση και ο έλεγχος πόρων είναι πιο εύκολος, – η σχεδίαση είναι πλήρως βελτιστοποιημένη κάνοντας αόρατο το διαχωρισμό μεταξύ των επιπέδων. Αρχιτεκτονική Λογισμικού Server
Μειονεκτήματα 1tier αρχιτεκτονικής Μονολιθικά κομμάτια κώδικα Δύσκολη και ακριβή συντήρηση – Συνήθως υπάρχει έλειψη τεκμηρίωσης -> αδύνατον να αλλάξει το σύστημα Δύσκολο να κατανοηθεί αρχιτεκτονική του Έλειψη προγραμματιστών με εμπειρία σε αυτά τα συστήματα (legacy systems) Αρχιτεκτονική Λογισμικού
2tier Αρχιτεκτονική Αρχιτεκτονική Λογισμικού presentation layer client Πληροφοριακό σύστημα resource management layer application logic layer Server
2 tier: client/server Καθώς οι υπολογιστές γίονταν πιο ισχυροί, ήταν εύκολο να μετακινηθεί the presentation layer στον εξυπηρετούμενο. Πλεονεκτήματα: – Clients ανεξάρτητοι : μπορεί να υπάρχουν πολλά presentation layers ανάλογα με το τι θέλει να κάνει ο κάθε client. – Η υπολογιστική ισχύς της μηχανής μπορεί να εκμεταλλευθεί από τον client για να έχει πιο πολύπλοκα presentation layers (πχ. Χρήστες και διαχειριστές) Έτσι κερδίζει πόρους και ο υπολογιστής του εξυπηρετητή. – Eισάγεται η έννοια του API (Application Program Interface). Είναι ένας τρόπος αλληλεπίδρασης με το σύστημα από έξω. – The resource manager βλέπει μόνο έναν client: το επίπεδο της επιχειρησιακής λογικής. Αυτό βοηθάει πάρα πολύ την απόδοση αφού δεν υπάρχουν συνδέσεις μεταξύ των clients να διατηρηθούν. Αρχιτεκτονική Λογισμικού 2-tier architecture Server
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. Αρχιτεκτονική Λογισμικού resource management layer server service interface service interface service interface service interface server’s API service
Πλεονεκτήματα 2-tier αρχιτεκτονικής Εκμεταλλεύονται τις δυνατότητες των clients μοιράζοντας φόρτο δουλειάς σε αυτούς. Η εργασία στον εξυπηρετητή λαμβάνει χώρα εντός ενός περιβάλλοντος (σχεδόν όπως στο 1-tier), Η σχεδίαση του εξυπηρετητή παραμένει tightly coupled – μπορεί να βελτιστοποιηθεί αγνοώντας τα θέματα παρουσίασης (μιάς και αυτά πάνε στο presentation layer) Εύκολο σχετικά να διαχειριστεί και να ελεγχθεί από άποψη λογισμικού Αρχιτεκτονική Λογισμικού
Mειονεκτήματα 2-tier αρχιτεκτονικής Ο εξυπηρετητής έχει να αντιμετωπίσει όλες τις πιθανές συνδέσεις μεταξύ των εξυπηρετούμενων. – Ο μέγιστος αριθμός εξυπηρετούμενων δίνεται από τον αριθμό των συνδέσεων που υποστηρίζει ο εξυπηρετητής με αποτέλεσμα να μειώνεται η επεκτασιμότητα της αρχιτεκτονικής. Οι εξυπηρετούμενοι είναι συνδεδεμένοι με το σύστημα αφού δεν υπάρχει συγκεκριμένο presentation layer. – Εάν κάποιος θέλει να συνδεθεί με δύο συστήματα χρειάζεται δύο presentation layers. Αυτό συνεπάγεται αύξηση της πολυπλοκότητας του εξυπηρετούμενου. Δεν αντιμετωπίζονται θέματα αποτυχίας του εξυπηρετητή και εξισορρόπησης φορτίου. – Εάν ο εξυπηρετητής «πέσει» κανείς δε μπορεί να δουλέψει. – Παρόμοια, ο φόρτος που δημιουργήθηκε από τον εξυπηρετούμενο θα επηρεάσει τη δουλειά όλων των υπολοίπων αφού όλοι μοιράζονται τους ίδιους πόρους Αρχιτεκτονική Λογισμικού
Βασικός περιορισμός του 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
3-tier Αρχιτεκτονική Οι 3-tier αρχιτεκτονικές εισάγουν ένα επιπλέον επίπεδο ανάμεσα στον εξυπηρέτη και τον εξυπηρετούμενο. Στο επιπλέον αυτό επίπεδο – πραγματοποιείται η ολοκλήρωση των υπηρεσιών από διαφορετικούς εξυπηρετητές – μεταφέρεται το application logic layer του πληροφοριακού συστήματος Αρχιτεκτονική Λογισμικού client presentation layer resource management layer application logic layer information system 3-tier architecture middleware
3 tier αρχιτεκτονική: middleware Τα τρία επίπεδα – είναι πλήρως διαχωρισμένα – είναι κατανεμημένα – εκμεταλλεύονται την πλήρως κατανεμημένη σχεδίαση Ένα σύστημα που βασίζεται σε middleware είναι ένα σύστημα με αρχιτεκτονική 3 στρωμάτων Αρχιτεκτονική Λογισμικού
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
Πλεομεκτήματα/Μειονεκτήματα Χρήσης Μiddleware Η εισαγωγή του στρώματος middleware βοηθάει στα παρακάτω: – Ο αριθμός των απαραίτητων interfaces μειώνεται σημαντικά: Οι εξυπηρετούμενοι βλέπουν ένα μόνο σύστημα (το middleware), Οι τοπικές εφαρμογές βλέπουν ένα μόνο σύστημα (το middleware), – Επικεντρώνει τον έλεγχο (τα middleware συστήματα είναι συνήθως 2 tier), – Διαθέτει τις απαραίτητες λειτουργίες σε όλους τους εξυπηρετούμενους, – Επιτρέπει λειτουργίες που αλλιώς θα ήταν πολύ δύσκολο να παρέχονται – Είναι το πρώτο βήμα στην αντιμετώπιση της ετερογένειας μεταξύ των εφαρμογών Το στρώμα του middleware έχει τα εξής μειονεκτήματα: – Είναι ένα ακόμα ενδιάμεσο επίπεδο – Είναι σύνθετο λογισμικό – Είναι μία πλατφόρμα ανάπτυξης και όχι ολοκληρωμένο σύστημα Αρχιτεκτονική Λογισμικού
3 -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
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
N-tier συστήματα σήμερα Αρχιτεκτονική Λογισμικού 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