Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. ·...

Post on 28-Mar-2021

15 views 0 download

Transcript of Αρχιτεκτονική λογισμικού - NTUA · 2021. 3. 23. ·...

05α Αρχιτεκτονικά πρότυπα λογισμικού

Τεχνολογία Λογισμικού

Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών YπολογιστώνΕθνικό Μετσόβιο Πολυτεχνείο

Χειμερινό εξάμηνο 2017‐18

Δρ. Κώστας Σαΐδης ﴾saiko@di.uoa.gr﴿

ΠεριεχόμεναΑρχιτεκτονική λογισμικούΠοιοτικά χαρακτηριστικά κατανεμημένων συστημάτων

Αρχιτεκτονικά στυλ και πρότυπα ﴾architectural styles &patterns﴿

2

Αρχιτεκτονική λογισμικού

3

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

4

Η αρχιτεκτονική πάει μαζί μεΜεθοδολογία ανάπτυξηςΑνάλυση απαιτήσεωνΣχεδιασμόκ.ά ﴾που έχουμε συζητήσει﴿

5

Πολλές οπτικές ﴾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

ΕιδικότεραLogical view: έμφαση στη λειτουργικότητα του συστήματοςσε υψηλό επίπεδοPhysical view: έμφαση στην τοπολογία και διασύνδεση τωνσυστατικών του σε φυσικό επίπεδο ﴾deployment﴿Development view: έμφαση στην οπτική του προγραμματιστή

Process view: έμφαση στη δυναμική συμπεριφορά τουσυστήματος κατά την εκτέλεσή του ﴾απόδοση, κλιμάκωση,κτλ.﴿Scenarios ‐ Use case view: έμφαση στη χρηστική πλευρά τουσυστήματος και στους σχετικούς ελέγχους αποδοχής

7

2ο ΠαραδοτέοΠληρέστερο αν παρουσιάζει όλες τις οπτικές!

8

Αρχιτεκτονικά πρότυπα ﴾architecturalpatterns﴿Γενικές κι επαναχρησιμοποιήσιμες λύσεις σε κοινά προβλήματααρχιτεκτονικής.

9

Αρχιτεκτονικά στυλ ﴾architectural styles﴿Όπως και στην "κανονική" αρχιτεκτονική, το στυλ είναι μιασυγκεκριμένη μέθοδος κατασκευής που χαρακτηρίζεται απόσυγκεκριμένα αξιοπρόσεκτα χαρακτηριστικά.

10

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

Λίστα αναγνωσμάτωνRichard N. Taylor, Nenad Medvidovic, Eric Dashofy, "SoftwareArchitecture: Foundations, Theory, and Practice", 2009, Wiley andSons, ISBN: 0470167742

12

Αρχιτεκτονικά στυλ και πρότυπαΣτο μάθημα δεν θα επιμείνουμε στη διάκριση.Είτε τα ονομάσουμε στυλ, είτε πρότυπα, μας εφοδιάζουν μεμια κοινή γλώσσα ή λεξιλόγιο για να περιγράψουμεκατηγορίες συστήματων.

Είναι σύνηθες να συνυπάρχουν και να συνδυάζονται πολλάαρχιτεκτονικά πρότυπα και στυλ σε μια εφαρμογή.

13

Στο μάθημα θα δούμε ﴾αλφαβητικά﴿Client‐ServerComponent‐based

Εvent‐DrivenLayered / N‐tierMaster‐slave/Master‐replicaMessage‐driven/Publish‐subscribe

Microservices*

14

Model‐View‐Controller ﴾MVC﴿Model‐View‐ViewModel ﴾MVVM﴿*Peer‐to‐peer ﴾P2P﴿

Pipeline / Pipe‐filterRepresentation State Transfer ﴾REST﴿*Service‐oriented*Share‐nothing

* Σε επόμενη διάλεξη

15

Ποιοτικά χαρακτηριστικάκατανεμημένων συστημάτων

16

ΟρισμόςΈνα κατανεμημένο σύστημα αποτελείται από ξεχωριστάσυστατικά που:

Λειτουργούν σε ένα δίκτυο υπολογιστών.Επικοινωνούν μεταξύ τους μέσω ανταλλαγής μηνυμάτων.Αλληλοεπιδρούν για την επίτευξη ενός κοινού στόχου.

17

Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾α﴿

1. Το δίκτυο είναι αξιόπιστο ﴾reliable﴿.2. Η καθυστέρηση ﴾latency﴿ του δικτύου είναι μηδενική.

3. Το εύρος ζώνης ﴾bandwidth﴿ είναι άπειρο.4. Το δίκτυο είναι ασφαλές ﴾secure﴿.

18

Πλάνες σχετικά με τα κατανεμημένασυστήματα ﴾β﴿

5. Η τοπολογία ﴾topology﴿ του δικτύου δεν αλλάζει.6. Υπάρχει μόνο ένας διαχειριστής ﴾administrator﴿.

