Σχετικά με την πολυμίσθωση

Δυστυχώς, αυτός ο όρος δεν έχει καλό ανάλογο στη ρωσική γλώσσα. Η Βικιπαίδεια δίνει μετάφραση "πολλαπλή μίσθωση, πολλαπλή μίσθωση." Αυτό μερικές φορές ονομάζεται "πολλαπλή ιδιοκτησία". Αυτοί οι όροι μπορεί να είναι κάπως συγκεχυμένοι, καθώς το θέμα δεν σχετίζεται εγγενώς ούτε με την ενοικίαση ούτε με την ιδιοκτησία. Αυτό είναι ζήτημα αρχιτεκτονικής λογισμικού και οργάνωσης της λειτουργίας του. Και το τελευταίο δεν είναι λιγότερο σημαντικό.

Αρχίσαμε να διαμορφώνουμε την κατανόησή μας για την πολυμίσθωση την ίδια στιγμή που αρχίσαμε να σχεδιάζουμε μια προσέγγιση στο μοντέλο εργασίας του cloud (υπηρεσίας) στο 1C:Enterprise. Αυτό ήταν πριν από αρκετά χρόνια. Και από τότε η κατανόησή μας διευρύνεται συνεχώς. Ανακαλύπτουμε συνεχώς όλο και περισσότερες νέες πτυχές αυτού του θέματος (υπέρ, μειονεκτήματα, δυσκολίες, χαρακτηριστικά κ.λπ.).

Σχετικά με την πολυμίσθωση

Μερικές φορές οι προγραμματιστές κατανοούν την πολυμίσθωση ως ένα πολύ απλό θέμα: "για να αποθηκεύονται τα δεδομένα πολλών οργανισμών σε μια βάση δεδομένων, πρέπει να προσθέσετε μια στήλη με το αναγνωριστικό οργανισμού σε όλους τους πίνακες και να ορίσετε ένα φίλτρο σε αυτήν." Φυσικά κι εμείς ξεκινήσαμε τη μελέτη του θέματος από αυτή τη στιγμή. Αλλά γρήγορα κατάλαβαν ότι αυτό ήταν μόνο ένα ξεκαθάρισμα (επίσης, παρεμπιπτόντως, όχι εύκολο). Σε γενικές γραμμές, αυτή είναι μια «ολόκληρη χώρα».

Η βασική ιδέα της πολυδυναμικότητας μπορεί να περιγραφεί κάπως έτσι. Μια τυπική εφαρμογή είναι ένα εξοχικό σπίτι που έχει σχεδιαστεί για να φιλοξενεί μια οικογένεια, η οποία χρησιμοποιεί τις υποδομές της (τοίχοι, στέγη, παροχή νερού, θέρμανση κ.λπ.). Μια εφαρμογή πολυμίσθωσης είναι μια πολυκατοικία. Σε αυτό, κάθε οικογένεια χρησιμοποιεί την ίδια υποδομή, αλλά η ίδια η υποδομή εφαρμόζεται για ολόκληρο το σπίτι.

Είναι καλή ή κακή η προσέγγιση της πολυμίσθωσης; Μπορείτε να βρείτε πολύ διαφορετικές απόψεις για αυτό. Φαίνεται να μην υπάρχει καθόλου «καλό ή κακό». Πρέπει να συγκρίνετε τα πλεονεκτήματα και τα μειονεκτήματα στο πλαίσιο των συγκεκριμένων εργασιών που επιλύονται. Αλλά αυτό είναι ένα ξεχωριστό θέμα...

Με την απλούστερη έννοια, ο στόχος της πολυμίσθωσης είναι να μειώσει το κόστος συντήρησης μιας εφαρμογής μέσω της «κοινωνικοποίησης» του κόστους υποδομής. Αυτή είναι η ίδια κίνηση με τη μείωση του κόστους μιας εφαρμογής χρησιμοποιώντας μια λύση παραγωγής (ενδεχομένως με προσαρμογή και τροποποίηση), αντί να την γράφετε «κατόπιν παραγγελίας». Μόνο στη μία περίπτωση κοινωνικοποιείται η ανάπτυξη και στην άλλη - η εκμετάλλευση.

