Περίληψη
Οι διαδικτυακές εφαρμογές υποστηρίζουν σχεδόν κάθε πτυχή της έντονα ψηφιοποιημένης κοινωνίας μας, από την ψυχαγωγία και τις αγορές στο διαδίκτυο, μέχρι τον προγραμματισμό και την κράτηση διακοπών, τα διαδικτυακά παιχνίδια, την επικοινωνία, την εργασία και την κοινωνική αλληλεπίδραση, παίζοντας κρίσιμο ρόλο στην καθημερινότητά μας. Ωστόσο, η ανάπτυξη τέτοιων εφαρμογών μεγάλης κλίμακας απαιτεί εκτενή και πολυδιάστατη τεχνογνωσία σε πολλούς τομείς, όπως το υπολογιστικό νέφος, η ανάπτυξη λογισμικού, τα κατανεμημένα συστήματα και τα συστήματα βάσεων δεδομένων, καθώς και εξειδίκευση στον εκάστοτε επιχειρησιακό τομέα. Αυτές οι απαιτήσεις καθιστούν την ανάπτυξη τέτοιων εφαρμογών εφικτή μόνο από λίγα εξαιρετικά ταλαντούχα άτομα ή από μεγάλες εταιρείες που έχουν τη δυνατότητα να προσλάβουν τέτοιο προσωπικό. Σε αυτή τη διδακτορική διατριβή, στοχεύουμε στη δημοκρατικοποίηση της ανάπτυξης και της συντήρησης τέτοιων εφαρμογών στο νέφος, εντοπίζοντας και επιλύοντας τρεις βασικές προκλήσεις: i) την πρ ...
Οι διαδικτυακές εφαρμογές υποστηρίζουν σχεδόν κάθε πτυχή της έντονα ψηφιοποιημένης κοινωνίας μας, από την ψυχαγωγία και τις αγορές στο διαδίκτυο, μέχρι τον προγραμματισμό και την κράτηση διακοπών, τα διαδικτυακά παιχνίδια, την επικοινωνία, την εργασία και την κοινωνική αλληλεπίδραση, παίζοντας κρίσιμο ρόλο στην καθημερινότητά μας. Ωστόσο, η ανάπτυξη τέτοιων εφαρμογών μεγάλης κλίμακας απαιτεί εκτενή και πολυδιάστατη τεχνογνωσία σε πολλούς τομείς, όπως το υπολογιστικό νέφος, η ανάπτυξη λογισμικού, τα κατανεμημένα συστήματα και τα συστήματα βάσεων δεδομένων, καθώς και εξειδίκευση στον εκάστοτε επιχειρησιακό τομέα. Αυτές οι απαιτήσεις καθιστούν την ανάπτυξη τέτοιων εφαρμογών εφικτή μόνο από λίγα εξαιρετικά ταλαντούχα άτομα ή από μεγάλες εταιρείες που έχουν τη δυνατότητα να προσλάβουν τέτοιο προσωπικό. Σε αυτή τη διδακτορική διατριβή, στοχεύουμε στη δημοκρατικοποίηση της ανάπτυξης και της συντήρησης τέτοιων εφαρμογών στο νέφος, εντοπίζοντας και επιλύοντας τρεις βασικές προκλήσεις: i) την προγραμματισιμότητα των εφαρμογών νέφους, ii) τις υψηλής απόδοσης σειριοποιήσιμες συναλλαγές βάσεων δεδομένων με εγγυήσεις ανοχής σε σφάλματα, και iii) την εκτέλεση των εφαρμογών σε αρχιτεκτονική χωρίς διακομιστή (serverless). Για να τις αντιμετωπίσουμε, δημιουργήσαμε το Stateflow, ένα υψηλού επιπέδου αφαίρεσης, αντικειμενοστρεφές, εύχρηστο προγραμματιστικό μοντέλο. Το προγραμματιστικό μοντέλο επιτρέπει την ανάπτυξη εφαρμογών που εκτελούνται από το Styx, μια καινοτόμα ντετερμινιστική μηχανή επεξεργασίας ροών δεδομένων που παρέχει συναλλαγές με σειριοποιήσιμη εγγύηση απόδοσης. Κατά τη μελέτη της πρόκλησης της δημοκρατικοποίησης των εφαρμογών νέφους, διαπιστώσαμε ότι αυτές ταιριάζουν στενά με τις αρχές του μοντέλου εκτέλεσης ροών δεδομένων (streaming dataflow). Στο Κεφάλαιο 1, επισημαίνουμε τις ομοιότητες μεταξύ της επεξεργασίας ροών δεδομένων και των σύγχρονων αρχιτεκτονικών μικροϋπηρεσιών που βασίζονται σε γεγονότα (event-driven) και σκιαγραφούμε το ιδανικό περιβάλλον εκτέλεσης για εφαρμογές νέφους. Για να επαληθεύσουμε την υπόθεσή μας, δημιουργήσαμε το T-Statefun, όπως παρουσιάζεται στο Κεφάλαιο 2, προσαρμόζοντας ένα υπάρχον σύστημα επεξεργασίας ροών δεδομένων ώστε να υποστηρίζει συναλλακτικές εφαρμογές νέφους. Εκείνη τη χρονική περίοδο, το καταλληλότερο σύστημα φάνηκε να είναι το Apache Flink Statefun, ένα σύστημα που προσομοιάζει μια υπηρεσία εκτέλεσης συναρτήσεων με δεδομένα κατάστασης στο υπολογιστικό νέφος Stateful Function as a Service (SFaaS), στο οποίο προσθέσαμε υποστήριξη για συναλλαγές μέσω συντονιστικών συναρτήσεων (coordinator functions). Με το T-Statefun, δείξαμε ότι ένα σύστημα επεξεργασίας ροών δεδομένων μπορεί να υποστηρίξει συναλλακτικές εφαρμογές νέφους μέσω ενός API τύπου SFaaS. Επιπλέον, η ανάπτυξή του μας βοήθησε να εντοπίσουμε δύο σημαντικά προβλήματα: i) ήταν δύσκολο στον προγραμματισμό, ιδιαίτερα μετά την προσθήκη των συντονιστικών συναρτήσεων, και ii) λόγω του διαχωρισμού κατάστασης και επεξεργασίας και ενός μη αποδοτικού πρωτοκόλλου συναλλαγών, το T-Statefun υστερούσε σε απόδοση. Για την αντιμετώπιση του προβλήματος προγραμματισιμότητας, στο Κεφάλαιο 3 παρουσιάζουμε το Stateflow, ένα φιλικό προς τον χρήστη προγραμματιστικό μοντέλο, στο οποίο οι προγραμματιστές λογισμικού γράφουν σε καθιερωμένο αντικειμενοστρεφές στυλ προγραμματισμού, χωρίς καθόλου boilerplate κώδικα, ενώ το Stateflow μετατρέπει αυτόματα τον κώδικα σε ενδιάμεση αναπαράσταση βασισμένη σε ροές δεδομένων με κατάσταση. Κατά την πειραματική χρήση του Stateflow, επιβεβαιώσαμε τις αναποτελεσματικότητες που εντοπίστηκαν στο Κεφάλαιο 2, αναφορικά με τη διαχείριση μηνυμάτων, την κατάσταση, ή την απουσία υποστήριξης συναλλαγών στα υπόλοιπα υποσυστήματα του Stateflow. Έτσι, στο Κεφάλαιο 4 παρουσιάζουμε όλες τις λεπτομέρειες του σχεδιασμού του Styx, ενός κατανεμημένου συστήματος ροής δεδομένων που υποστηρίζει πολυ-κατατμημένες, ντετερμινιστικές συναλλαγές με εγγυήσεις σειριοποιήσιμης απομόνωσης μέσω ενός υψηλού επιπέδου προγραμματιστικού μοντέλου βασισμένου στην Python, το οποίο απαλλάσσει τον προγραμματιστή από τη διαχείριση αποτυχημένων συναλλαγών. Οι σχεδιαστικές μας επιλογές και οι καινοτόμοι αλγόριθμοι που αναπτύξαμε, επέτρεψαν στο Styx να ξεπεράσει τα πιο προηγμένα συστήματα της εποχής του, τουλάχιστον κατά μία τάξη μεγέθους υψηλότερη απόδοση σε όλες τις δοκιμασμένες περιπτώσεις φόρτου. Το Styx απέδειξε ότι είναι εφικτή η ανάπτυξη ενός υψηλής απόδοσης SFaaS συστήματος που προσφέρει εγγυήσεις συναλλακτικότητας και ανοχής σε σφάλματα, διατηρώντας ταυτόχρονα ένα διαισθητικό προγραμματιστικό μοντέλο με ελάχιστο απαιτούμενο σκελετό κώδικα λογισμικού στην υλοποίηση των εφαρμογών. Βασιζόμενοι σε αυτό το θεμέλιο, το επόμενο βήμα ήταν η επέκταση του Styx με τη δυνατότητα να προσαρμόζεται δυναμικά και αποδοτικά σε μεταβαλλόμενα φορτία εργασίας. Για να το επιτύχουμε αυτό, στο Κεφάλαιο 5 διερευνούμε πώς το Styx μπορεί να μεταφέρει την κατάσταση με συναλλακτικό τρόπο, μια αναγκαία δυνατότητα για ελαστικότητα, δεδομένου ότι το Styx διατηρεί την κατάσταση των εφαρμογών στη μνήμη. Ολοκληρώνουμε αυτή τη διατριβή συνοψίζοντας τα βασικά ευρήματα και αναλογιζόμενοι τις συνεισφορές της, εξετάζοντας κριτικά τους περιορισμούς των προτεινόμενων μεθόδων και λαμβάνοντας υπόψη τις ευρύτερες ηθικές και κοινωνικές τους επιπτώσεις. Επιπλέον, βασισμένοι στις εμπειρίες μας από τη δημιουργία του προγραμματιστικού μοντέλου Stateflow και της πλατφόρμας εκτέλεσης Styx, σκιαγραφούμε τις νέες προκλήσεις και τις μελλοντικές κατευθύνσεις στον τομέα.
περισσότερα
Περίληψη σε άλλη γλώσσα
Web applications power almost every aspect of our digitalized society, from entertainment to web shopping, vacation planning and booking, online games, communication, work, and social interaction. However, building scalable and consistent Web applications in modern cloud environments requires extensive and diverse expertise in multiple domains, such as cloud computing, software development, distributed and database systems, and domain knowledge. These requirements make the development of such applications possible only by a few highly talented individuals that only large corporations can hire. In this thesis, we aim at democratizing the development and maintenance of such cloud applications by identifying and addressing three key challenges: i) programmability of cloud applications; ii) high-performance serializable transactions with fault tolerance guarantees; and iii) serverless semantics. To address those, we created Stateflow, a high-level, object-oriented, easy-to-use programming ...
Web applications power almost every aspect of our digitalized society, from entertainment to web shopping, vacation planning and booking, online games, communication, work, and social interaction. However, building scalable and consistent Web applications in modern cloud environments requires extensive and diverse expertise in multiple domains, such as cloud computing, software development, distributed and database systems, and domain knowledge. These requirements make the development of such applications possible only by a few highly talented individuals that only large corporations can hire. In this thesis, we aim at democratizing the development and maintenance of such cloud applications by identifying and addressing three key challenges: i) programmability of cloud applications; ii) high-performance serializable transactions with fault tolerance guarantees; and iii) serverless semantics. To address those, we created Stateflow, a high-level, object-oriented, easy-to-use programming model that operates alongside Styx, a novel deterministic dataflow engine that provides high-performance serializable transactions and serverless semantics. While investigating the challenge of democratizing scalable cloud applications, we discovered that they closely resemble the principles behind the streaming dataflow execution model. In Chapter 1, we highlight the similarities of streaming dataflow processing and the current state-of-the-art event-driven microservice architectures and lay a path towards the ideal cloud application runtime. To validate our hypothesis, we have created T-Statefun, presented in Chapter 2, by adapting an existing dataflow system to support transactional cloud applications. At the time, the best candidate appeared to be Apache Flink Statefun, a stateful function as a service system (SFaaS), to which we added transactional support with coordinator functions. With T-Statefun, we showed that a dataflow system can support transactional cloud applications through a SFaaS API. Furthermore, its development helped us identify two significant issues: i) it was challenging to program, especially after the addition of the coordinator functions; and ii) due to the disaggregation of state and processing and an inefficient transactional protocol, T-Statefun was lacking in performance.In this thesis, to address the programmability issue, in Chapter 3 we introduce Stateflow, a user-friendly programming model where software developers code in the well-established object-oriented programming style with zero boilerplate code, and Stateflow transforms it into an intermediate representation based on stateful dataflow graphs. While experimenting with Stateflow, we verified the inefficiencies detected in Chapter 2 regarding messaging and state, or the lack of transactional support in the rest of Stateflow's supported backends. Thus, in Chapter 4, we present all the details behind the design of Styx, a distributed streaming dataflow system that supports multi-partition deterministic transactions with serializable isolation guarantees through a high-level, standard Python programming model that obviates transaction failure management. Our design choices and novel algorithms allow Styx to outperform the state-of-the-art systems by at least one order of magnitude in all tested workloads regarding throughput. Styx demonstrates that it is possible to build a high-performance SFaaS system that provides transactional and fault-tolerance guarantees while offering an intuitive programming model with minimal boilerplate. Building on this foundation, we extend Styx with the ability to dynamically and efficiently adapt to varying workloads. To enable this, Chapter 5 explores how Styx can migrate state transactionally, a necessary capability for elasticity, given that Styx maintains application state in-memory. We conclude this thesis by summarizing the key findings and reflecting on the contributions, critically examining the limitations of the proposed methods, and considering their broader ethical and societal implications. Moreover, based on the insights we gained from creating the Stateflow programming model and the Styx runtime, we lay out the new challenges and future directions in the field.
περισσότερα
Περίληψη σε άλλη γλώσσα
Webapplicaties ondersteunen nagenoeg elk aspect van onze sterk gedigitaliseerde samenleving: van entertainment en online winkelen tot vakantieplanning, videospellen, communicatie, werk en sociale interactie. Ze spelen een cruciale rol in ons dagelijks leven. Het bouwen van dergelijke applicaties in de moderne cloudomgeving vereist echter diepgaande en diverse expertise in verschillende domeinen, zoals cloud computing, softwareontwikkeling, gedistribueerde systemen, databasesystemen en domeinspecifieke kennis. Deze vereisten maken de ontwikkeling van dergelijke applicaties enkel haalbaar voor een beperkt aantal uiterst getalenteerde individuen of grote bedrijven die over de middelen beschikken om dergelijk talent aan te trekken. In deze thesis beogen we de ontwikkeling en het onderhoud van cloudapplicaties te democratiseren door drie belangrijke uitdagingen te identificeren en aan te pakken: i) programmeerbaarheid van cloudapplicaties; ii) hoog-performante, seriële transacties met foutt ...
Webapplicaties ondersteunen nagenoeg elk aspect van onze sterk gedigitaliseerde samenleving: van entertainment en online winkelen tot vakantieplanning, videospellen, communicatie, werk en sociale interactie. Ze spelen een cruciale rol in ons dagelijks leven. Het bouwen van dergelijke applicaties in de moderne cloudomgeving vereist echter diepgaande en diverse expertise in verschillende domeinen, zoals cloud computing, softwareontwikkeling, gedistribueerde systemen, databasesystemen en domeinspecifieke kennis. Deze vereisten maken de ontwikkeling van dergelijke applicaties enkel haalbaar voor een beperkt aantal uiterst getalenteerde individuen of grote bedrijven die over de middelen beschikken om dergelijk talent aan te trekken. In deze thesis beogen we de ontwikkeling en het onderhoud van cloudapplicaties te democratiseren door drie belangrijke uitdagingen te identificeren en aan te pakken: i) programmeerbaarheid van cloudapplicaties; ii) hoog-performante, seriële transacties met fouttolerantie; en iii) serverless semantiek. Om dit te bereiken hebben we Stateflow ontwikkeld, een hoog-niveau, objectgeoriënteerd en gebruiksvriendelijk programmeermodel dat werkt naast Styx, een vernieuwende deterministische dataflow-engine die seriële transacties met hoge prestaties en serverless semantiek ondersteunt.
Tijdens het onderzoeken van de uitdaging om schaalbare cloudapplicaties te democratiseren, ontdekten we dat deze nauw aansluiten bij de principes van het streaming dataflow-uitvoeringsmodel. In Hoofdstuk 1 benadrukken we de overeenkomsten tussen streaming dataflow-verwerking en de huidige state-of-the-art event-driven microservice-architecturen. We schetsen een pad richting een ideale runtime voor cloudapplicaties. Om onze hypothese te toetsen, hebben we T-Statefun ontwikkeld, zoals besproken in Hoofdstuk 2, door een bestaand dataflowsysteem aan te passen om transactionele cloudapplicaties te ondersteunen. Destijds leek Apache Flink Statefun — een Stateful Function as a Service (SFaaS)-systeem — de beste kandidaat, waaraan we transactionele ondersteuning toevoegden via coördinerende functies. Met T-Statefun toonden we aan dat een dataflowsysteem transactionele cloudapplicaties kan ondersteunen via een SFaaS API. Daarnaast hielp de ontwikkeling ervan ons twee belangrijke problemen te identificeren: i) het systeem was moeilijk te programmeren, zeker na het toevoegen van de coördinerende functies; en ii) vanwege de scheiding van toestand en verwerking en een inefficiënt transactioneel protocol, presteerde T-Statefun ondermaats.
Om het programmeerprobleem aan te pakken, introduceren we in Hoofdstuk 3 Stateflow, een gebruiksvriendelijk programmeermodel waarbij ontwikkelaars software schrijven in een vertrouwde objectgeoriënteerde stijl, zonder enige boilerplate-code. Stateflow vertaalt dit vervolgens naar een intermediaire representatie gebaseerd op toestandsgebaseerde dataflow-grafen. Tijdens het experimenteren met Stateflow bevestigden we de inefficiënties uit Hoofdstuk 2 met betrekking tot messaging, toestand en het gebrek aan transactionele ondersteuning in de andere ondersteunde backends. Daarom presenteren we in Hoofdstuk 4 het ontwerp van Styx, een gedistribueerd dataflow-systeem dat multi-partitie deterministische transacties ondersteunt met seriële isolatiegaranties, via een hoog-niveau Python programmeermodel dat het afhandelen van mislukte transacties overbodig maakt. Onze ontwerpkeuzes en nieuwe algoritmes stelden Styx in staat om de meest geavanceerde systemen van dat moment met minstens een orde van grootte te overtreffen qua doorvoer in alle geteste workloads.
Styx toonde aan dat het mogelijk is om een hoog-performant SFaaS-systeem te bouwen dat transactionele en fouttolerante garanties biedt, terwijl het een intuïtief programmeermodel met minimale boilerplate behoudt. Voortbouwend op deze basis was de volgende stap om Styx uit te breiden met de mogelijkheid om zich dynamisch en efficiënt aan te passen aan wisselende workloads. In Hoofdstuk 5 verkennen we hoe Styx toestand transactioneel kan migreren — een noodzakelijke eigenschap voor elasticiteit, aangezien Styx applicatietoestand in het geheugen houdt.
Tot slot vatten we deze thesis samen door de belangrijkste bevindingen te bespreken en kritisch te reflecteren op de bijdragen. We analyseren de beperkingen van de voorgestelde methodes en overwegen hun bredere ethische en maatschappelijke implicaties. Tot slot formuleren we, op basis van de inzichten die we opdeden tijdens de ontwikkeling van het Stateflow-programmeermodel en de Styx-runtime, nieuwe uitdagingen en richtingen voor toekomstig onderzoek in dit vakgebied.
περισσότερα