Περίληψη : | Τα τελευταία χρόνια παρατηρείται αυξανόμενη απήχηση της αρχιτεκτονικής μικρουπηρεσιών για την ανάπτυξη συστημάτων λογισμικού μεγάλης κλίμακας. Συγκεκριμένα, η λειτουργικότητα ενός μεγάλου συστήματος διαιρείται σε επιμέρους εφαρμογές (μικρουπηρεσίες), οι οποίες μπορούν να υλοποιηθούν σε διαφορετικές προγραμματιστικές πλατφόρμες και να διανεμηθούν ανεξάρτητα σε υποδομές υπολογιστικού νέφους. Η εισαγωγή αρχιτεκτονικής μικρουπηρεσιών εφαρμόζεται, συνήθως, σε υφιστάμενα συστήματα, με στόχο την κλιμάκωση και επιτάχυνση της διαδικασίας ανάπτυξης και διανομής τους. Η εισαγωγή μιας μικρουπηρεσίας γίνεται μέσω εκτεταμένων αναδομήσεων σε διάφορα στρώματα της αρχιτεκτονικής του συστήματος, με στόχο την απόσπαση τμήματος της λειτουργικότητας σε ξεχωριστή βάση κώδικα. Ειδικά για εφαρμογές που ενσωματώνουν στρώμα μοντέλου πεδίου (domain layer), το οποίο υλοποιεί πολύπλοκη επιχειρησιακή λογική και ενσωματώνει αρμοδιότητες αντιστοίχισης με το στρώμα δεδομένων μέσω ORM (Object Relational Mapping) υποδομής, η διάσπασή του αποτελεί βασικό στάδιο της διαδικασίας αναδόμησης. Η εξαγωγή και αυτονόμηση ενός τμήματος του μοντέλου πεδίου, συνοδευόμενο από την κατάτμηση του υφισταμένου μοντέλου δεδομένων, επιτρέπει την οριοθέτηση της εμβέλειας της νέας μικρουπηρεσίας και μειώνει τη σύζευξη της εξαγόμενης λειτουργικότητας με την υφιστάμενη εφαρμογή. Η αυτοματοποίηση της διαδικασίας αναδόμησης θα ενισχύσει, επίσης, τη γρήγορη και ασφαλή μετάβαση υφισταμένων εφαρμογών διακομιστή σε μη κατανεμημένες αρχιτεκτονικές χαλαρής σύζευξης, όπως ο αρθρωτός μονόλιθος (modular monolith). Σε αυτήν την διπλωματική εργασία επιχειρείται η σχεδίαση και υλοποίηση μεθόδου αυτοματοποιημένης αναδόμησης για την εξαγωγή τμήματος του στρώματος μοντέλου πεδίου μιας εφαρμογής και κατ’ επέκταση, την διάσπαση και των υπόλοιπων στρωμάτων της Μονολιθικής εφαρμογής. Η υλοποίηση της μεθόδου γίνεται σε μορφή ενός Eclipse Plugin, το οποίο επιτρέπει την επιλογή ενός υποσυνόλου των κλάσεων του μοντέλου πεδίου και εξαγωγή τους σε ξεχωριστό Java package, με σκοπό να επικουρήσει στην διαδικασία μετάβασης στην αρχιτεκτονική των μικρουπηρεσιών. Η εμπειρική αξιολόγηση της μεθόδου γίνεται σε σειρά από έργα ανοικτού κώδικα. Recent years have seen a growing appeal of microservices architecture for the development of large-scale application systems. In particular, the functionality of a large system is divided in individual applications (microservices), which can be used on different programming platforms and distributed in cloud computing infrastructures. The introduction of microservices architecture, is usually applied, to existing systems, with the aim of scaling and speeding up their development and distribution process. The introduction of a microservice is done through extensive refactoring in various layers of the system architecture, with the aim of decomposing part of the functionality into a separate code base. Especially applications that integrate a domain model layer (domain layer), which implements complex business logic and integrates mapping responsibilities with the data layer through ORM (Object Relational Mapping) infrastructure, its decomposition is a key stage of the refactoring process. Extracting and isolating a part of the domain model, accompanied by partitioning the existing data model, allows the scope of the new microservice to be delimited and reduces the coupling of the extracted functionality with the existing application. Automating the refactoring process will also enhance the rapid and secure migration of existing server applications to non-distributed loosely coupled architectures such as the modular monolith.The thesis attempts to design and implement an automated refactoring method to extract part of the domain model layer of an application and, by extension, the decomposition of the remaining layers of the Monolithic application. The implementation of the method is done in the form of an Eclipse Plugin, which allows the selection of a subset of the domain model classes and extracting them to a separate Java package, in order to assist in the migration process towards the microservices architecture. Empirical evaluation of the method is done in a series of open-source projects.
|
---|