Επιπλέον, επαναλαμβάνουμε, δεν υπάρχει άμεση σύνδεση με τη μέθοδο πώλησης. Η αρχιτεκτονική πολυμισθώσεων μπορεί επίσης να χρησιμοποιηθεί σε μια εταιρική ή τμηματική υποδομή πληροφορικής για την αυτοματοποίηση μεγάλου αριθμού παρόμοιων υποκαταστημάτων και εταιρειών χαρτοφυλακίου.

Μπορούμε να πούμε ότι η πολυμίσθωση δεν είναι απλώς θέμα οργάνωσης της αποθήκευσης δεδομένων. Αυτό είναι ένα μοντέλο του πώς λειτουργεί η εφαρμογή στο σύνολό της (συμπεριλαμβανομένου ενός σημαντικού μέρους της αρχιτεκτονικής της, του μοντέλου ανάπτυξής της και της οργάνωσης συντήρησής της).

Το πιο δύσκολο και ενδιαφέρον πράγμα σχετικά με το μοντέλο πολυμίσθωσης, μας φαίνεται, είναι ότι η ουσία της εφαρμογής «διαιρείται». Μέρος της λειτουργικότητας λειτουργεί με συγκεκριμένες περιοχές δεδομένων (διαμερίσματα) και «δεν ενδιαφέρεται» για το γεγονός ότι υπάρχουν κάτοικοι σε άλλα διαμερίσματα. Και κάποιοι αντιλαμβάνονται το σπίτι ως σύνολο και δουλεύουν για όλους τους κατοίκους ταυτόχρονα. Ταυτόχρονα, ο τελευταίος δεν μπορεί να αγνοήσει το γεγονός ότι πρόκειται τελικά για ξεχωριστά διαμερίσματα και είναι απαραίτητο να διασφαλιστεί το απαραίτητο επίπεδο ευαισθησίας και ασφάλειας.

Στο 1C:Enterprise, το μοντέλο πολυμίσθωσης εφαρμόζεται σε επίπεδο αρκετών τεχνολογιών. Αυτοί είναι οι μηχανισμοί της πλατφόρμας 1C:Enterprise, οι μηχανισμοί του1C: Τεχνολογία για δημοσίευση λύσεων 1cFresh"Και"1C:Τεχνολογία ανάπτυξης λύσεων 1cFresh», μηχανισμοί BSP (βιβλιοθήκες τυπικών υποσυστημάτων).

Κάθε ένα από αυτά τα στοιχεία συμβάλλει στην κατασκευή της συνολικής υποδομής μιας πολυκατοικίας. Γιατί αυτό εφαρμόζεται σε πολλές τεχνολογίες και όχι σε μία, για παράδειγμα, σε μια πλατφόρμα; Πρώτα απ 'όλα, επειδή ορισμένοι από τους μηχανισμούς, κατά τη γνώμη μας, είναι αρκετά κατάλληλοι για τροποποίηση για μια συγκεκριμένη επιλογή ανάπτυξης. Αλλά γενικά, αυτό είναι ένα δύσκολο ερώτημα και βρισκόμαστε συνεχώς αντιμέτωποι με μια επιλογή - σε ποιο επίπεδο είναι καλύτερο να εφαρμόσουμε αυτή ή εκείνη την πτυχή της πολυμίσθωσης.

Προφανώς, το βασικό μέρος των μηχανισμών έπρεπε να εφαρμοστεί στην πλατφόρμα. Λοιπόν, για παράδειγμα, ο πραγματικός διαχωρισμός δεδομένων. Αυτό είναι όπου οι άνθρωποι συνήθως αρχίζουν να μιλούν για πολυμίσθωση. Αλλά τελικά, το μοντέλο πολυμίσθωσης «ταξίδεψε» μέσα από ένα σημαντικό μέρος των μηχανισμών της πλατφόρμας και απαιτούσε την τελειοποίησή τους, και σε ορισμένες περιπτώσεις, επανεξέταση.

