Τεχνολογία Λογισμικού - ntua · 2020-05-05 · Σχολή...
TRANSCRIPT
![Page 1: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/1.jpg)
Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ
Εθνικό Μετσόβιο Πολυτεχνείο
Τεχνολογία Λογισμικού7ο / 9ο Εξάμηνο 2018‐19
Ν.Παπασπύρου, Αν.Καθ. ΣΗΜΜΥ, [email protected],grΒ.Βεσκούκης, Αν.Καθ. ΣΑΤΜ, [email protected],gr
Κ.Σαΐδης, ΠΔ 407, [email protected]
![Page 2: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/2.jpg)
ΠεριεχόμεναΑρχιτεκτονική λογισμικούΠοιοτικά χαρακτηριστικά κατανεμημένων συστημάτων
Αρχιτεκτονικά στυλ και πρότυπα ﴾architectural styles &patterns﴿
2
![Page 3: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/3.jpg)
Αρχιτεκτονική λογισμικού
3
![Page 4: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/4.jpg)
Περί τίνος πρόκειταιΗ λήψη των θεμελιωδών δομικών και σχεδιαστικών αποφάσεωνγια το λογισμικό που είναι ακριβό ﴾βλ. πρακτικά δύσκολο έωςαδύνατο﴿ να αλλάξουν αφού υλοποιηθούν.
4
![Page 5: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/5.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
5
![Page 6: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/6.jpg)
ΕιδικότεραLogical view: έμφαση στη λειτουργικότητα του συστήματοςσε υψηλό επίπεδοPhysical view: έμφαση στην τοπολογία και διασύνδεση τωνσυστατικών του σε φυσικό επίπεδο ﴾deployment﴿Development view: έμφαση στην οπτική του προγραμματιστή
Process view: έμφαση στη δυναμική συμπεριφορά τουσυστήματος κατά την εκτέλεσή του ﴾απόδοση, κλιμάκωση,κτλ.﴿Scenarios ‐ Use case view: έμφαση στη χρηστική πλευρά τουσυστήματος και στους σχετικούς ελέγχους αποδοχής
6
![Page 7: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/7.jpg)
Αρχιτεκτονικά πρότυπα ﴾architecturalpatterns﴿Γενικές κι επαναχρησιμοποιήσιμες λύσεις σε κοινά προβλήματααρχιτεκτονικής.
7
![Page 8: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/8.jpg)
Αρχιτεκτονικά στυλ ﴾architectural styles﴿Όπως και στην "κανονική" αρχιτεκτονική, το στυλ είναι μιασυγκεκριμένη μέθοδος κατασκευής που χαρακτηρίζεται απόσυγκεκριμένα αξιοπρόσεκτα χαρακτηριστικά.
8
![Page 9: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/9.jpg)
Ένα αρχιτεκτονικό στυλ είναι μια "επώνυμη" συλλογή απόσχεδιαστικές αποφάσεις:
1. η οποία εφαρμόζεται σε ένα δεδομένο περιβάλλον,
2. οριοθετόντας τα πιθανά συστήματα που μπορεί ναπροκύψουν σε αυτό,
3. παρέχοντας ποιοτικά χαρακτηστικά σε κάθε συστήμα πουπροκύπτει.
9
![Page 10: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/10.jpg)
Λίστα αναγνωσμάτωνRichard N. Taylor, Nenad Medvidovic, Eric Dashofy, "SoftwareArchitecture: Foundations, Theory, and Practice", 2009, Wiley andSons, ISBN: 0470167742
10
![Page 11: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/11.jpg)
Αρχιτεκτονικά στυλ και πρότυπαΣτο μάθημα δεν θα επιμείνουμε στη διάκριση.Είτε τα ονομάσουμε στυλ, είτε πρότυπα, μας εφοδιάζουν μεμια κοινή γλώσσα ή λεξιλόγιο για να περιγράψουμεοικογένεις ή/και κατηγορίες συστήματων.
Είναι σύνηθες να συνυπάρχουν και να συνδυάζονται πολλάαρχιτεκτονικά πρότυπα και στυλ σε μια εφαρμογή.
11
![Page 12: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/12.jpg)
Στο μάθημα θα δούμε ﴾αλφαβητικά﴿Client‐ServerComponent‐based
Εvent‐DrivenLayered / N‐tierMaster‐slave/Master‐replicaMessage‐driven/Publish‐subscribe
Microservices*
12
![Page 13: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/13.jpg)
Model‐View‐Controller ﴾MVC﴿Model‐View‐ViewModel ﴾MVVM﴿*Peer‐to‐peer ﴾P2P﴿
Pipeline / Pipe‐filterRepresentation State Transfer ﴾REST﴿*Service‐oriented*Share‐nothing
* Σε επόμενη διάλεξη
13
![Page 14: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/14.jpg)
Ποιοτικά χαρακτηριστικάκατανεμημένων συστημάτων
14
![Page 15: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/15.jpg)
ΟρισμόςΈνα κατανεμημένο σύστημα αποτελείται από ξεχωριστάσυστατικά που:
Λειτουργούν σε ένα δίκτυο υπολογιστών.Επικοινωνούν μεταξύ τους μέσω ανταλλαγής μηνυμάτων.Αλληλοεπιδρούν για την επίτευξη ενός κοινού στόχου.
15
![Page 16: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/16.jpg)
Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾α﴿
1. Το δίκτυο είναι αξιόπιστο ﴾reliable﴿.2. Η καθυστέρηση ﴾latency﴿ του δικτύου είναι μηδενική.
3. Το εύρος ζώνης ﴾bandwidth﴿ είναι άπειρο.4. Το δίκτυο είναι ασφαλές ﴾secure﴿.
16
![Page 17: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/17.jpg)
Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾β﴿
5. Η τοπολογία ﴾topology﴿ του δικτύου δεν αλλάζει.6. Υπάρχει μόνο ένας διαχειριστής ﴾administrator﴿.
7. Το κόστος μεταφοράς ﴾transport﴿ δεδομένων είναι μηδενικό.8. Το δίκτυο είναι ομογενές ﴾homogeneous﴿.
17
![Page 18: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/18.jpg)
Βασικά χαρακτηριστικάΣυνέπεια δεδομένων ﴾Consistency﴿
Διαθεσιμότητα συστήματος ﴾Availability﴿Αστοχία δικτύου ﴾Network partition﴿Καθυστέρηση αίτησης/απόκρισης ﴾Latency﴿Αιτήσεις ανά μονάδα χρόνου ﴾Throughput﴿
Κλιμάκωση ﴾Scalability﴿
18
![Page 19: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/19.jpg)
Consistency ﴾C﴿Η συνέπεια των δεδομένων.
Ζητούμενο: κάθε ανάγνωση ﴾read﴿ λαμβάνει την πιοπρόσφατη ενημέρωση ﴾write﴿ ή το σχετικό σφάλμα.
19
![Page 20: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/20.jpg)
ΠροσοχήΗ συνέπεια που υπόσχεται η αρχή ACID των δοσοληψιών στιςβάσεις δεδομένων είναι πιο αυστηρή.
20
![Page 21: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/21.jpg)
ACID TransactionsAtomicity
Η δοσοληψία πετυχαίνει ή αποτυγχάνει πλήρωςConsistency
Μετάβαση της βάσης σε πάντα έκγυρη κατάστασηIsolation
Απομόνωση της εκτέλεσης των δοσοληψιώνDurability
Μονιμότητα των αποτελεσμάτων των δοσοληψιών
21
![Page 22: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/22.jpg)
Availability ﴾A﴿Η διαθεσιμότητα της εφαρμογής.Ζητούμενο: κάθε αίτηση ﴾request﴿ να λαμβάνει μια απάντηση﴾μη λάθους﴿.Χωρίς να προσφέρονται πάντα εγγυήσεις ότι η απάντησηπεριέχει την πιο πρόσφατη ενημέρωση ﴾write﴿.Η υψηλή διαθεσιμότητα απαιτεί αντιγραφές ﴾replication﴿.
22
![Page 23: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/23.jpg)
Network Partition ﴾P﴿Aστοχία δικτύου.Επιμερισμός του συστήματος σε "αποσυδεδεμένες" νησίδες.Παράδειγμα: απώλεια σύνδεσης με τη βάση δεδομένων.
23
![Page 24: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/24.jpg)
Latency ﴾L﴿H καθυστέρηση στην απόκριση του συστήματος.
Ζητούμενο: να ελαχιστοποιηθεί ο χρόνος που απαιτείται γιατην ικανοποίηση μιας αίτησης.
24
![Page 25: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/25.jpg)
ThroughputΤο πλήθος των αιτήσεων που ικανοποιούνται από τοσύστημα ανά χρονική στιγμή.Ζητούμενο: να μεγιστοποιηθεί το πλήθος των αιτήσεων πουμπορούν να ικανοποιηθούν ανά χρονική στιγμή.
25
![Page 27: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/27.jpg)
Τo θεώρημα CAPΣε περίπτωση αστοχίας δικτύου ﴾P﴿, θα έχουμε είτε συνέπεια τωνδεδομένων ﴾C﴿ είτε διαθεσιμότητα της εφαρμογής ﴾A﴿, όχι και ταδύο.
if (P) { A or C }
27
![Page 28: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/28.jpg)
Το θεώρημα PACELCΕπέκταση του CAP
Αν δεν υπάρχει P, θα έχουμε είτε συνέπεια των δεδομένων ﴾C﴿ είτετην ελάχιστη δυνατή καθυστέρηση ﴾L﴿, αλλά όχι και τα δύο.
if (P) { A or C }else { L or C }
28
![Page 29: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/29.jpg)
Λίστα αναγνωσμάτωνDaniel Abadi, "Consistency Tradeoffs in Modern DistributedDatabase System Design", IEEE Computer, Volume 45, Issue 2, Feb.2012.
29
![Page 30: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/30.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
30
![Page 31: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/31.jpg)
ScalabilityΗ δυνατότητα ενός συστήματος να επαυξηθεί για να διαχειριστείαυξημένο φόρτο.
31
![Page 32: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/32.jpg)
ΕιδικότεραΑν η αύξηση της απόδοσης του συστήματος είναι αναλογική τηςαύξησης σε υπολογιστικούς πόρους ﴾προσθήκη υλικού﴿, τότε τοσύστημα κλιμακώνεται ﴾scales﴿.
32
![Page 33: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/33.jpg)
Οριζόντια και κάθετη κλιμάκωσηΟριζόντια ﴾scale out/in﴿: αύξηση/μείωση των κόμβων.
Κάθετη ﴾scale up/down﴿: αύξηση/μείωση των πόρων ενόςκόμβου.
33
![Page 34: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/34.jpg)
Αρχιτεκτονικά στυλ και πρότυπα
34
![Page 35: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/35.jpg)
Client‐Server
35
![Page 36: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/36.jpg)
ΧαρακτηριστικάServer‐basedΝ clients, 1 serverΠου επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: WWW, IMAP, POP3, FTP, SSH, κ.ά
36
![Page 37: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/37.jpg)
Peer‐to‐peer ﴾P2P﴿
37
![Page 38: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/38.jpg)
ΧαρακτηριστικάΔίκτυο ομότιμων κόμβωνΚάθε κόμβος είναι και client και server
Οι κόμβοι επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: File‐sharing networks, Blockchain,Cryptocurrencies, κ.ά
38
![Page 39: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/39.jpg)
Component‐based
39
![Page 40: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/40.jpg)
ΧαρακτηριστικάΣχεδιασμός και αλληλεπίδραση των συστατικών τουλογισμικού μέσω InterfacesΈνα component παρέχει/υλοποιεί ένα interface και απαιτείτην ύπαρξη/κάνει χρήση ενός άλλου
Χαλαρή σύνδεση ﴾loose coupling﴿ και διαχωρισμόςενδιαφερόντων ﴾separation of concerns﴿Application server: το λογισμικό που φιλοξενεί τα components
40
![Page 41: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/41.jpg)
ΚανόναςΠάντα ξεκινάμε το σχεδιασμό του λογισμικού από τα Interfaces
41
![Page 42: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/42.jpg)
Layered/N‐tier
42
![Page 43: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/43.jpg)
ΧαρακτηριστικάServer‐basedΛογική ή/και φυσική αρχιτεκτονική
Ευρεία χρήση στις εφαρμογές διαδικτύουFrameworks: παρέχουν έτοιμα προς χρήση καιπαραμετροποίηση interfaces, components & layers
43
![Page 44: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/44.jpg)
Model‐View‐Controller ﴾MVC﴿
44
![Page 45: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/45.jpg)
ΧαρακτηριστικάΔιαχωρισμός ενδιαφερόντων
ControllerUser input, request/response handling, επίβλεψη τωνModel, View
ModelData model, business logic
ViewData display
Ευρεία χρήση στις εφαρμογές διαδικτύου, πολλά frameworks
45
![Page 46: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/46.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) } }
46
![Page 47: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/47.jpg)
Master‐Slave / Master‐Replica
47
![Page 48: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/48.jpg)
ΧαρακτηριστικάN slaves, 1 masterMaster ﴾authority﴿, slaves ﴾redundancy﴿Εφαρμογές: υψηλή διαθεσιμότητα, βελτίωση απόδοσης,επιμερισμός φόρτου, κ.ά
ReplicationMaster copy of data, multiple replicas ﴾slaves﴿
Load balancingMaster dispatch logic, multiple "worker" nodes
48
![Page 49: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/49.jpg)
Share‐Nothing Architecture
49
![Page 50: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/50.jpg)
ΧαρακτηριστικάΚάθε κόμβος είναι ανεξάρτητος και αυτοτελής.
No single point of contention ﴾δεν διαμοιράζονται πόροι, π.χ.μνήμη ή δίσκος﴿.Sharding: οριζόντια επιμέρηση των δεδομένων.Οριζόντια κλιμάκωση ﴾horizontal scalability﴿ ‐ απλή προσθήκηκόμβων.Η αρχιτεκτονική πολλών NoSQL συστημάτων.
50
![Page 51: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/51.jpg)
Eventual ConsistencyBASE Systems ﴾Basically Available, Soft state, Eventualconsistency﴿Όταν πάψουν οι ενημερώσεις σε μια εγγραφή, τελικά﴾eventually﴿ όλες οι αναγνώσεις της εγγραφής αυτής θαεπιστρέψουν την πιο πρόσφατη ενημέρωση.Replica convergence ﴾σύκλιση αντιγράφων﴿PA/EL ﴾Επιλέγουν αυξημένη διαθεσιμότητα & μείωσηκαθυστέρησης αντί για συνέπεια﴿
51
![Page 52: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/52.jpg)
Message‐driven/Publish‐subscribe
52
![Page 53: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/53.jpg)
ΧαρακτηριστικάΧαλαρή σύνδεση ﴾loose coupling﴿ μεταξύ συστατικών/εφαρμογώνPublisher ﴾producer﴿: αποστολή μηνυμάτωνSubscriber ﴾consumer﴿: λήψη μηνυμάτων
Topics ﴾channels﴿: "κλάσεις/θέματα" μηνυμάτωνMessage Bus ﴾broker﴿: διαχερίση/δρομολόγηση μηνυμάτωνσύγχρονα ή ασύγχρονα, με εγγυήσεις αποστολής ή όχι, μεχρήση ουρών, με φιλτράρισμα ή όχι κτλ.
53
![Page 54: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/54.jpg)
ΕφαρμογέςMiddleware ολοκλήρωσης ετερογενών συστημάτωνΕπίτευξη υψηλής απόδοσης και κλιμάκωσης σεκατανεμημένα συστήματα
Μειονέκτημα: δύσκολη η αλλαγή της δομής των μηνυμάτων
54
![Page 55: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/55.jpg)
Event‐driven
55
![Page 56: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/56.jpg)
ΧαρακτηριστικάEvents & Event handlers ﴾listeners, callbacks﴿Implicit invocation / Inversion of control
Event thread / Event loopΕφαρμογές: γραφική διεπαφή χρήστη, server‐sideαρχιτεκτονική
56
![Page 57: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/57.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; }} 57
![Page 58: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/58.jpg)
const events = new EventEmitter();events.on('foo', (e) => { console.log(e); });events.emit('foo'); // Prints "foo"
58
![Page 59: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/59.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); }}
59
![Page 60: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/60.jpg)
Nodejs Event Loop
60
![Page 61: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/61.jpg)
Pipeline / Pipe‐filter
61
![Page 62: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/62.jpg)
ΧαρακτηριστικάData streams, pipes and filters ﴾data transformations﴿Συναρτησιακός προγραμματισμόςΕπαναχρησιμοποίηση, παραλληλισμός
62
![Page 63: Τεχνολογία Λογισμικού - NTUA · 2020-05-05 · Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ Εθνικό Μετσόβιο](https://reader034.vdocuments.net/reader034/viewer/2022042216/5ebe3a2215c30f5767382c30/html5/thumbnails/63.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
63