{"id":55231,"date":"2020-01-16T00:00:00","date_gmt":"2020-01-15T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/pro-multitenancy"},"modified":"2020-02-18T14:03:19","modified_gmt":"2020-02-18T11:03:19","slug":"pro-multitenancy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pro-multitenancy","title":{"rendered":"O multitenancy","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Niestety, ten termin nie ma dobrego polskiego odpowiednika. \u201eWikipedia\u201d podaje <noindex><a rel=\"nofollow\" href=\"http:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D1%83%D0%BB%D1%8C%D1%82%D0%B8%D0%B0%D1%80%D0%B5%D0%BD%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D1%8C\">t\u0142umaczenie<\/a><\/noindex> \u201ewielokrotne wynajmowanie, wielozarz\u0105dzanie\u201d. Czasami nazywa si\u0119 to \u201ewieloma posiadaniami\u201d. Te terminy mog\u0105 by\u0107 nieco myl\u0105ce, poniewa\u017c przedmiot nie jest zwi\u0105zany zasadniczo ani z wynajmem, ani z posiadaniem. To kwestia samej architektury oprogramowania i organizacji jego eksploatacji. I to ostatnie jest r\u00f3wnie wa\u017cne. <\/p>\n<p>Zacz\u0119li\u015bmy formowa\u0107 nasze zrozumienie multitenancy r\u00f3wnocze\u015bnie z projektowaniem podej\u015bcia do chmurowego (us\u0142ugowego) modelu dzia\u0142ania \u201e1C:Enterprise\u201d. By\u0142o to kilka lat temu. Od tego czasu nasze zrozumienie ci\u0105gle si\u0119 rozszerza. Nieustannie odkrywamy nowe aspekty tego tematu (plusy, minusy, trudno\u015bci, cechy itp.). <\/p>\n<p><img decoding=\"async\" alt=\"O multitenancy\" src=\"\/wp-content\/uploads\/2020\/01\/a14e60822b948ecd079722ed828f853f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nCzasami deweloperzy rozumiej\u0105 przez multitenancy do\u015b\u0107 prost\u0105 koncepcj\u0119: \u201eaby dane kilku organizacji by\u0142y przechowywane w jednej bazie, trzeba doda\u0107 do wszystkich tabel kolumn\u0119 z identyfikatorem organizacji i ustawi\u0107 filtr wed\u0142ug niej\u201d. My r\u00f3wnie\u017c, oczywi\u015bcie, rozpocz\u0119li\u015bmy nasz\u0105 prac\u0119 nad tym zagadnieniem od tego momentu. Jednak do\u015b\u0107 szybko zrozumieli\u015bmy, \u017ce to tylko jedna p\u0142aszczyzna (nawiasem m\u00f3wi\u0105c, r\u00f3wnie\u017c trudna). A w rzeczywisto\u015bci to \u201eca\u0142y \u015bwiat\u201d. <\/p>\n<p>G\u0142\u00f3wn\u0105 ide\u0119 multitenancy mo\u017cna opisa\u0107 mniej wi\u0119cej tak. Zwyk\u0142a aplikacja to dom jednorodzinny, przeznaczony do zamieszkania przez jedn\u0105 rodzin\u0119, kt\u00f3ra korzysta z jego infrastruktury (\u015bciany, dach, wodoci\u0105g, ogrzewanie itd.). A aplikacja multitenancy to wielomieszkaniowy budynek. W nim ka\u017cda rodzina korzysta z tego samego zestawu infrastruktury, ale sama infrastruktura jest zrealizowana dla ca\u0142ego budynku. <\/p>\n<p>Czy podej\u015bcie multitenancy jest dobre czy z\u0142e? Mo\u017cna znale\u017a\u0107 bardzo r\u00f3\u017cne opinie na ten temat. Wydaje si\u0119, \u017ce nie ma poj\u0119cia \u201edobrego lub z\u0142ego\u201d w og\u00f3le. Nale\u017cy por\u00f3wnywa\u0107 plusy i minusy w kontek\u015bcie konkretnych rozwi\u0105zywanych zada\u0144. Ale to osobny temat\u2026 <\/p>\n<p>W najprostszej definicji celem multitenancy jest obni\u017cenie koszt\u00f3w utrzymania aplikacji poprzez \u201eupowszechnienie\u201d koszt\u00f3w infrastruktury. To ruch podobny do obni\u017cenia ceny aplikacji poprzez zastosowanie rozwi\u0105zania seryjnego (mo\u017cliwe z dostosowaniem i przer\u00f3bk\u0105), a nie pisania na \u201ezam\u00f3wienie\u201d. Tylko w jednym przypadku upowszechnia si\u0119 rozw\u00f3j, a w drugim \u2013 eksploatacj\u0119. <\/p>\n<p>Co wi\u0119cej, powtarzamy, \u017ce nie ma tu bezpo\u015bredniego zwi\u0105zku z metod\u0105 sprzeda\u017cy. Architektura multitenancy mo\u017ce by\u0107 z powodzeniem stosowana r\u00f3wnie\u017c w korporacyjnej lub rz\u0105dowej infrastrukturze IT w celu automatyzacji du\u017cej liczby podobnych oddzia\u0142\u00f3w czy przedsi\u0119biorstw holdingowych. <\/p>\n<p>Mo\u017cna powiedzie\u0107, \u017ce multitenancy to nie tylko kwestia organizacji przechowywania danych. To model dzia\u0142ania aplikacji jako ca\u0142o\u015bci (w tym znaczna cz\u0119\u015b\u0107 aspekt\u00f3w jej architektury, model wdro\u017cenia i organizacja serwisowania). <\/p>\n<p>Najbardziej skomplikowane i interesuj\u0105ce w modelu multitenancy, jak nam si\u0119 wydaje, jest to, \u017ce istota aplikacji \"dzieli si\u0119\". Cz\u0119\u015b\u0107 funkcjonalno\u015bci dzia\u0142a z konkretnymi obszarami danych (mieszkaniami) i \"nie interesuje si\u0119\" tym, co dzieje si\u0119 z mieszka\u0144cami w innych mieszkaniach. Z kolei cz\u0119\u015b\u0107 postrzega dom jako ca\u0142o\u015b\u0107 i dzia\u0142a jednocze\u015bnie dla wszystkich mieszka\u0144c\u00f3w. Przy tym ostatnia nie mo\u017ce abstrahowa\u0107 od faktu, \u017ce jednak s\u0105 to osobne mieszkania i nale\u017cy zapewni\u0107 odpowiedni poziom granularno\u015bci i bezpiecze\u0144stwa. <\/p>\n<p>W \"1C:Przedsi\u0119biorstwie\" model multitenancy jest realizowany na poziomie kilku technologii. To mechanizmy platformy \"1C:Przedsi\u0119biorstwa\", mechanizmy<noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=16065\">1C:Technologia publikacji rozwi\u0105za\u0144 1cFresh<\/a><\/noindex>\u201d i \u201e<noindex><a rel=\"nofollow\" href=\"http:\/\/www.1c.ru\/news\/info.jsp?id=15382\">1C:Technologia opracowywania rozwi\u0105za\u0144 1cFresh<\/a><\/noindex>\", mechanizmy <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/libraries\/ssl\/index.htm\">BSP<\/a><\/noindex> (biblioteki standardowych podsystem\u00f3w). <\/p>\n<p>Ka\u017cdy z tych element\u00f3w wnosi sw\u00f3j wk\u0142ad w budow\u0119 wsp\u00f3lnej infrastruktury wielomieszkaniowego domu. Dlaczego jest to realizowane w kilku technologiach, a nie w jednej, na przyk\u0142ad w platformie? Przede wszystkim dlatego, \u017ce cz\u0119\u015b\u0107 mechanizm\u00f3w, naszym zdaniem, w pe\u0142ni zas\u0142uguje na modyfikacj\u0119 przy konkretnym wariancie wdro\u017cenia. Jednak w og\u00f3lnym zarysie to nie jest prosty temat, i ci\u0105gle stajemy przed wyborem \u2013 na jakim poziomie najlepiej realizowa\u0107 dany aspekt multitenancy. <\/p>\n<p>Oczywi\u015bcie zasadnicz\u0105 cz\u0119\u015b\u0107 mechanizm\u00f3w trzeba by\u0142o zrealizowa\u0107 w platformie. Na przyk\u0142ad, to w\u0142asne podzia\u0142 danych. To, od czego zwykle zaczyna si\u0119 rozmow\u0119 o multitenancy. Ale ostatecznie model multitenancy \"przejecha\u0142 si\u0119\" po istotnej cz\u0119\u015bci mechanizm\u00f3w platformy i wymaga\u0142 ich poprawy, a w niekt\u00f3rych przypadkach nawet przemy\u015blenia na nowo. <\/p>\n<p>Na poziomie platformy wdro\u017cyli\u015bmy podstawowe mechanizmy. Umo\u017cliwiaj\u0105 one tworzenie aplikacji dzia\u0142aj\u0105cych w modelu wielodost\u0119pnym (multitenancy). Aby jednak aplikacje mog\u0142y \"\u017cy\u0107 i dzia\u0142a\u0107\" w takim modelu, potrzebny jest system zarz\u0105dzania ich \"\u017cywotno\u015bci\u0105\". Za to odpowiadaj\u0105 technologie 1cFresh oraz zharmonizowana warstwa logiki biznesowej na poziomie BSP. Tak jak w budynku wielorodzinnym infrastruktura zapewnia mieszka\u0144com wszystko, co niezb\u0119dne, tak technologie 1cFresh zapewniaj\u0105 aplikacjom, dzia\u0142aj\u0105cym w modelu wielodost\u0119pnym, to, co potrzebne. Aby aplikacje mog\u0142y wsp\u00f3\u0142dzia\u0142a\u0107 z t\u0105 infrastruktur\u0105 (bez znacznych modyfikacji), wprowadza si\u0119 odpowiednie \u201einterfejsy\u201d w postaci system\u00f3w BSP. <\/p>\n<p>Z punktu widzenia mechanizm\u00f3w platformy \u0142atwo zauwa\u017cy\u0107, \u017ce w miar\u0119 zdobywania do\u015bwiadczenia i rozwoju chmurowej wersji u\u017cycia \u201e1C:Przedsi\u0119biorstwo\u201d rozszerzamy zestaw mechanizm\u00f3w zaanga\u017cowanych w t\u0119 architektur\u0119. Podamy jeden przyk\u0142ad. W modelu wielodost\u0119pnym istotnie zmienia si\u0119 rozk\u0142ad r\u00f3l uczestnik\u00f3w obs\u0142ugi aplikacji. Zdecydowanie zwi\u0119ksza si\u0119 rola (poziom odpowiedzialno\u015bci) tych, kt\u00f3rzy odpowiadaj\u0105 za eksploatacj\u0119 aplikacji. Zacz\u0119li oni potrzebowa\u0107 bardziej zaawansowanych narz\u0119dzi do kontroli aplikacji. Poniewa\u017c u\u017cytkownicy aplikacji (mieszka\u0144cy) przede wszystkim ufaj\u0105 dostawcy, z kt\u00f3rym wsp\u00f3\u0142pracuj\u0105. W tym celu zrealizowali\u015bmy w wersji 8.3 nowy <noindex><a rel=\"nofollow\" href=\"https:\/\/wonderland.v8.1c.ru\/blog\/profili-bezopasnosti\/?sphrase_id=12972\">mechanizm profili bezpiecze\u0144stwa<\/a><\/noindex>. Ten mechanizm umo\u017cliwia administratorom dostawcy ograniczenie swobody tw\u00f3rc\u00f3w aplikacji do wymaganego poziomu bezpiecze\u0144stwa \u2013 w praktyce izoluje prac\u0119 aplikacji dla ka\u017cdego mieszka\u0144ca w okre\u015blonych ramach \u201epiaskownicy\u201d (sandbox). <\/p>\n<p>Nie mniej interesuj\u0105ca jest architektura zarz\u0105dzania aplikacjami dzia\u0142aj\u0105cymi w trybie multitenancy (to, co jest realizowane w technologiach 1cFresh i BSP). W por\u00f3wnaniu do tradycyjnego modelu wdra\u017cania, wymagania dotycz\u0105ce automatyzacji proces\u00f3w zarz\u0105dzania s\u0105 tutaj znacznie wy\u017csze. Takich proces\u00f3w jest dziesi\u0105tki: tworzenie nowych obszar\u00f3w danych (\u201emieszka\u0144\u201d), aktualizacja aplikacji, aktualizacja informacji normatywnych, tworzenie kopii zapasowych itd. Oczywi\u015bcie wzrastaj\u0105 tak\u017ce wymagania dotycz\u0105ce niezawodno\u015bci i dost\u0119pno\u015bci. Na przyk\u0142ad, aby zapewni\u0107 niezawodne interakcje aplikacji z sk\u0142adnikami systemu zarz\u0105dzania, wdro\u017cyli\u015bmy technologi\u0119 asynchronicznego wywo\u0142ania z gwarantowan\u0105 dostaw\u0105. <\/p>\n<p>Bardzo delikatnym aspektem jest spos\u00f3b wsp\u00f3\u0142dzielenia danych i proces\u00f3w. Na pierwszy rzut oka wydaje si\u0119 to proste (je\u015bli komu\u015b si\u0119 tak wydaje). Najwi\u0119ksz\u0105 trudno\u015bci\u0105 jest znalezienie r\u00f3wnowagi mi\u0119dzy centralizacj\u0105 danych i proces\u00f3w a decentralizacj\u0105. Z jednej strony centralizacja pozwala zmniejszy\u0107 koszty (przestrzeni dyskowej, zasob\u00f3w procesora, wysi\u0142k\u00f3w administrator\u00f3w\u2026). Z drugiej strony ogranicza swobod\u0119 \u201emieszka\u0144c\u00f3w\u201d. To w\u0142a\u015bnie jeden z aspekt\u00f3w \u201erozdzielenia\u201d aplikacji, kiedy deweloper musi my\u015ble\u0107 jednocze\u015bnie o aplikacji w w\u0105skim sensie (obs\u0142uguj\u0105cej jedno \u201emieszkanie\u201d) i w szerokim sensie (obs\u0142uguj\u0105cej od razu wszystkich \u201emieszka\u0144c\u00f3w\u201d). <\/p>\n<p>Przyk\u0142adem takiej \u201edylematy\u201d mo\u017ce by\u0107 informacja normatywna. Oczywi\u015bcie, wielka pokusa, aby uczyni\u0107 j\u0105 wsp\u00f3ln\u0105 dla wszystkich \u201emieszka\u0144c\u00f3w\u201d budynku. Pozwala to na przechowywanie jej w jednym egzemplarzu oraz aktualizacj\u0119 jednocze\u015bnie dla wszystkich. Ale zdarza si\u0119, \u017ce jakiemu\u015b mieszka\u0144cowi potrzebne s\u0105 specyficzne zmiany. Nie jest to takie dziwne \u2014 w praktyce zdarza si\u0119 to nawet w przypadku informacji, kt\u00f3re zosta\u0142y specyfikowane przez regulator\u00f3w (organy rz\u0105dowe). Powstaje wi\u0119c nie\u0142atwe pytanie: wsp\u00f3\u0142dzieli\u0107 czy nie wsp\u00f3\u0142dzieli\u0107? Oczywi\u015bcie kusz\u0105ce by\u0142oby stworzenie wsp\u00f3lnych informacji dla wszystkich oraz prywatnych dla ch\u0119tnych. A to ju\u017c prowadzi do znacznie trudniejszej realizacji. Ale nad tym pracujemy... <\/p>\n<p>Innym przyk\u0142adem jest projektowanie realizacji regularnych proces\u00f3w (wykonywanych wed\u0142ug harmonogramu, inicjowanych przez system zarz\u0105dzaj\u0105cy itp.). Z jednej strony mo\u017cna je wdro\u017cy\u0107 dla ka\u017cdej domeny danych osobno. Jest to prostsze i bardziej wygodne. Jednak z drugiej strony, taka drobna granularno\u015b\u0107 powoduje du\u017ce obci\u0105\u017cenie systemu. Aby je zredukowa\u0107, nale\u017cy wdra\u017ca\u0107 zharmonizowane procesy. Wymaga to jednak bardziej starannego opracowania. <\/p>\n<p>Oczywi\u015bcie pojawia si\u0119 bardzo istotne pytanie. Jak deweloperzy aplikacji mog\u0105 zapewni\u0107 dzia\u0142anie w trybie multitenancy? Co musz\u0105 w tym celu zrobi\u0107? Oczywi\u015bcie d\u0105\u017cymy do tego, aby ci\u0119\u017car technologicznych i infrastrukturalnych kwestii w maksymalnym stopniu spoczywa\u0142 na dostarczanej technologii, a programista aplikacji koncentrowa\u0142 si\u0119 jedynie na zadaniach logiki biznesowej. Ale tak jak w przypadku innych istotnych pyta\u0144 architektonicznych, deweloperzy aplikacji musz\u0105 mie\u0107 pewne wyobra\u017cenie o dzia\u0142aniu w modelu multitenancy i podj\u0105\u0107 pewne wysi\u0142ki w trakcie tworzenia aplikacji. Dlaczego? Poniewa\u017c s\u0105 aspekty, kt\u00f3rych technologia nie mo\u017ce zagwarantowa\u0107 automatycznie, nie uwzgl\u0119dniaj\u0105c semantyki danych. Na przyk\u0142ad, to samo zdefiniowanie granic podzia\u0142u informacji. Ale staramy si\u0119, aby te trudno\u015bci by\u0142y ma\u0142e. Przyk\u0142ady realizacji takich aplikacji ju\u017c istniej\u0105. <\/p>\n<p>Istotnym aspektem w kontek\u015bcie wdra\u017cania multitenancy w '1C:Przedsi\u0119biorstwie' jest to, \u017ce tworzymy hybrydowy model, w kt\u00f3rym jedna aplikacja mo\u017ce dzia\u0142a\u0107 zar\u00f3wno w trybie multitenancy, jak i w zwyk\u0142ym trybie. To do\u015b\u0107 skomplikowane zadanie i temat osobnej dyskusji.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/326654\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430 \u043d\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0430. \u00ab\u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u044f\u00bb \u0434\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u00ab\u043c\u0443\u043b\u044c\u0442\u0438\u0430\u0440\u0435\u043d\u0434\u043d\u043e\u0441\u0442\u044c, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0430\u0440\u0435\u043d\u0434\u0430\u00bb. \u0418\u043d\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u00ab\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435\u043c\u00bb. \u042d\u0442\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u0442\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d \u043f\u043e \u0441\u0443\u0442\u0438 \u043d\u0438 \u0441 \u0430\u0440\u0435\u043d\u0434\u043e\u0439, \u043d\u0438 \u0441 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435\u043c. \u042d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u0438\u043c\u0435\u043d\u043d\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0438 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0435\u0433\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438. \u041f\u0440\u0438\u0447\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0432\u0430\u0436\u043d\u043e. \u041c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55232,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55231","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430 \u043d\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pro-multitenancy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e multitenancy | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430 \u043d\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pro-multitenancy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-15T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:19+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47O multitenancy | ProHoster","description":"Niestety, ten termin nie ma dobrego odpowiednika w j\u0119zyku polskim.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pro-multitenancy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e multitenancy | ProHoster","og:description":"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0443 \u044d\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430 \u043d\u0435\u0442 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0443\u0441\u0441\u043a\u043e\u044f\u0437\u044b\u0447\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0430.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/pro-multitenancy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-15T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55231","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:47:39","updated":"2022-09-29 20:30:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/55231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=55231"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/55231\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/55232"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=55231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=55231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=55231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}