Σε επίπεδο πλατφόρμας εφαρμόσαμε ακριβώς τους βασικούς μηχανισμούς. Σας επιτρέπουν να δημιουργείτε εφαρμογές που εκτελούνται σε ένα μοντέλο πολυμίσθωσης. Αλλά για να «ζουν και να εργάζονται» οι εφαρμογές σε ένα τέτοιο μοντέλο, πρέπει να έχετε ένα σύστημα διαχείρισης των «δραστηριοτήτων ζωής» τους. Οι τεχνολογίες 1cFresh και ένα ενοποιημένο επίπεδο επιχειρηματικής λογικής σε επίπεδο BSP είναι υπεύθυνες για αυτό. Ακριβώς όπως σε μια πολυκατοικία η υποδομή παρέχει στους κατοίκους όλα όσα χρειάζονται, έτσι και οι τεχνολογίες 1cFresh παρέχουν όλα όσα χρειάζονται για εφαρμογές που εκτελούνται σε ένα μοντέλο πολυμίσθωσης. Και για να μπορούν οι εφαρμογές να αλληλεπιδρούν με αυτήν την υποδομή (χωρίς σημαντικές τροποποιήσεις), τοποθετούνται σε αυτές οι αντίστοιχες «συνδέσεις» με τη μορφή υποσυστημάτων BSP.

Από την άποψη των μηχανισμών πλατφόρμας, είναι εύκολο να παρατηρήσουμε ότι καθώς αποκτούμε εμπειρία και αναπτύσσουμε την περίπτωση χρήσης cloud "1C:Enterprise", επεκτείνουμε τη σύνθεση των μηχανισμών που εμπλέκονται σε αυτήν την αρχιτεκτονική. Ας δώσουμε ένα παράδειγμα. Στο μοντέλο πολυμίσθωσης, οι ρόλοι των συμμετεχόντων στις υπηρεσίες εφαρμογής αλλάζουν σημαντικά. Ο ρόλος (επίπεδο ευθύνης) των υπευθύνων για τη λειτουργία εφαρμογών αυξάνεται σημαντικά. Έγινε απαραίτητο να έχουν πιο ισχυρά εργαλεία ελέγχου εφαρμογών. Επειδή οι χρήστες της εφαρμογής (κάτοικοι) εμπιστεύονται πρώτα από όλα τον πάροχο με τον οποίο συνεργάζονται. Για να γίνει αυτό, εφαρμόσαμε ένα νέο μηχανισμός προφίλ ασφαλείας. Αυτός ο μηχανισμός επιτρέπει στους διαχειριστές παρόχων να περιορίζουν την ελευθερία των προγραμματιστών εφαρμογών στο απαιτούμενο επίπεδο ασφάλειας - στην ουσία, να απομονώνουν τη λειτουργία της εφαρμογής για κάθε μισθωτή σε ένα συγκεκριμένο sandbox.

Δεν είναι λιγότερο ενδιαφέρουσα η αρχιτεκτονική για τη διαχείριση εφαρμογών που λειτουργούν σε λειτουργία πολλαπλής μίσθωσης (αυτό που εφαρμόζεται στις τεχνολογίες 1cFresh και BSP). Εδώ, σε σύγκριση με το συμβατικό μοντέλο ανάπτυξης, οι απαιτήσεις για αυτοματοποίηση των διαδικασιών διαχείρισης είναι σημαντικά αυξημένες. Υπάρχουν δεκάδες τέτοιες διαδικασίες: δημιουργία νέων περιοχών δεδομένων («διαμερίσματα»), ενημέρωση εφαρμογών, ενημέρωση κανονιστικών πληροφοριών, αντίγραφα ασφαλείας κ.λπ. Και, φυσικά, οι απαιτήσεις για το επίπεδο αξιοπιστίας και διαθεσιμότητας αυξάνονται. Για παράδειγμα, για να διασφαλίσουμε αξιόπιστη αλληλεπίδραση μεταξύ των εφαρμογών και των στοιχείων του συστήματος ελέγχου, εφαρμόσαμε τεχνολογία συστήματος ασύγχρονων κλήσεων με εγγυημένη παράδοση.

Ένα πολύ λεπτό σημείο είναι ο τρόπος κοινωνικοποίησης δεδομένων και διαδικασιών. Φαίνεται απλό (αν φαίνεται σε κάποιον) μόνο με την πρώτη ματιά. Η μεγαλύτερη πρόκληση είναι η ισορροπία μεταξύ της συγκέντρωσης δεδομένων και διαδικασιών και της αποκέντρωσης. Από τη μία πλευρά, η συγκέντρωση σάς επιτρέπει να μειώσετε το κόστος (χώρος στο δίσκο, πόροι επεξεργαστή, προσπάθειες διαχειριστή...). Από την άλλη, περιορίζει την ελευθερία των «ενοικιαστών». Αυτή είναι ακριβώς μια από τις στιγμές «διχασμού» της εφαρμογής, όταν ο προγραμματιστής πρέπει να σκεφτεί ταυτόχρονα την εφαρμογή με τη στενή έννοια (εξυπηρέτηση ενός «διαμερίσματος») και με την ευρεία έννοια (εξυπηρέτηση όλων των «ενοικιαστών» ταυτόχρονα) .