7. Το κόστος μεταφοράς ﴾transport﴿ δεδομένων είναι μηδενικό.8. Το δίκτυο είναι ομογενές ﴾homogeneous﴿.

19

Βασικά χαρακτηριστικάΣυνέπεια δεδομένων ﴾Consistency﴿

Διαθεσιμότητα συστήματος ﴾Availability﴿Αστοχία δικτύου ﴾Network partition﴿Καθυστέρηση αίτησης/απόκρισης ﴾Latency﴿Αιτήσεις ανά μονάδα χρόνου ﴾Throughput﴿

Κλιμάκωση ﴾Scalability﴿

20

Consistency ﴾C﴿Η συνέπεια των δεδομένων.

Ζητούμενο: κάθε ανάγνωση ﴾read﴿ λαμβάνει την πιοπρόσφατη ενημέρωση ﴾write﴿ ή το σχετικό σφάλμα.

Η συνέπεια που υπόσχεται η αρχή ACID των δοσοληψιών στις βάσειςδεδομένων είναι πιο αυστηρή.

21

ACID TransactionsAtomicity

Η δοσοληψία πετυχαίνει ή αποτυγχάνει πλήρωςConsistency

Μετάβαση της βάσης σε πάντα έκγυρη κατάστασηIsolation

Απομόνωση της εκτέλεσης των δοσοληψιώνDurability

Μονιμότητα των αποτελεσμάτων των δοσοληψιών

22

Availability ﴾A﴿Η διαθεσιμότητα της εφαρμογής.Ζητούμενο: κάθε αίτηση ﴾request﴿ να λαμβάνει μια απάντηση﴾μη λάθους﴿.Χωρίς να προσφέρονται πάντα εγγυήσεις ότι η απάντησηπεριέχει την πιο πρόσφατη ενημέρωση ﴾write﴿.Η υψηλή διαθεσιμότητα απαιτεί αντιγραφές ﴾replication﴿.

23

Network Partition ﴾P﴿Aστοχία δικτύου.Παράδειγμα: απώλεια σύνδεσης με τη βάση δεδομένων.

24

Latency ﴾L﴿H καθυστέρηση στην απόκριση του συστήματος.

Ζητούμενο: να ελαχιστοποιηθεί ο χρόνος που απαιτείται γιατην ικανοποίηση μιας αίτησης.

25

ThroughputΤο πλήθος των αιτήσεων που ικανοποιούνται από τοσύστημα ανά χρονική στιγμή.Ζητούμενο: να μεγιστοποιηθεί το πλήθος των αιτήσεων πουμπορούν να ικανοποιηθούν ανά χρονική στιγμή.

26

Latency vs Throughput

docs.voltdb.com

27

Τo θεώρημα CAPΣε περίπτωση αστοχίας δικτύου ﴾P﴿, θα έχουμε είτε συνέπεια τωνδεδομένων ﴾C﴿ είτε διαθεσιμότητα της εφαρμογής ﴾A﴿, όχι και ταδύο.

if (P) { A or C }

28

Το θεώρημα PACELCΕπέκταση του CAP

Αν δεν υπάρχει P, θα έχουμε είτε συνέπεια των δεδομένων ﴾C﴿ είτετην ελάχιστη δυνατή καθυστέρηση ﴾L﴿, αλλά όχι και τα δύο.

if (P) { A or C }else   { L or C }

29

Λίστα αναγνωσμάτωνDaniel Abadi, "Consistency Tradeoffs in Modern DistributedDatabase System Design", IEEE Computer, Volume 45, Issue 2, Feb.2012.

30

Κατηγοριοποίηση κατανεμημένωνσυστημάτων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

ScalabilityΗ δυνατότητα ενός συστήματος να επαυξηθεί για να διαχειριστείαυξημένο φόρτο.

32

ΕιδικότεραΑν η αύξηση της απόδοσης του συστήματος είναι αναλογική τηςαύξησης σε υπολογιστικούς πόρους ﴾προσθήκη υλικού﴿, τότε τοσύστημα κλιμακώνεται ﴾scales﴿.

33

Οριζόντια και κάθετη κλιμάκωσηΟριζόντια ﴾scale out/in﴿: αύξηση/μείωση των κόμβων.

Κάθετη ﴾scale up/down﴿: αύξηση/μείωση των πόρων ενόςκόμβου.

34

Αρχιτεκτονικά στυλ και πρότυπα

35

Client‐Server

36

ΧαρακτηριστικάServer‐basedΝ clients, 1 serverΠου επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: WWW, IMAP, POP3, FTP, SSH, κ.ά

37

Peer‐to‐peer ﴾P2P﴿

38

ΧαρακτηριστικάΔίκτυο ομότιμων κόμβωνΚάθε κόμβος είναι και client και serverΟι κόμβοι επικοινωνούν μεταξύ τους με ένα συγκεκριμένοπρωτόκολλο για να υλοποιήσουν μια συγκεκριμένη"εφαρμογή"Παραδείγματα: File‐sharing networks, Cryptocurrencies, κ.ά

39

Component‐based

40

ΧαρακτηριστικάΣχεδιασμός και αλληλεπίδραση των συστατικών τουλογισμικού μέσω InterfacesΈνα component παρέχει/υλοποιεί ένα interface και απαιτείτην ύπαρξη/κάνει χρήση ενός άλλου

Χαλαρή σύνδεση ﴾loose coupling﴿ και διαχωρισμόςενδιαφερόντων ﴾separation of concerns﴿Application server: το λογισμικό που φιλοξενεί τα components

41

ΚανόναςΠάντα ξεκινάμε το σχεδιασμό του λογισμικού από τα Interfaces

42

Layered/N‐tier

43

ΧαρακτηριστικάServer‐basedΛογική ή/και φυσική αρχιτεκτονική

Ευρεία χρήση στις εφαρμογές διαδικτύουFrameworks: παρέχουν έτοιμα προς χρήση καιπαραμετροποίηση interfaces, components & layers

44

Model‐View‐Controller ﴾MVC﴿

45

ΧαρακτηριστικάΔιαχωρισμός ενδιαφερόντων

ControllerUser input, request/response handling, επίβλεψη τωνModel, View

ModelData model, business logic

ViewData display

Ευρεία χρήση στις εφαρμογές διαδικτύου, πολλά frameworks

46

Παράδειγμα@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

Master‐Slave / Master‐Replica

48

ΧαρακτηριστικάN slaves, 1 masterMaster ﴾authority﴿, slaves ﴾redundancy﴿Εφαρμογές: υψηλή διαθεσιμότητα, βελτίωση απόδοσης,επιμερισμός φόρτου, κ.ά

ReplicationMaster copy of data, multiple replicas ﴾slaves﴿

Load balancingMaster dispatch logic, multiple "worker" nodes

49

Share‐Nothing Architecture

50

ΧαρακτηριστικάΚάθε κόμβος είναι ανεξάρτητος και αυτοτελής.

No single point of contention ﴾δεν διαμοιράζονται πόροι, π.χ.μνήμη ή δίσκος﴿.Sharding: οριζόντια επιμέρηση των δεδομένων.Οριζόντια κλιμάκωση ﴾horizontal scalability﴿ ‐ απλή προσθήκηκόμβων.Η αρχιτεκτονική πολλών NoSQL συστημάτων.

51

Eventual ConsistencyBASE Systems ﴾Basically Available, Soft state, Eventualconsistency﴿Όταν πάψουν οι ενημερώσεις σε μια εγγραφή, τελικά﴾eventually﴿ όλες οι αναγνώσεις της εγγραφής αυτής θαεπιστρέψουν την πιο πρόσφατη ενημέρωση.Replica convergence ﴾σύκλιση αντιγράφων﴿PA/EL ﴾Επιλέγουν αύξηση διαθεσιμότητης & μείωσηκαθυστέρησης αντί για συνέπεια﴿

52

Message‐driven/Publish‐subscribe

53

ΧαρακτηριστικάΧαλαρή σύνδεση ﴾loose coupling﴿ μεταξύ συστατικών/εφαρμογώνPublisher ﴾producer﴿: αποστολή μηνυμάτωνSubscriber ﴾consumer﴿: λήψη μηνυμάτων

Topics ﴾channels﴿: "κλάσεις/θέματα" μηνυμάτωνMessage Bus ﴾broker﴿: διαχερίση/δρομολόγηση μηνυμάτωνσύγχρονα ή ασύγχρονα, με εγγυήσεις αποστολής ή όχι, μεχρήση ουρών, με φιλτράρισμα ή όχι κτλ.

54

ΕφαρμογέςMiddleware ολοκλήρωσης ετερογενών συστημάτωνΕπίτευξη υψηλής απόδοσης και κλιμάκωσης σεκατανεμημένα συστήματα

Μειονέκτημα: δύσκολη η αλλαγή της δομής των μηνυμάτων

55

Event‐driven

56

ΧαρακτηριστικάEvents & Event handlers ﴾listeners, callbacks﴿Implicit invocation / Inversion of control

Event thread / Event loopΕφαρμογές: γραφική διεπαφή χρήστη, server‐sideαρχιτεκτονική

57

Παράδειγμα ﴾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

const events = new EventEmitter();events.on('foo', (e) => { console.log(e); });events.emit('foo'); // Prints "foo"

59

Παράδειγμα ﴾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

Nodejs Event Loop

61

Pipeline / Pipe‐filter

62

ΧαρακτηριστικάData streams, pipes and filters ﴾data transformations﴿Συναρτησιακός προγραμματισμόςΕπαναχρησιμοποίηση, παραλληλισμός

63

Παράδειγμα ﴾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