Μεθοδολογία και ανάπτυξη συστημάτων υπολογιστικής νέφους και ελεύθερα διαθέσιμες τεχνολογίες υποστήριξής τους
Methodology and development of cloud native systems and free technologies to support them
Keywords
Μονολιθική αρχιτεκτονική ; Υπολογιστική νέφους ; Αρχιτεκτονικές υπολογιστικής νέφους ; Κιβώτια ; Ενορχήστρωση κιβωτίων ; Μεθοδολογία 12 παραγόντων ; Μικρουπηρεσίες ; Πάροχοι υπηρεσιών νέφους ; Docker ; Kubernetes ; Vendor lock-in ; Cloud native ; Google Cloud ; Microsoft Azure ; AWS ; Free tierAbstract
Με την ανάπτυξη σύγχρονων μορφών αυτοματοποίησης υπηρεσιών μέσω υπολογιστικών συστημάτων
προέκυψαν νέες προκλήσεις στον σχεδιασμό και την ανάπτυξη λογισμικού. Σε επίπεδο υπολογιστικών
πόρων υπάρχει μεγάλη ανάπτυξη και επενδύσεις από παρόχους υπηρεσιών υπολογιστικής νέφους για
την διάθεση υπηρεσιών υποστήριξης μέσω διαδικτύου που καλύπτουν τις νέες απαιτήσεις. Οι
υπηρεσίες υπολογιστικής νέφους αξιοποιούνται από πελάτες οι οποίοι δεν διαθέτουν την απαραίτητη
τεχνολογική υποδομή για την υποστήριξη των συστημάτων τους ή δεν θέλουν να επενδύσουν στην
υποδομή, διαχείριση και συντήρηση που εκείνη απαιτεί. Τέλος, οι νέες μορφές ανάπτυξης εφαρμογών
προκάλεσαν την ανάγκη δημιουργίας νέων μεθοδολογιών που πρέπει να τηρούνται στην δημιουργία
συστημάτων τα οποία θα αξιοποιούν στο έπακρο τις νέες τεχνολογίες νέφους.
Η παρούσα διπλωματική αποτελείται από τρία βασικά μέρη. Στο πρώτο μέρος αποτυπώνεται το
κίνητρο που ωθεί τους οργανισμούς στην εγκατάλειψη της μονολιθικής αρχιτεκτονικής συστημάτων
και δίνει έμφαση στην υιοθέτηση τεχνολογιών υπολογιστικής νέφους και στις νέες δυνατότητες που
προσφέρουν. Στο δεύτερο μέρος πραγματοποιείται μελέτη και σύγκριση μεταξύ δωρεάν
προσφερόμενων τεχνολογιών νέφους από τους τρεις δημοφιλέστερους πάροχους υπηρεσιών (Google,
Microsoft, Amazon), και ακολουθεί αξιολόγηση αυτών με βασικά κριτήρια την υψηλότερη δωρεάν
διαθεσιμότητα και την υποστήριξη των περισσότερων cloud-agnostic τεχνολογιών. Στο τρίτο και
τελευταίο μέρος ακολουθεί η σχεδίαση και ανάπτυξη μίας cloud-native εφαρμογής αυτοματοποίησης
της διαδικασίας εγγραφής φοιτητών σε εργαστήρια, η οποία βασίζεται αρχιτεκτονικά στην
μεθοδολογία 12 παραγόντων. Η εφαρμογή αποτελείται από τέσσερεις μικρουπηρεσίες ανεπτυγμένες
στο framework Spring Boot που αναπαριστούν το API του συστήματος, την εφαρμογή pwa που θα
χρησιμοποιούν οι τελικοί χρήστες υλοποιημένη στο framework React.js, και δύο υποστηρικτικές
υπηρεσίες, την μη-σχεσιακή βάση δεδομένων MongoDB και μία υπηρεσία μεσίτη μηνυμάτων
RabbitMQ. Η εφαρμογή αυτή αναπτύσσεται αρχικά σε τοπικό περιβάλλον ανάπτυξης με χρήση του
Docker, και ύστερα με την πλατφόρμα ενορχήστρωσης κιβωτίων Kubernetes. Στην συνέχεια,
πραγματοποιείται επιλογή κάποιων από τις διαθέσιμες δωρεάν τεχνολογίες που μελετήθηκαν στο
δεύτερο μέρος της διπλωματικής και χρησιμοποιούνται για την υποστήριξη της εφαρμογής σε
περιβάλλον νέφους. Οι υπηρεσίες παρόχων που επιλέγονται είναι οι Azure Cosmos DB για την
MongoDB, Azure App Service για την φιλοξενία των μικρουπηρεσιών και ένα Google Cloud VM
instance για την φιλοξενία του RabbitMQ.
Abstract
With the development of modern forms of service automation through computer systems, new
challenges in software design and development have emerged. On a computing resources level, there is
great development and investment by cloud computing service providers to provide new online
services that cover the latest needs. Cloud computing services are utilized by customers who do not
have the necessary technological infrastructure to support their systems or do not want to invest in the
infrastructure, management and maintenance that it requires. Finally, these new forms of application
development in the cloud have created the need for new methodologies that must be followed in order
to create applications that fully utilize and exploit cloud technologies.
This diploma thesis consists of three main parts. The first part reflects the motivation that pushes
organizations to abandon monolithic architectures and emphasizes on the adoption of cloud
technologies and the new opportunities they offer. In the second part, a study and comparison was
made between free cloud services offered by the three most popular cloud providers (Google,
Microsoft, Amazon), then, an evaluation was followed with the key criteria being the highest free
availability and the support of the most cloud-agnostic technologies. The third and the final part
follows the design and development of a cloud-native application that automates the student
enrollment process in laboratories, which is architecturally based on the 12-factor methodology. The
application consists of four microservices developed in the Spring Boot framework that consist the
system’s API, the web application that end-users will use, implement in the React.js framework, and
two backing services, the No-SQL MongoDB database and RabbitMQ as a message broker. The cloud
native application is initially deployed in a local developement environment using Docker, then, it’s
deployed using the Kubernetes platform. Last, some of the available free cloud services that were
studied in the second chapted are selected and used to deploy the application in a hosted cloud
environment. The selected services are Azure Cosmos DB for MongoDB, Azure App Service for the
microservices and a Google Cloud VM for hosting RabbitMQ.