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

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

08 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

07 Αρχιτεκτονική Κατανεμημένων Συστημάτων στον Παγκόσμιο Ιστό

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

Αρχιτεκτονικές Συστημάτων

09 Η γλώσσα UML I. Τεχνολογία Λογισμικού. Τμήμα Πληροφορικής & Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών. Εαρινό εξάμηνο

09 Η γλώσσα UML II. Τεχνολογία Λογισμικού. Σχολή Hλεκτρολόγων Mηχανικών & Mηχανικών Yπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Χειμερινό εξάμηνο

Ελληνικό Ανοικτό Πανεπιστήµιο. Η Ανάλυση και ο Σχεδιασµός στην Ενοποιηµένη ιαδικασία. ρ. Πάνος Φιτσιλής

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Υπηρεσίες Ιστού (Web Services) ΜΙΧΑΛΗΣ ΜΑΛΙΑΠΠΗΣ

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Μελέτη και Ανάπτυξη ενός Εργαλείου Υποβοήθησης στη Σχεδίαση µίας Βάσης εδοµένων Τύπου Graph από Τελικούς Χρήστες

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

02 Αντικειμενοστρεφής Προγραμματισμός

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

Αρχιτεκτονικός σχεδιασμός. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 11

Έρευνα στα Ασύρματα Δίκτυα Αισθητήρων WSN

Δίκτυα Υπολογιστών I

06 Αντικειμενοστρεφής ανάλυση και σχεδιασμός

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

Προχωρηµένα Θέµατα Αρχιτεκτονικής Η/Υ. Storage Systems.. Λιούπης

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Τι είναι η λογική αρχιτεκτονική

Ταχύτητα, Απλότητα & Αξιοπιστία

Εισαγωγή στην αντικειµενοστρεφή τεχνολογία

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

10α Έλεγχος και επαλήθευση λογισμικού

Κατανεµηµένος Προγραµµατισµός & Προγραµµατισµός στο ιαδίκτυο

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #17

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

Πύλη Φαρμακευτικών Υπηρεσιών Υπουργείου Υγείας Κύπρου. System Architecture Overview

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 11: Αρχιτεκτονική Cloud

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

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Ανοικτά Δεδομένα. Η εμπειρία του OpenDataCloud

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

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

Διαφορές single-processor αρχιτεκτονικών και SoCs

Πανεπιστήµιο Πειραιώς Τµήµα Πληροφορικής

Λειτουργικά Συστήματα. Εισαγωγή

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Τεχνολογίες και Εφαρμογές Διαδικτύου

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

Προσομοίωση Συστημάτων Χειμερινό εξάμηνο Εξάμηνο 5 ο. Ατομική εργασία προς παράδοση στο CloudAnalyst

Κατανεμημένα Συστήματα. Javascript LCR example

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Συνάφεια Κρυφής Μνήµης σε Επεκτάσιµα Μηχανήµατα

Πληροφορίες για το μάθημα

Βασικές Έννοιες Web Εφαρμογών

ΘΕΜΑΤΑ ΙΠΛΩΜΑΤΙΚΩΝ ΕΡΓΑΣΙΩΝ 2006 / 2007

ΚΕΦΑΛΑΙΟ 17: Web Services Εισαγωγή

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Υπηρεσιοστρεφής Αρχιτεκτονική SOA (Service Oriented Architecture)

ΜΑΘΗΜΑ: Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ. 1 η ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ: ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

UML. Γενικά χαρακτηριστικά Στοιχεία µοντέλων Συσχετίσεις. Παραδείγματα

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Δίκτυα Διασύνδεσης. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών Εργαστήριο Υπολογιστικών Συστημάτων

Δυνατότητα επέκτασης για υποστήριξη ξεχωριστής διεπαφής χρήστη για φορητές συσκευές

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

ΜΕΘΟΔΟΛΟΓΙΕΣ ΑΝΑΠΤΥΞΗΣ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στη Σχεδίαση Λογισμικού

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Week 10: Graphical User Interfaces

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

EPL 660: Lab 4 Introduction to Hadoop

Διαχείριση Πληροφοριακών Συστημάτων

Ειδικά Θέματα Προγραμματισμού

Μάθημα 6: Αρχιτεκτονική TCP/IP

Μάθημα «Υπηρεσίες Ηλεκτρονικής Υγείας»

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

EM 361: Παράλληλοι Υπολογισμοί

Επιχειρησιακά Πληροφοριακά Συστήματα. Site: Στόχος Σκοπός μαθήματος

