Περίληψη
Αυτή η διατριβή περιγράφει μια κατανεμημένη αρχιτεκτονική βασισμένη κυρίως στη γλώσσα JavaScript (JS), κατάλληλη για την ανάπτυξη σύγχρονων εφαρμογών Ιστού, εντοπίζει προκλήσεις ασυμβατότητας και πολυπλοκότητας και παρέχει πιθανές λύσεις. Διεξάγοντας μια σειρά από stress tests, σε δημοφιλείς τεχνολογίες από την πλευρά του διακομιστή, η συμβατική στοίβα PHP/Apache βρέθηκε αναποτελεσματική για την αντιμετώπιση της αυξανόμενης ζήτησης στη δικτυακή κίνηση. Ο διακομηστής NGINX εκτέλεσε περισσότερες από 2,5 φορές πιο γρήγορα λειτουργίες εισόδου/εξόδου (I/O) από τον Apache, ενώ το Node.js είχε καλύτερη απόδοση και τους δύο. Το Node.js, αν και εξαιρετικό στις λειτουργίες I/O και στη χρήση πόρων, διαπιστώθηκε ότι υστερεί στην εξυπηρέτηση στατικών αρχείων χρησιμοποιώντας τον ενσωματωμένο διακομιστή Hypertext Transfer Protocol (HTTP), ενώ το NGINX είχε εξαιρετική απόδοση σε αυτήν την εργασία. Έτσι, για βελτιστοποιημένη η αποτελεσματικότητα, ένας διακομιστής NGINX θα μπορούσε να τοποθετηθεί μπροστ ...
Αυτή η διατριβή περιγράφει μια κατανεμημένη αρχιτεκτονική βασισμένη κυρίως στη γλώσσα JavaScript (JS), κατάλληλη για την ανάπτυξη σύγχρονων εφαρμογών Ιστού, εντοπίζει προκλήσεις ασυμβατότητας και πολυπλοκότητας και παρέχει πιθανές λύσεις. Διεξάγοντας μια σειρά από stress tests, σε δημοφιλείς τεχνολογίες από την πλευρά του διακομιστή, η συμβατική στοίβα PHP/Apache βρέθηκε αναποτελεσματική για την αντιμετώπιση της αυξανόμενης ζήτησης στη δικτυακή κίνηση. Ο διακομηστής NGINX εκτέλεσε περισσότερες από 2,5 φορές πιο γρήγορα λειτουργίες εισόδου/εξόδου (I/O) από τον Apache, ενώ το Node.js είχε καλύτερη απόδοση και τους δύο. Το Node.js, αν και εξαιρετικό στις λειτουργίες I/O και στη χρήση πόρων, διαπιστώθηκε ότι υστερεί στην εξυπηρέτηση στατικών αρχείων χρησιμοποιώντας τον ενσωματωμένο διακομιστή Hypertext Transfer Protocol (HTTP), ενώ το NGINX είχε εξαιρετική απόδοση σε αυτήν την εργασία. Έτσι, για βελτιστοποιημένη η αποτελεσματικότητα, ένας διακομιστής NGINX θα μπορούσε να τοποθετηθεί μπροστά για τα αιτήματα στατικού περιεχομένου, επιτρέποντας στις διαδικασίες Node.js να χειρίζονται μόνο δυναμικό περιεχόμενο.Βρέθηκε ότι η γλώσσα Rust ενισχύει την απόδοση κατά 5 φορές σε σχέση με τον αντίστοιχο κώδικα JS χωρίς την πραγματοποίηση πρόσθετων βελτιστοποιήσεων και εμφάνισε έως και 7 φορές μεγαλύτερη απόδοση από τον μηχανισμό ταυτόχρονης λειτουργίας του Node.js χωρίς αλλαγές στον ενσωματωμένο sheduler. Τα ευρήματα παρέχουν ουσιαστικές αποδείξεις ότι η Rust είναι ικανή να παρέχει τα χαρακτηριστικά χαμηλού επιπέδου που απαιτούνται για λειτουργίες μη αποκλεισμού και πρόσβασης υλικού, διατηρώντας παράλληλα ομοιότητες υψηλού επιπέδου με τη JS, αυξάνοντας την παραγωγικότητα.Επιπλέον, παρουσιάζεται ένα πρωτότυπο πλαίσιο, το οποίο χρησιμοποιεί τις γλώσσες προγραμματισμού Rust και JS, καθώς και τα αντίστοιχα οικοσυστήματα τους, παράλληλα με το πρότυπο WebAssembly, για την επίτευξη ενισχυμένης έκθεσης δυσεύρετων C/C++ στοιχείων λογισμικού ανοιχτού κώδικα (OSS). Οι παρεχόμενες μετρήσεις παρουσιάζουν υπερδιπλάσια αύξηση στις λήψεις για μια ανασυσκευασμένη βιβλιοθήκη, ανώτερη δυνατότητα ανακάλυψης σε σύγκριση με τα τυπικά δημόσια αποθετήρια κώδικα OSS, καθώς και στοιχεία ότι οι προμηθευτές προγραμμάτων περιήγησης Ιστού επενδύουν πολύ στη βελτιστοποίηση του υποκείμενου χρόνου εκτέλεσης.Τέλος, πραγματοποιήθηκε μια ποιοτική μελέτη στον ιστότοπο Open Source Stack Exchange, προκειμένου να ομαδοποιηθούν και να κατηγοριοποιηθούν κοινά προβλήματα που αντιμετωπίζουν οι προγραμματιστές OSS. Τα προβλήματα που συζητήθηκαν χωρίστηκαν σε 26 κατηγορίες προβλημάτων και ομαδοποιήθηκαν σε 6 clusters. Τα αποτελέσματα δείχνουν ότι οι αναρτήσεις σε κείμενα/προϋποθέσεις αδειών και ειδοποιήσεις αδειών/πνευματικών δικαιωμάτων είναι πιο συνηθισμένες, ενώ οι αναρτήσεις για διαφορές αδειών είναι οι πιο δημοφιλείς όσον αφορά τις προβολές από άλλους χρήστες.
περισσότερα
Περίληψη σε άλλη γλώσσα
This thesis describes a mostly JavaScript (JS) based distributed architecture, suitable for modern Web application development, identifies incompatibility and complexity challenges, and provides potential solutions. By conducting a series of stress tests, on popular server side technologies, the conventional PHP/Apache stack was found inefficient to address the increasing demand in network traffic. NGINX performed more than 2.5 times faster in Input/Output (I/O) operations than Apache, whereas Node.js outperformed both. Node.js, although excellent in I/O operations and resource utilization, was found lacking when serving static files using its built-in Hypertext Transfer Protocol (HTTP) server, while NGINX performed great at this task. So, in order to address efficiency, an NGINX server could be placed in-front and proxy static file requests, allowing the Node.js processes to only handle dynamic content.Rust was found to enhance the performance by a factor of 5 times over the equivalen ...
This thesis describes a mostly JavaScript (JS) based distributed architecture, suitable for modern Web application development, identifies incompatibility and complexity challenges, and provides potential solutions. By conducting a series of stress tests, on popular server side technologies, the conventional PHP/Apache stack was found inefficient to address the increasing demand in network traffic. NGINX performed more than 2.5 times faster in Input/Output (I/O) operations than Apache, whereas Node.js outperformed both. Node.js, although excellent in I/O operations and resource utilization, was found lacking when serving static files using its built-in Hypertext Transfer Protocol (HTTP) server, while NGINX performed great at this task. So, in order to address efficiency, an NGINX server could be placed in-front and proxy static file requests, allowing the Node.js processes to only handle dynamic content.Rust was found to enhance the performance by a factor of 5 times over the equivalent JS code without performing additional optimizations, and displayed up to 7 times greater performance than Node.js’ concurrency mechanism without alterations to the embedded scheduler. The findings provide substantial evidence that Rust is capable of providing the low-level features needed for non-blocking operations and hardware access, while maintaining high-level similarities to JS, aiding productivity.Furthermore, a prototype framework is presented, which utilizes the Rust and JS programming languages, as well as their respective ecosystems, alongside the WebAssembly state-of-the-art Web standard, for achieving boosted exposure for hard-to-find C/C++ Open Source Software (OSS) components. Provided metrics exhibit a more than twofold increase in downloads for a re-packaged library, superior discoverability compared to standard public OSS code repositories, as well as evidence that Web browser vendors invest heavily in optimizing the underlying runtime.Finally, a qualitative study has been performed on the Open Source Stack Exchange site in order to cluster and categorize common problems OSS developers encounter. The problems discussed have been separated into 26 categories of problems, and grouped into 6 clusters. Results show that posts on license texts/conditions and license/copyright notices are more common, whereas posts on license differences are the most popular in terms of views by other users.
περισσότερα