dc.contributor.advisor | Αλέπης, Ευθύμιος | |
dc.contributor.author | Αγγελόπουλος, Σπυρίδων | |
dc.date.accessioned | 2020-06-30T09:15:20Z | |
dc.date.available | 2020-06-30T09:15:20Z | |
dc.date.issued | 2020-06-01 | |
dc.identifier.uri | https://dione.lib.unipi.gr/xmlui/handle/unipi/12781 | |
dc.identifier.uri | http://dx.doi.org/10.26267/unipi_dione/204 | |
dc.description.abstract | Στον προγραμματισμό μπορεί κανείς να παρατηρήσει με την πάροδο του χρόνου διάφορες τάσεις αφενός στις γλώσσες αλλά και σε διάφορες μορφές αρχιτεκτονικής που χρησιμοποιούνται. Οι γλώσσες που ανά χρονικές περιόδους κυριαρχούν υποδηλώνουν το "πώς", το μέσο δηλαδή με το οποίο γίνεται η ανάπτυξη του λογισμικού. Από την άλλη, η αρχιτεκτονική υποδηλώνει το "τι", ποιος είναι ο σκοπός της ανάπτυξης του λογισμικού. Μέσα από αυτή εμφανίζονται οι στόχοι αλλά και οι περιορισμοί που έχει η ανάπτυξη λογισμικού την αντίστοιχη περίοδο.
Τα τελευταία χρόνια μία από τις επικρατέστερες αρχιτεκτονικές ανάπτυξης πολύπλοκων λογισμικών και εφαρμογών είναι τα microservices. Για να κατανοήσει κάποιος ακριβώς αυτή την αρχιτεκτονική και να μπορέσει να σχεδιάσει το δικό του λογισμικό με αυτή τη μεθοδολογία πρέπει να εμβαθύνει στα εξής:
• τι ακριβώς είναι τα microservices
• πώς αναδύθηκαν και γιατί σαν κυριαρχούσα αρχιτεκτονική
• σε ποιες εφαρμογές ταιριάζουν
Όταν κατανοήσει αυτά τα σημεία μπορεί να προχωρήσει στο πρακτικό κομμάτι
• πώς να σχεδιάσει μία εφαρμογή με microservices
• ποια είναι τα βασικά σημεία τους και πώς να υλοποιήσει
• πώς να εντάξει αυτό τον τρόπο προγραμματισμού σε ένα ευρύτερο πλαίσιο μέσα σε μία εταιρία/πολύπλοκο σύστημα
Microservices με λίγα λόγια θα μπορούσαμε να πούμε ότι είναι ο τρόπος που ένα σύνθετο μονολιθικό σύστημα μπορεί να αναπτυχθεί σαν ένα σύνολο περισσότερων αλλά απλούστερων εφαρμογών που επικοινωνούν μεταξύ τους.
Άρχισε να εμφανίζεται σαν μεθοδολογία από το 2000 αλλά τα τελευταία χρόνια έχει εδραιωθεί σαν τρόπος ανάπτυξης πολύπλοκων διαδικτυακών εφαρμογών καθώς όλες οι διαδικτυακές εφαρμογές ευρείας (και όχι μόνο) χρήσης την υιοθέτησαν.
Δίνει λύση σε συστήματα όπου η πολυπλοκότητα ξεπερνά τη συνηθισμένη. Όσο μία εφαρμογή μεγαλώνει σε μέγεθος αλλά και σε πολυπλοκότητα η ανάπτυξη νέων feature αλλά και το debugging των ήδη υπαρχόντων γίνεται όλο και πιο δύσκολη και σε κάποιες περιπτώσεις αδύνατη. Σε τέτοιες συνθήκες έρχονται συχνά τα microservices να δώσουν λύσεις.
Για να αρχίσει κάποιος να σχεδιάζει μία εφαρμογή με microservices πρέπει στο μυαλό του να αντικαταστήσει την μονολιθική εφαρμογή που ήξερε με ένα σύνολο απλούστερων εφαρμογών που επικοινωνούν μεταξύ τους. Έτσι τα διαφορετικά ξεχωριστά υποσυστήματα μετατρέπονται σε ξεχωριστές απλούστερες εφαρμογές. Αυτές με τι σειρά τους είναι ευκολότερο να αναπτυχθούν αφού δεν έχουν dependencies σε άλλα τμήματα της παλαιότερης μονολιθικής εφαρμογής.
Καθώς όμως το πλήθος των εφαρμογών μεγαλώνει, πρέπει ο προγραμματιστής να αντιμετωπίσει νέα προγραμματιστικά προβλήματα. Πώς αυτές οι εφαρμογές θα υλοποιηθούν; Πώς θα αναγνωρίζει η μία την άλλη; Πώς θα επικοινωνούν μεταξύ τους; Και το κυριότερο, πώς θα αποφύγει εισαγάγει εξαρτήσεις μεταξύ τους ώστε να μην καταλήξει καινούργια μονολιθική εφαρμογή.
Ένας προγραμματιστής σπάνια δουλεύει μόνος του. Και ακόμα πιο σπάνια μία εφαρμογή που χρειάζεται να δομηθεί με microservices αναπτύσσεται μόνο από ένα προγραμματιστή. Αυτό σημαίνει ότι αυτός ο νέος τρόπος αρχιτεκτονικής αλλά και προγραμματισμού πρέπει να καταφέρει να ενταχθεί παραγωγικά σε μία ευρύτερη "γραμμή παραγωγής" που ξεκινά από το coding και φτάνει μέχρι το deployment. | el |
dc.format.extent | 61 | el |
dc.language.iso | el | el |
dc.publisher | Πανεπιστήμιο Πειραιώς | el |
dc.title | Τεχνικές για ανάπτυξη εφαρμογής με χρήση microservices | el |
dc.title.alternative | Application development techniques using microservices | el |
dc.type | Master Thesis | el |
dc.contributor.department | Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών. Τμήμα Πληροφορικής | el |
dc.description.abstractEN | In programming one can observe over time various trends in languages but also in various forms of architectures being used. Languages that dominate from time to time indicate the "how", that is, the means by which software is developed. On the other hand, architecture indicate "what", what is the purpose of software development. Through it, the goals and the limitations of software development in the respective period appear.
In recent years, one of the most prevalent architectures for developing sophisticated software and applications is microservices. In order to understand exactly this architecture and to be able to design your own software with this methodology, one must delve into the following:
• what exactly are microservices
• how and why they emerged and as a dominant architecture
• in which applications they fit
Once he understands these points he can move on to the practical part
• how to design an application with microservices
• what are their key points and how to implement
• how to integrate this way of programming in a broader context within a company / complex system
Microservices in short is the way a complex monolithic system can be developed as a set of more but simpler applications that communicate with each other.
It started appearing as a methodology in 2000 but in recent years it has established itself as a way to develop complex online applications as all online applications of wide (and not only) use have adopted it.
It provides a solution in systems where complexity is greater than usual. As an application grows in size and complexity, the development of new features and debugging of existing ones becomes more and more difficult and in some cases impossible. In such conditions, microservices often can give solutions.
In order to start designing an application with microservices, one must replace in one's mind the monolithic application that he knew with a set of simpler applications that communicate with each other. Thus the different separate subsystems are transformed into separate simpler applications. These in turn are easier to develop as they have no dependencies on other parts of the older monolithic application.
But as the number of applications grows, the developer has to deal with new programming problems. How will these applications be implemented? How will they recognize each other? How will they communicate with each other? And how to avoid importing dependencies between them so as not to end up a new monolithic application.
A developer rarely works alone. And even more rarely an application that needs to be structured with microservices is only developed by one programmer. This means that this new way of architecture as well as planning must be able to be productively integrated into a wider "production line" that starts from coding and reaches deployment. | el |
dc.contributor.master | Προηγμένα Συστήματα Πληροφορικής | el |
dc.subject.keyword | Microservices | el |
dc.subject.keyword | Αρχιτεκτονική ηλεκτρονικών υπολογιστών | el |
dc.subject.keyword | Προγραμματισμός ηλεκτρονικών υπολογιστών | el |
dc.subject.keyword | Εφαρμογές | el |
dc.date.defense | 2020-06-01 | |