Αρχιτεκτονική λογισμικού - ntua · 2021. 3. 23. ·...
TRANSCRIPT
![Page 1: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/1.jpg)
05α Αρχιτεκτονικά πρότυπα λογισμικού
Τεχνολογία Λογισμικού
Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών YπολογιστώνΕθνικό Μετσόβιο Πολυτεχνείο
Χειμερινό εξάμηνο 2017‐18
Δρ. Κώστας Σαΐδης ﴾[email protected]﴿
![Page 2: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/2.jpg)
ΠεριεχόμεναΑρχιτεκτονική λογισμικούΠοιοτικά χαρακτηριστικά κατανεμημένων συστημάτων
Αρχιτεκτονικά στυλ και πρότυπα ﴾architectural styles &patterns﴿
2
![Page 3: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/3.jpg)
Αρχιτεκτονική λογισμικού
3
![Page 4: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/4.jpg)
Περί τίνος πρόκειταιΗ λήψη των θεμελιωδών δομικών και σχεδιαστικών αποφάσεωνγια το λογισμικό που είναι ακριβές να αλλάξουν αφούυλοποιηθούν.
4
![Page 5: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/5.jpg)
Η αρχιτεκτονική πάει μαζί μεΜεθοδολογία ανάπτυξηςΑνάλυση απαιτήσεωνΣχεδιασμόκ.ά ﴾που έχουμε συζητήσει﴿
5
![Page 6: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/6.jpg)
Πολλές οπτικές ﴾4+1﴿
By mpan ‐ Based on File:4+1 Architectural View Model.jpg by User:Mdd,CC BY‐SA 3.0, https://commons.wikimedia.org/w/index.php?curid=50144028
6
![Page 7: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/7.jpg)
ΕιδικότεραLogical view: έμφαση στη λειτουργικότητα του συστήματοςσε υψηλό επίπεδοPhysical view: έμφαση στην τοπολογία και διασύνδεση τωνσυστατικών του σε φυσικό επίπεδο ﴾deployment﴿Development view: έμφαση στην οπτική του προγραμματιστή
Process view: έμφαση στη δυναμική συμπεριφορά τουσυστήματος κατά την εκτέλεσή του ﴾απόδοση, κλιμάκωση,κτλ.﴿Scenarios ‐ Use case view: έμφαση στη χρηστική πλευρά τουσυστήματος και στους σχετικούς ελέγχους αποδοχής
7
![Page 8: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/8.jpg)
2ο ΠαραδοτέοΠληρέστερο αν παρουσιάζει όλες τις οπτικές!
8
![Page 9: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/9.jpg)
Αρχιτεκτονικά πρότυπα ﴾architecturalpatterns﴿Γενικές κι επαναχρησιμοποιήσιμες λύσεις σε κοινά προβλήματααρχιτεκτονικής.
9
![Page 10: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/10.jpg)
Αρχιτεκτονικά στυλ ﴾architectural styles﴿Όπως και στην "κανονική" αρχιτεκτονική, το στυλ είναι μιασυγκεκριμένη μέθοδος κατασκευής που χαρακτηρίζεται απόσυγκεκριμένα αξιοπρόσεκτα χαρακτηριστικά.
10
![Page 11: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/11.jpg)
An architectural style is a named collection of architectural designdecisions that:
1. are applicable in a given development context,2. constrain architectural design decisions that are specific to a
particular system within that context, and3. elicit beneficial qualities in each resulting system.
11
![Page 12: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/12.jpg)
Λίστα αναγνωσμάτωνRichard N. Taylor, Nenad Medvidovic, Eric Dashofy, "SoftwareArchitecture: Foundations, Theory, and Practice", 2009, Wiley andSons, ISBN: 0470167742
12
![Page 13: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/13.jpg)
Αρχιτεκτονικά στυλ και πρότυπαΣτο μάθημα δεν θα επιμείνουμε στη διάκριση.Είτε τα ονομάσουμε στυλ, είτε πρότυπα, μας εφοδιάζουν μεμια κοινή γλώσσα ή λεξιλόγιο για να περιγράψουμεκατηγορίες συστήματων.
Είναι σύνηθες να συνυπάρχουν και να συνδυάζονται πολλάαρχιτεκτονικά πρότυπα και στυλ σε μια εφαρμογή.
13
![Page 14: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/14.jpg)
Στο μάθημα θα δούμε ﴾αλφαβητικά﴿Client‐ServerComponent‐based
Εvent‐DrivenLayered / N‐tierMaster‐slave/Master‐replicaMessage‐driven/Publish‐subscribe
Microservices*
14
![Page 15: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/15.jpg)
Model‐View‐Controller ﴾MVC﴿Model‐View‐ViewModel ﴾MVVM﴿*Peer‐to‐peer ﴾P2P﴿
Pipeline / Pipe‐filterRepresentation State Transfer ﴾REST﴿*Service‐oriented*Share‐nothing
* Σε επόμενη διάλεξη
15
![Page 16: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/16.jpg)
Ποιοτικά χαρακτηριστικάκατανεμημένων συστημάτων
16
![Page 17: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/17.jpg)
ΟρισμόςΈνα κατανεμημένο σύστημα αποτελείται από ξεχωριστάσυστατικά που:
Λειτουργούν σε ένα δίκτυο υπολογιστών.Επικοινωνούν μεταξύ τους μέσω ανταλλαγής μηνυμάτων.Αλληλοεπιδρούν για την επίτευξη ενός κοινού στόχου.
17
![Page 18: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/18.jpg)
Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾α﴿
1. Το δίκτυο είναι αξιόπιστο ﴾reliable﴿.2. Η καθυστέρηση ﴾latency﴿ του δικτύου είναι μηδενική.
3. Το εύρος ζώνης ﴾bandwidth﴿ είναι άπειρο.4. Το δίκτυο είναι ασφαλές ﴾secure﴿.
18
![Page 19: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/19.jpg)
Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾β﴿
5. Η τοπολογία ﴾topology﴿ του δικτύου δεν αλλάζει.6. Υπάρχει μόνο ένας διαχειριστής ﴾administrator﴿.
7. Το κόστος μεταφοράς ﴾transport﴿ δεδομένων είναι μηδενικό.8. Το δίκτυο είναι ομογενές ﴾homogeneous﴿.
19
![Page 20: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/20.jpg)
Βασικά χαρακτηριστικάΣυνέπεια δεδομένων ﴾Consistency﴿
Διαθεσιμότητα συστήματος ﴾Availability﴿Αστοχία δικτύου ﴾Network partition﴿Καθυστέρηση αίτησης/απόκρισης ﴾Latency﴿Αιτήσεις ανά μονάδα χρόνου ﴾Throughput﴿
Κλιμάκωση ﴾Scalability﴿
20
![Page 21: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/21.jpg)
Consistency ﴾C﴿Η συνέπεια των δεδομένων.
Ζητούμενο: κάθε ανάγνωση ﴾read﴿ λαμβάνει την πιοπρόσφατη ενημέρωση ﴾write﴿ ή το σχετικό σφάλμα.
Η συνέπεια που υπόσχεται η αρχή ACID των δοσοληψιών στις βάσειςδεδομένων είναι πιο αυστηρή.
21
![Page 22: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/22.jpg)
ACID TransactionsAtomicity
Η δοσοληψία πετυχαίνει ή αποτυγχάνει πλήρωςConsistency
Μετάβαση της βάσης σε πάντα έκγυρη κατάστασηIsolation
Απομόνωση της εκτέλεσης των δοσοληψιώνDurability
Μονιμότητα των αποτελεσμάτων των δοσοληψιών
22
![Page 23: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/23.jpg)
Availability ﴾A﴿Η διαθεσιμότητα της εφαρμογής.Ζητούμενο: κάθε αίτηση ﴾request﴿ να λαμβάνει μια απάντηση﴾μη λάθους﴿.Χωρίς να προσφέρονται πάντα εγγυήσεις ότι η απάντησηπεριέχει την πιο πρόσφατη ενημέρωση ﴾write﴿.Η υψηλή διαθεσιμότητα απαιτεί αντιγραφές ﴾replication﴿.
23
![Page 24: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/24.jpg)
Network Partition ﴾P﴿Aστοχία δικτύου.Παράδειγμα: απώλεια σύνδεσης με τη βάση δεδομένων.
24
![Page 25: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/25.jpg)
Latency ﴾L﴿H καθυστέρηση στην απόκριση του συστήματος.
Ζητούμενο: να ελαχιστοποιηθεί ο χρόνος που απαιτείται γιατην ικανοποίηση μιας αίτησης.
25
![Page 26: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/26.jpg)
ThroughputΤο πλήθος των αιτήσεων που ικανοποιούνται από τοσύστημα ανά χρονική στιγμή.Ζητούμενο: να μεγιστοποιηθεί το πλήθος των αιτήσεων πουμπορούν να ικανοποιηθούν ανά χρονική στιγμή.
26
![Page 28: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/28.jpg)
Τo θεώρημα CAPΣε περίπτωση αστοχίας δικτύου ﴾P﴿, θα έχουμε είτε συνέπεια τωνδεδομένων ﴾C﴿ είτε διαθεσιμότητα της εφαρμογής ﴾A﴿, όχι και ταδύο.
if (P) { A or C }
28
![Page 29: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/29.jpg)
Το θεώρημα PACELCΕπέκταση του CAP
Αν δεν υπάρχει P, θα έχουμε είτε συνέπεια των δεδομένων ﴾C﴿ είτετην ελάχιστη δυνατή καθυστέρηση ﴾L﴿, αλλά όχι και τα δύο.
if (P) { A or C }else { L or C }
29
![Page 30: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/30.jpg)
Λίστα αναγνωσμάτωνDaniel Abadi, "Consistency Tradeoffs in Modern DistributedDatabase System Design", IEEE Computer, Volume 45, Issue 2, Feb.2012.
30
![Page 31: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/31.jpg)
Κατηγοριοποίηση κατανεμημένωνσυστημάτωνPA/EL
if P then A else L
PC/EC
if P then C else C //ACID databases
PC/EL
if P then C else L
31
![Page 32: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/32.jpg)
ScalabilityΗ δυνατότητα ενός συστήματος να επαυξηθεί για να διαχειριστείαυξημένο φόρτο.
32
![Page 33: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/33.jpg)
ΕιδικότεραΑν η αύξηση της απόδοσης του συστήματος είναι αναλογική τηςαύξησης σε υπολογιστικούς πόρους ﴾προσθήκη υλικού﴿, τότε τοσύστημα κλιμακώνεται ﴾scales﴿.
33
![Page 34: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/34.jpg)
Οριζόντια και κάθετη κλιμάκωσηΟριζόντια ﴾scale out/in﴿: αύξηση/μείωση των κόμβων.
Κάθετη ﴾scale up/down﴿: αύξηση/μείωση των πόρων ενόςκόμβου.
34
![Page 35: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/35.jpg)
Αρχιτεκτονικά στυλ και πρότυπα
35
![Page 36: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/36.jpg)
Client‐Server
36
![Page 37: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/37.jpg)
ΧαρακτηριστικάServer‐basedΝ clients, 1 serverΠου επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: WWW, IMAP, POP3, FTP, SSH, κ.ά
37
![Page 38: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/38.jpg)
Peer‐to‐peer ﴾P2P﴿
38
![Page 39: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/39.jpg)
ΧαρακτηριστικάΔίκτυο ομότιμων κόμβωνΚάθε κόμβος είναι και client και serverΟι κόμβοι επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: File‐sharing networks, Cryptocurrencies, κ.ά
39
![Page 40: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/40.jpg)
Component‐based
40
![Page 41: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/41.jpg)
ΧαρακτηριστικάΣχεδιασμός και αλληλεπίδραση των συστατικών τουλογισμικού μέσω InterfacesΈνα component παρέχει/υλοποιεί ένα interface και απαιτείτην ύπαρξη/κάνει χρήση ενός άλλου
Χαλαρή σύνδεση ﴾loose coupling﴿ και διαχωρισμόςενδιαφερόντων ﴾separation of concerns﴿Application server: το λογισμικό που φιλοξενεί τα components
41
![Page 42: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/42.jpg)
ΚανόναςΠάντα ξεκινάμε το σχεδιασμό του λογισμικού από τα Interfaces
42
![Page 43: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/43.jpg)
Layered/N‐tier
43
![Page 44: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/44.jpg)
ΧαρακτηριστικάServer‐basedΛογική ή/και φυσική αρχιτεκτονική
Ευρεία χρήση στις εφαρμογές διαδικτύουFrameworks: παρέχουν έτοιμα προς χρήση καιπαραμετροποίηση interfaces, components & layers
44
![Page 45: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/45.jpg)
Model‐View‐Controller ﴾MVC﴿
45
![Page 46: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/46.jpg)
ΧαρακτηριστικάΔιαχωρισμός ενδιαφερόντων
ControllerUser input, request/response handling, επίβλεψη τωνModel, View
ModelData model, business logic
ViewData display
Ευρεία χρήση στις εφαρμογές διαδικτύου, πολλά frameworks
46
![Page 47: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/47.jpg)
Παράδειγμα@Controller(url='/items')class ItemController { void get(Request req, Response res) { Template t = loadTemplate('items') //view List<Item> items = store.loadItems() //model Context ctx = new Context() ctx.put("items", items) t.render(res.getWriter(), ctx) } }
47
![Page 48: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/48.jpg)
Master‐Slave / Master‐Replica
48
![Page 49: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/49.jpg)
ΧαρακτηριστικάN slaves, 1 masterMaster ﴾authority﴿, slaves ﴾redundancy﴿Εφαρμογές: υψηλή διαθεσιμότητα, βελτίωση απόδοσης,επιμερισμός φόρτου, κ.ά
ReplicationMaster copy of data, multiple replicas ﴾slaves﴿
Load balancingMaster dispatch logic, multiple "worker" nodes
49
![Page 50: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/50.jpg)
Share‐Nothing Architecture
50
![Page 51: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/51.jpg)
ΧαρακτηριστικάΚάθε κόμβος είναι ανεξάρτητος και αυτοτελής.
No single point of contention ﴾δεν διαμοιράζονται πόροι, π.χ.μνήμη ή δίσκος﴿.Sharding: οριζόντια επιμέρηση των δεδομένων.Οριζόντια κλιμάκωση ﴾horizontal scalability﴿ ‐ απλή προσθήκηκόμβων.Η αρχιτεκτονική πολλών NoSQL συστημάτων.
51
![Page 52: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/52.jpg)
Eventual ConsistencyBASE Systems ﴾Basically Available, Soft state, Eventualconsistency﴿Όταν πάψουν οι ενημερώσεις σε μια εγγραφή, τελικά﴾eventually﴿ όλες οι αναγνώσεις της εγγραφής αυτής θαεπιστρέψουν την πιο πρόσφατη ενημέρωση.Replica convergence ﴾σύκλιση αντιγράφων﴿PA/EL ﴾Επιλέγουν αύξηση διαθεσιμότητης & μείωσηκαθυστέρησης αντί για συνέπεια﴿
52
![Page 53: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/53.jpg)
Message‐driven/Publish‐subscribe
53
![Page 54: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/54.jpg)
ΧαρακτηριστικάΧαλαρή σύνδεση ﴾loose coupling﴿ μεταξύ συστατικών/εφαρμογώνPublisher ﴾producer﴿: αποστολή μηνυμάτωνSubscriber ﴾consumer﴿: λήψη μηνυμάτων
Topics ﴾channels﴿: "κλάσεις/θέματα" μηνυμάτωνMessage Bus ﴾broker﴿: διαχερίση/δρομολόγηση μηνυμάτωνσύγχρονα ή ασύγχρονα, με εγγυήσεις αποστολής ή όχι, μεχρήση ουρών, με φιλτράρισμα ή όχι κτλ.
54
![Page 55: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/55.jpg)
ΕφαρμογέςMiddleware ολοκλήρωσης ετερογενών συστημάτωνΕπίτευξη υψηλής απόδοσης και κλιμάκωσης σεκατανεμημένα συστήματα
Μειονέκτημα: δύσκολη η αλλαγή της δομής των μηνυμάτων
55
![Page 56: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/56.jpg)
Event‐driven
56
![Page 57: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/57.jpg)
ΧαρακτηριστικάEvents & Event handlers ﴾listeners, callbacks﴿Implicit invocation / Inversion of control
Event thread / Event loopΕφαρμογές: γραφική διεπαφή χρήστη, server‐sideαρχιτεκτονική
57
![Page 58: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/58.jpg)
Παράδειγμα ﴾Javascript﴿class EventEmitter { constructor() { this.events = new Map(); //Map<Event, Set<Listener>> } on(event, listener) { let listeners = this.events.get(event); if (!listeners) { listeners = new Set(); this.events.set(event, listeners); } listeners.add(listener); return this; } emit(event, ...args) { const listeners = this.events.get(event); if (listeners) { for (let listener of listeners) { listener.apply(event, args); } } return this; }} 58
![Page 59: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/59.jpg)
const events = new EventEmitter();events.on('foo', (e) => { console.log(e); });events.emit('foo'); // Prints "foo"
59
![Page 60: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/60.jpg)
Παράδειγμα ﴾Java﴿public class MyPanel extends JPanel { public MyPanel() { JButton btn = new JButton("Do it"); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { //do it } }); add(btn); }}
60
![Page 61: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/61.jpg)
Nodejs Event Loop
61
![Page 62: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/62.jpg)
Pipeline / Pipe‐filter
62
![Page 63: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/63.jpg)
ΧαρακτηριστικάData streams, pipes and filters ﴾data transformations﴿Συναρτησιακός προγραμματισμόςΕπαναχρησιμοποίηση, παραλληλισμός
63
![Page 64: Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. · Αρχιτεκτονική λογισμικού Ποιοτικά χαρακτηριστικά κατανεμημένων](https://reader036.vdocuments.site/reader036/viewer/2022070217/6122d299a9ff0b52977b060c/html5/thumbnails/64.jpg)
Παράδειγμα ﴾Java 8 streams﴿List<String> l = Arrays.asList("a1","a2","b1","c2","c1");l.stream() .filter(s ‐> s.startsWith("c")) .map(String::toUpperCase) .sorted() .forEach(System.out::println);
Output
C1C2
64