Περίληψη : | Nowadays, most of the large scale application systems that have already matured, rely on a specific architectural pattern(s) and follow best practices in their implementation. They have defined the basic concepts and flows on how they work, how they communicate with other components or third party providers, and any new feature implementation will most likely follow the same patterns and concepts, since consistency is one of the most valuable qualities of a maintainable large scale system. Unfortunately, for a system that is being developed for many years, by many different developers and has probably also changed many architects and tech leads, consistency is not something that can be kept intact easily. Also some systems start small but when the time comes, they can’t scale enough and they have to refactor everything or even rebuild the system from scratch in order to be able to expand. A solution could be to help architects and developers to make some important decisions when they start implementing a new system, and help them stick to them or extend them with scalable solutions that can be combined along with their initial decisions. As always, if we want to enforce some basic rules so that we can achieve a high level of consistency, a framework is a great tool that will help us succeed in that. Of course we are aware that nowadays the initial requirements of a system may change a lot during the development cycle, so any kind of restriction,like implementation rules that help consistency, might not favor extensibility, that’s why many big companies avoid using any kind of framework that will enforce a specific way of working or technology stack and they pick only the ones that are highly extensible and well established. Σήμερα, τα περισσότερα μεγάλης κλίμακας συστήματα εφαρμογών που έχουν ήδη ωριμάσει, βασίζονται σε συγκεκριμένα αρχιτεκτονικά πρότυπα και ακολουθούν τις βέλτιστες πρακτικές στην υλοποίησή τους. Έχουν ορίσει τις βασικές έννοιες και ροές για το πώς λειτουργούν, πώς επικοινωνούν με άλλα στοιχεία ή παρόχους υπηρεσιών και οποιαδήποτε νέα υλοποίηση θα ακολουθήσει πιθανώς τα ίδια πρότυπα και έννοιες, αφού η συνέπεια είναι μία από τις πιο αξιόλογες ποιότητες ενός συστήματος μεγάλης κλίμακας που είναι εύκολο να συντηρηθεί. Δυστυχώς, για ένα σύστημα που αναπτύσσεται για πολλά χρόνια, από πολλούς διαφορετικούς προγραμματιστές και πιθανόν να έχει αλλάξει πολλούς αρχιτέκτονες και τεχνικούς ηγέτες, η συνέπεια δεν είναι κάτι που μπορεί να διατηρηθεί εύκολα. Επίσης, κάποια συστήματα ξεκινούν μικρά, αλλά όταν έρθει η στιγμή, δεν μπορούν να κλιμακωθούν αρκετά και πρέπει να αναδομήσουν μεγάλο μέρος του κώδικα ή ακόμα και να ξαναχτίσουν το σύστημα από την αρχή προκειμένου να επεκταθούν. Μια λύση θα μπορούσε να είναι να βοηθήσουμε τους αρχιτέκτονες και τους προγραμματιστές να καθορίσουν ορισμένες σημαντικές αποφάσεις όταν ξεκινούν την υλοποίηση ενός νέου συστήματος και να τους βοηθήσουμε να τις τηρήσουν ή να τις επεκτείνουν με επεκτάσιμες λύσεις που μπορούν να συνδυαστούν με τις αρχικές τους αποφάσεις. Όπως πάντα, αν θέλουμε να επιβάλουμε κάποιους βασικούς κανόνες ώστε να επιτύχουμε ένα υψηλό επίπεδο συνέπειας, μια πλατφόρμα είναι ένα εξαιρετικό εργαλείο που θα μας βοηθήσει να πετύχουμε αυτόν τον στόχο. Φυσικά, γνωρίζουμε ότι σήμερα οι αρχικές απαιτήσεις ενός συστήματος μπορεί να αλλάζουν πολύ κατά τη διάρκεια του κύκλου ανάπτυξης, έτσι οποιαδήποτε μορφή περιορισμού, όπως κανόνες υλοποίησης που βοηθούν στη συνέπεια, ενδέχεται να μην ευνοεί την επεκτασιμότητα. Γι' αυτό πολλές μεγάλες εταιρείες αποφεύγουν τη χρήση οποιουδήποτε πλαισίου που επιβάλλει ένα συγκεκριμένο τρόπο εργασίας ή τεχνολογίας και επιλέγουν μόνο αυτά που είναι υψηλά επεκτάσιμα και καλά καθιερωμένα.
|
---|