Бір инстанцияда көп тұтынушыны қолдаушы бағдарламалық архитектура
Multitenancy
Жұмсақ құралдың көп пайдаланушылық архитектурасы – бір серверде бірнеше клиенттерге қызмет ету. Деректер қауіпсіздігі, конфигурация, басқару мүмкіндіктері бар.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Бірнеше пайдаланушыға қызмет ететін бағдарламалық жасақтаманың бір ғана инстанциясы
Single instance of a software that serves multiple tenants
Бағдарламалық жасақтаманың көп пайдаланушылығы – бұл бір серверде жұмыс істеп, бірнеше пайдаланушыға қызмет көрсететін бағдарламалық жасақтама архитектурасы. Мұндай жүйелер "ортақ" (жекеленген немесе оқшауланған емес) болып саналады. Пайдаланушы – бұл бағдарламалық жасақтама инстанциясына белгілі бір құқықтармен ортақ қол жеткізетін пайдаланушылар тобы. Көп пайдаланушылық архитектурасында бағдарламалық қамтамасыз ету әр пайдаланушыға оның деректері, конфигурациясы, пайдаланушыларды басқару, жеке функционалдығы және функционалды емес қасиеттерін қамтитын инстанцияның арнайы бөлігін ұсынады. Көп пайдаланушылық, әр түрлі пайдаланушылар үшін жеке бағдарламалық жасақтама инстанциялары жұмыс істейтін көп инстанциялық архитектурадан өзгеше. Кейбір сарапшылар көп пайдаланушылықты бұлттық есептеудің маңызды мүмкіндігі деп санайды.
Software multitenancy is a software architecture in which a single instance of software runs on a server and serves multiple tenants. Systems designed in such manner are "shared" (rather than
"dedicated" or "isolated"). A tenant is a group of users who share a common access with specific privileges to the software instance. With a multitenant architecture, a software application is designed to provide every tenant a dedicated share of the instance including its data, configuration, user management, tenant individual functionality and non functional properties. Multitenancy contrasts with multi instance architectures, where separate software instances operate on behalf of different tenants. Some commentators regard multitenancy as an important feature of cloud computing.
Виртуализациялаудан ажырату
Көп жалдаушылық ортада бірнеше клиент бірдей қосымшаны, бір операциялық жүйені, бір аппараттық құралды және дерек сақтаудың бірдей механизмін пайдаланады. Клиенттердің арасындағы ерекшелік қосымшаны жобалау кезінде қамтамасыз етіледі, осылайша клиенттер бір-бірінің деректерін бөліспейді немесе көре алмайды. Бұл, компоненттер өзгертіліп, әр клиенттік қосымша жеке виртуалды машинада жұмыс істейтіндей болып көрінетін виртуализациядан өзгеше.
In a multitenancy environment, multiple customers share the same application, running on the same operating system, on the same hardware, with the same data storage mechanism. The distinction between the customers is achieved during application design, thus customers do not share or see each other's data. Compare this with virtualization where components are transformed, enabling each customer application to appear to run on a separate virtual machine.
Бәсекелестікті саралау
Кейбір компаниялар көпжалдау принципін белсенді түрде насихатап, оны бәсекелестік артықшылығының көзі ретінде пайдаланады. Көпжалдау қолданысы күннен күнге артып келеді.
Some companies actively promote the principle of multitenancy and use it as a source of competitive differentiation. The use of multitenancy is increasing day by day.
Шығындарды үнемдеу
Көп жалдаушылылық IT ресурстарын бір операцияға біріктіру арқылы қол жеткізілетін негізгі масштабтық үнемдеуден асып түсетін шығындарды үнемдеуге мүмкіндік береді. Қолданба инстанциясы әдетте белгілі бір көлемде жадты және өңдеу қуатын қажет етеді, бұл көптеген клиенттерге таратылғанда, әсіресе клиенттер шағын болса, айтарлықтай болуы мүмкін. Көп жалдаушылылық осы шығындарды көптеген клиенттер арасына таратып азайтады. Бағдарламалық қамтамастың (мысалы, операциялық жүйелер мен деректер базасын басқару жүйелері) лицензиялық төлемдерінен қосымша үнемдеуге қол жеткізуге болады. Қарапайым тілмен айтқанда, егер сіз барлық нәрсені бір бағдарламалық қамтамастың бір инстанциясында іске асыра алсаңыз, сізге бір ғана лицензия сатып алу жеткілікті. Бірақ сұраныс артқан сайын бір инстанцияны кеңейту қиынға түсуі мүмкін, ал бір сервердегі инстанцияның өнімділігін арттыру үшін тек жылдам жабдық – жылдам процессорлар, көбірек жад және жылдам дискілік жүйелер сатып алу қажет, және әдетте бұл шығындар жүктеме бірнеше серверге, шамамен бірдей жиынтық сыйымдылығымен бөлінгеннен гөрі тез өседі. Сонымен қатар, көп жалдаушылы жүйелерді әзірлеу күрделірек, ал қауіпсіздік сынақтары да қатаңрақ болады, себебі бірнеше клиенттің деректері біріктіріледі.
Multitenancy allows for cost savings over and above the basic economies of scale achievable from consolidating IT resources into a single operation. An application instance usually incurs a certain amount of memory and processing overhead which can be substantial when multiplied by many customers, especially if the customers are small. Multitenancy reduces this overhead by spreading it over many customers. Further cost savings may come from licensing costs of the underlying software (such as operating systems and database management systems). Put crudely, if you can run everything on a single software instance, you only have to buy one software license. The cost savings can be eclipsed by the difficulty of scaling the single instance as demand grows increasing the performance of the instance on a single server can only be done by buying faster hardware, such as fast CPUs, more memory, and faster disk systems, and typically these costs grow faster than if the load was split between multiple servers with roughly the same aggregate capacity. In addition, development of multitenant systems is more complex, and security testing is more stringent owing to the fact that multiple customers' data is being commingled.
Деректерді жинақтау/деректерді өндіру
Сатушылар мен тәуелсіз бағдарламалық жасақтама жеткізушілердің көпжалдаушылықты пайдалануының ең тартымды себептерінің бірі – деректерді жинақтаудың туа біткен артықшылықтары. Әртүрлі дерекқор схемалары бар бірнеше дерек көздерінен деректерді жинаудың орнына, барлық клиенттерге қатысты барлық деректер бір дерекқор схемасында сақталады. Осылайша, клиенттер арасында сұраулар жасау, деректерді талдау және трендтерді анықтау әлдеқайда оңайырақ. Бұл себеп, мүмкін, артық дәрежеде мақұлданған, себебі көпжалдаушылықты пайдаланудың басты талаптарының бірі – қызмет провайдеріне клиенттің (жалдаушының) ақпаратына қол жеткізуге рұқсат бермеу қажеттілігі. Бұған қоса, операциялық дерекқорды деректерді тау-кенге арналған дерекқордан (әдетте, жүктеме ерекшеліктеріне байланысты) бөлу жиі кездеседі, бұл аргументті одан әрі әлсіретеді.
One of the most compelling reasons for vendors/ISVs to utilize multitenancy is for the inherent data aggregation benefits. Instead of collecting data from multiple data sources, with potentially different database schemas, all data for all customers is stored in a single database schema. Thus, running queries across customers, mining data, and looking for trends is much simpler. This reason is probably overhyped as one of the core multitenancy requirements is the need to prevent Service Provider access to customer (tenant) information. Further, it is common to separate the operational database from the mining database (usually because of different workload characteristics), thus weakening the argument even more.
Күрделілігі
Қосымша параметрлерді реттеудің күрделілігі және әр тұтынушыға арналған метадеректерді сақтау қажеттілігі салдарынан, көп тұтынушылы қолданбаларды жасауға көбірек күш жұмсау қажет. Векторлық деректер тізбегі, шифрленетін алгоритмдік инфрақұрылым және виртуалды басқару интерфейстері сияқты факторларды ескеру қажет.
Because of the additional customization complexity and the need to maintain per tenant metadata, multitenant applications require a larger development effort. Considerations such as vector based data sequencing, encryptable algorithm infrastructure, and virtualized control interfaces, must be taken into account.
Босатуды басқару
Көпжалдаулық шығаруды басқару процесін жеңілдетеді. Дәстүрлі шығаруды басқару процесінде кодты және дерекқоры өзгерістерін қамтитын пакеттер клиенттік жұмыс үстелдеріне және/немесе серверлік машиналарға таратылады; жалғыз инстанция жағдайында бұл әрбір клиент үшін бір серверлік машинаны білдіреді. Бұл пакеттерді әрбір жеке машинаға орнату қажет. Көпжалдаулық модельде пакет әдетте тек бір серверге орнатылады. Бұл шығаруды басқару процесін едәуір жеңілдетеді және масштаб клиенттер санына тәуелді болмайды. Сонымен қатар, көпжалдаулық жаңа нұсқаны қолданумен байланысты тәуекелдерді және салдарларды арттырады. Бір бағдарламалық жасақтама инстанциясы бірнеше жалдаушыға қызмет көрсеткендіктен, осы инстанцияны жаңарту барлық жалдаушылар үшін тоқтау уақытын тудыруы мүмкін, тіпті жаңарту тек бір жалдаушы үшін сұралған және пайдалы болса да. Сонымен қатар, жаңа нұсқаны қолдану нәтижесінде туындаған кейбір қателер мен мәселелер басқа жалдаушылардың қолданбаның жекелендірілген көрінісінде көрінуі мүмкін. Мүмкін болатын тоқтау уақытының салдарынан, шығаруды қолдану уақыты бірнеше жалдаушының уақытты пайдалану кестесіне байланысты шектелуі мүмкін.
Multitenancy simplifies the release management process. In a traditional release management process, packages containing code and database changes are distributed to client desktop and/or server machines; in the single instance case, this would be one server machine per customer. These packages then have to be installed on each individual machine. With the multitenant model, the package typically only needs to be installed on a single server. This greatly simplifies the release management process, and the scale is no longer dependent on the number of customers. At the same time, multitenancy increases the risks and impacts inherent in applying a new release version. As there is a single software instance serving multiple tenants, an update on this instance may cause downtime for all tenants even if the update is requested and useful for only one tenant. Also, some bugs and issues resulted from applying the new release could manifest in other tenants' personalized view of the application. Because of possible downtime, the moment of applying the release may be restricted depending on time usage schedule of more than one tenant.
Өзіндікке бейімдеу
Көп пайдаланушылы қолданбалар әдетте әрбір мақсатты ұйымның қажеттіліктерін қанағаттандыру үшін жоғары деңгейде бейімделуді қамтамасыз етуі керек. Бейімделу әдетте келесі аспектілерді қамтиды:
Multitenant applications are typically required to provide a high degree of customization to support each target organization's needs. Customization typically includes the following aspects:
Брендтік стиль: әр ұйымға қосымшаның сыртқы түрін және сезімін өздерінің корпоративтік брендіне сәйкес өзгертуге мүмкіндік беру (көбінесе ерекше "дизайн" деп аталады). Жұмыс процесі: көптеген әлеуетті клиенттер пайдалана алатын әртүрлі жұмыс процесін қолдау. Дерек моделінің кеңейтілуі: клиенттерге қосымша басқаратын дерек элементтерін өздерінің нақты қажеттіліктеріне сәйкес бейімдеу мүмкіндігін беру үшін кеңейтілген дерек моделін қолдау. Кіруді басқару: әрбір клиент ұйымына әрбір пайдаланушы үшін кіру құқықтары мен шектеулерді жеке-жеке бейімдеуге мүмкіндік беру.
Branding: allowing each organization to customize the look and feel of the application to match their corporate branding (often referred to as a distinct "skin"). Workflow: accommodating differences in workflow to be used by a wide range of potential customers. Extensions to the data model: supporting an extensible data model to give customers the ability to customize the data elements managed by the application to meet their specific needs. Access control: letting each client organization independently customize access rights and restrictions for each user.
Қызметтің сапасы
Көп пайдаланушы қолданбалары бірнеше пайдаланушы арасында жеткілікті қауіпсіздік, тұрақтылық және өнімділік қамтамасыз етуі керек, және көп даналы қолданбалар жағдайында бұл, қолданбаның төменгі қабаттары арқылы жүзеге асырылады.
Multitenant applications are expected to provide adequate security, robustness and performance between multiple tenants which is provided by the layers below the application in case of multi instance applications.
Виртуализациялау
Көп пайдаланушылылық үшін қосымшаларды қайта жобалау құны жоғары болуы мүмкін, әсіресе өнімдерін жеке пайдаланушылық үшін орнатуға мүмкіндік беретін бағдарламалық қамтамасыз ету сатушылары үшін. Олар барлық салдарлы шығындармен екі бөлек өнімді қолдауға мәжбүр болады. Көп пайдаланушылылыққа қол жеткізудің, архитектураны едәуір өзгерту қажеттілігін жоятын, күшейіп келе жатқан мүмкіндігі – бір немесе бірнеше серверде қосымшаның бірнеше оқшауланған даналарын орналастыру үшін виртуализация технологиясын пайдалану. Шындығында, қосымшалар виртуалды құрылғылар ретінде қайта жинақталғанда, бірдей құрылғы бейнесі ISV хостингінде, орнату орындарында немесе сенімді үшінші тараптарда орналастырылуы мүмкін, тіпті уақыт өте келе бір орналастыру орнынан екіншісіне көшірілуі де мүмкін.
The costs of redesigning applications for multitenancy can be significant, especially for software vendors who continue to offer an on premises single tenant version of their product. They end up being forced to support two distinct products with all the resulting costs. An increasingly viable alternative route to multitenancy that eliminates the need for significant architectural change is to use virtualization technology to host multiple isolated instances of an application on one or more servers. Indeed, when applications are repackaged as virtual appliances the same appliance image can be deployed in ISV hosted, on premises or trusted third party locations and even migrated from one deployment site to another over time.