Chapter 4 ( ή 1 στο βιβλίο σας)

11β Δομικά πρότυπα σχεδίασης

Αρχιτεκτονική Υπολογιστών

METROPOLIS. Ένα περιβάλλον σχεδιασμού για ετερογενή συστήματα

Certified Telecommunications & Network Professional (CTNP) Εξεταστέα Ύλη (Syllabus) Έκδοση 1.0

Αρχιτεκτονικές Δικτύων & Πρωτόκολλα Ι

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

Volume Managers. Εργασία για το μάθημα Λειτουργικά Συστήματα Ι. Κοντεκάκης Ιωάννης.

ΕΚΘΕΣΗ ΠΡΟΔΙΑΓΡΑΦΩΝ ΔΑΠΑΝΗΣ ΓΙΑ ΤΗΝ ΠΑΡΟΧΗ ΥΠΗΡΕΣΙΩΝ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΙΚΩΝ ΜΕΤΡΩΝ ΑΣΦΑΛΕΙΑΣ ΤΟΥ COMPUTER ROOM ΔΗΜΟΥ ΩΡΑΙΟΚΑΣΤΡΟΥ

Λογισµικό (Software SW) Γλώσσες

Διαδικτυακές Εφαρμογές. Ενότητα 2: Enterprise Java Beans και Java Server Faces Μιχάλας Άγγελος Βούρκας Δημήτριος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ ΓΙΑ ΕΠΙΚΟΙΝΩΝΙΑ ΠΕΛΑΤΩΝ ΜΕΣΩ ΙΑ ΙΚΤΥΟΥ

Δίκτυα Υπολογιστών I

Αντικειμενοστρεφής Προγραμματισμός

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΔΙΚΤΥΑ (15-17) Π. Φουληράς

Λειτουργικά Συστήματα Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

Κεφάλαιο 1ο Πολυπρογραμματισμός Πολυδιεργασία Κατηγορίες Λειτουργικών Συστημάτων

ΣΕΜΙΝΑΡΙΟ ΔΙΚΤΥΩΝ ΜΑΡΤΙΟΣ ΜΑΙΟΣ 2010 ΔΙΟΡΓΑΝΩΣΗ ΑΜΠΑΡΙΩΤΗΣ ΑΠΟΣΤΟΛΟΣ ΓΙΑΜΜΑΚΗΣ ΓΙΑΝΝΗΣ ΛΕΒΑΝΤΗΣ ΟΔΥΣΣΕΑΣ ΠΑΠΑΔΟΠΟΥΛΟΣ ΜΑΡΙΟΣ ΨΙΑΧΟΣ ΧΡΗΣΤΟΣ

Πληροφορική στιςεπιχειρήσεις

Περιεχόμενα. Κεφάλαιο 2 Κοινωνικοτεχνικά συστήματα 49

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

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

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

Ένα αρχιτεκτονικό στυλ είναι μια "επώνυμη" συλλογή από σχεδιαστικές αποφάσεις: 1. η οποία εφαρμόζεται σε ένα δεδομένο περιβάλλον, 2. οριοθετόντας τα πιθανά συστήματα που μπορεί να προκύψουν σε αυτό, 3. παρέχοντας ποιοτικά χαρακτηστικά σε κάθε συστήμα που προκύπτει. 9

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

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

Στο μάθημα θα δούμε αλφαβητικά Client Server Component based Εvent Driven Layered / N tier Master slave/master replica Message driven/publish subscribe Microservices* 12

Model View Controller MVC Model View ViewModel MVVM * Peer to peer P2P Pipeline / Pipe filter Representation 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 Transactions Atomicity Η δοσοληψία πετυχαίνει ή αποτυγχάνει πλήρως 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 Distributed Database 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

Χαρακτηριστικά Διαχωρισμός ενδιαφερόντων Controller User input, request/response handling, επίβλεψη των Model, View Model Data model, business logic View Data 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 master Master authority, slaves redundancy Εφαρμογές: υψηλή διαθεσιμότητα, βελτίωση απόδοσης, επιμερισμός φόρτου, κ.ά Replication Master copy of data, multiple replicas slaves Load balancing Master dispatch logic, multiple "worker" nodes 48

Share Nothing Architecture 49

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

Eventual Consistency BASE Systems Basically Available, Soft state, Eventual consistency Όταν πάψουν οι ενημερώσεις σε μια εγγραφή, τελικά 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 C1 C2 63