Ως παράδειγμα ενός τέτοιου «διλήμματος», μπορεί κανείς να αναφέρει ρυθμιστικές πληροφορίες και πληροφορίες αναφοράς. Φυσικά, υπάρχει μεγάλος πειρασμός να γίνει κοινό σε όλους τους «ενοικιαστές» του σπιτιού. Αυτό σας επιτρέπει να το αποθηκεύσετε σε ένα αντίγραφο και να το ενημερώσετε για όλους ταυτόχρονα. Συμβαίνει όμως κάποιοι κάτοικοι να χρειάζονται συγκεκριμένες αλλαγές. Παραδόξως, στην πράξη αυτό συμβαίνει, ακόμη και για πληροφορίες που προσδιορίζονται από ρυθμιστικές αρχές (κυβερνητικά όργανα). Αυτό αποδεικνύεται μια δύσκολη ερώτηση: να κοινωνικοποιηθεί ή να μην κοινωνικοποιηθεί; Είναι δελεαστικό, φυσικά, να κάνουμε τις πληροφορίες γενικές για όλους και ιδιωτικές για όσους τις θέλουν. Και αυτό ήδη οδηγεί σε μια πολύ δύσκολη εφαρμογή. Αλλά δουλεύουμε πάνω σε αυτό...

Ένα άλλο παράδειγμα είναι ο σχεδιασμός της υλοποίησης τακτικών διαδικασιών (που εκτελούνται βάσει χρονοδιαγράμματος, ξεκινούν από το σύστημα ελέγχου κ.λπ.). Από τη μία πλευρά, μπορούν να υλοποιηθούν για κάθε περιοχή δεδομένων ξεχωριστά. Είναι πιο εύκολο και πιο βολικό. Αλλά, από την άλλη πλευρά, μια τέτοια λεπτή κοκκοποίηση δημιουργεί μεγάλο φορτίο στο σύστημα. Για να μειώσετε το φορτίο, πρέπει να εφαρμόσετε κοινωνικοποιημένες διαδικασίες. Απαιτούν όμως πιο προσεκτική μελέτη.

Φυσικά, αυτό εγείρει ένα πολύ σημαντικό ερώτημα. Πώς μπορούν οι προγραμματιστές εφαρμογών να διασφαλίσουν την πολυμίσθωση; Τι χρειάζεται να κάνουν για αυτό; Φυσικά, προσπαθούμε να διασφαλίσουμε ότι το βάρος των ζητημάτων τεχνολογίας και υποδομής πέφτει όσο το δυνατόν περισσότερο στους ώμους της παρεχόμενης τεχνολογίας και ο προγραμματιστής της εφαρμογής σκέφτεται μόνο με όρους επιχειρηματικής λογικής. Όμως, όπως συμβαίνει και με άλλα σημαντικά αρχιτεκτονικά ζητήματα, οι προγραμματιστές εφαρμογών πρέπει να έχουν κάποια κατανόηση της εργασίας στο μοντέλο πολυμίσθωσης και θα απαιτηθεί κάποια προσπάθεια κατά την ανάπτυξη εφαρμογών. Γιατί; Γιατί υπάρχουν σημεία που η τεχνολογία δεν μπορεί να προσφέρει αυτόματα χωρίς να λαμβάνει υπόψη τη σημασιολογία των δεδομένων. Για παράδειγμα, ο ίδιος ορισμός των ορίων της κοινωνικοποίησης της πληροφορίας. Αλλά προσπαθούμε να κρατήσουμε αυτές τις δυσκολίες μικρές. Υπάρχουν ήδη παραδείγματα υλοποίησης τέτοιων εφαρμογών.

Ένα σημαντικό σημείο στο πλαίσιο της εφαρμογής της πολυμίσθωσης στο 1C:Enterprise είναι ότι δημιουργούμε ένα υβριδικό μοντέλο στο οποίο μια εφαρμογή μπορεί να λειτουργεί τόσο σε λειτουργία πολυμίσθωσης όσο και σε κανονική λειτουργία. Αυτό είναι ένα πολύ δύσκολο εγχείρημα και αντικείμενο ξεχωριστής συζήτησης.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο