Τεχνολογία Λογισμικού - ntua · 2020-05-05 · Σχολή...

Post on 15-May-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Η/Υ

Εθνικό Μετσόβιο Πολυτεχνείο

Τεχνολογία Λογισμικού7ο / 9ο Εξάμηνο 2018‐19

Ν.Παπασπύρου, Αν.Καθ. ΣΗΜΜΥ, nickie@softlab.ntua,grΒ.Βεσκούκης, Αν.Καθ. ΣΑΤΜ, v.vescoukis@cs.ntua,gr

Κ.Σαΐδης, ΠΔ 407, saiko@softlab.ntua.gr

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

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

2

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

3

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

4

Πολλές αρχιτεκτονικές οπτικές ﴾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

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

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

6

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

7

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

8

Ένα αρχιτεκτονικό στυλ είναι μια "επώνυμη" συλλογή απόσχεδιαστικές αποφάσεις:

1. η οποία εφαρμόζεται σε ένα δεδομένο περιβάλλον,

2. οριοθετόντας τα πιθανά συστήματα που μπορεί ναπροκύψουν σε αυτό,

3. παρέχοντας ποιοτικά χαρακτηστικά σε κάθε συστήμα πουπροκύπτει.

9

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

10

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

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

11

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

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

Microservices*

12

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

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

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

13

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

14

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

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

15

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

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

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

16

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

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

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

17

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

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

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

18

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

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

19

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

20

ACID TransactionsAtomicity

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

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

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

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

21

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

22

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

23

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

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

24

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

25

Latency vs Throughput

docs.voltdb.com

26

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

if (P) { A or C }

27

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

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

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

28

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

29

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

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

31

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

32

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

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

33

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

34

Client‐Server

35

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

36

Peer‐to‐peer ﴾P2P﴿

37

ΧαρακτηριστικάΔίκτυο ομότιμων κόμβωνΚάθε κόμβος είναι και client και server

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

38

Component‐based

39

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

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

40

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

41

Layered/N‐tier

42

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

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

43

Model‐View‐Controller ﴾MVC﴿

44

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

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

ModelData model, business logic

ViewData display

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

45

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

Master‐Slave / Master‐Replica

47

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

ReplicationMaster copy of data, multiple replicas ﴾slaves﴿

Load balancingMaster dispatch logic, multiple "worker" nodes

48

Share‐Nothing Architecture

49

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

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

50

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

51

Message‐driven/Publish‐subscribe

52

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

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

53

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

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

54

Event‐driven

55

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

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

56

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

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

58

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

Nodejs Event Loop

60

Pipeline / Pipe‐filter

61

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

62

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

top related