SaaS Architektura Multitenant

Slides:



Advertisements
Podobne prezentacje
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Klub i Restauracja Mirage ma przyjemność
KLUB MIŁOŚNIKÓW HARREGO POTTERA
Bazy danych 1.Wiadomo ś ci wst ę pne P. F. Góra semestr letni 2004/05.
4. Relacyjny model baz danych
Prąd elektryczny Paweł Gartych kl. 4aE.
Dzielenie relacyjne / Relational Division
Testowanie oprogramowania metodą badania pokrycia kodu
Ł ukasz Wiatrak Marta Kowalczyk Krzysztof Cywicki.
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
Asystent Gabinet Lekarski
Najpopularniejsze aplikacje ASP.NET i PHP.
CLOUD COMPUTING.
Prąd elektryczny Opór elektryczny.
25 PRZYKAZA Ń. 1. Nie dyskutuj z go ś ciem, który ma nad Tob ą pó ł litra przewagi!
Rozproszone transakcje z wykorzystaniem usługi Service Broker w SQL Server 2008 R2 Andrzej Ptasznik.
Pytanie to coraz cz ęś ciej nasuwa si ę przeci ę tnemu cz ł owiekowi chc ą cemu stworzy ć now ą sie ć w domu. Pytanie to coraz cz ęś ciej nasuwa si.
NIKISZOWIEC.
Asystent Faktura. Plan prezentacji 1. Krótka ogólna informacja o programie 2. Licencjonowanie 3. Interfejs programu 4. Modu ł y i funkcje 5. Dostrajanie.
Krzysztof Manuszewski
CREATIVE BRIEF. PYTANIA KIM? KIM? CZYM? CZYM?CO?
Edukacja informatyczna w szkole
System Center od kuchni
Zarządzanie magazynem danych - Storage Spaces w Windows Server 2012 oraz w Windows 8 Błażej Miśkiewicz MCTMCP MCSA MCTS MCITP.
Damian Wojdan Kraków,
Wirtualne spotkania Microsoft
Mobilny system sprzedaży z wykorzystaniem sieci telefonii komórkowej
Oko w oko z pracownikiem.
Asystent CRM.
Wyniki Badania Statystycznego dotyczacego lekcji Matematyki Wyniki Badania Statystycznego dotyczacego lekcji Matematyki Autor: Aneta Powarzynska Klasa.
Turystyka a środowisko naturalne Ustawa śmieciowa w Polsce.
Quiz o energii odnawialnej.
JAKA JESTEM. Jeszcze niedawno by ł am tak ma ł a, ż e mie ś ci ł am si ę w umywalce.
... i Bóg stworzy ł cz ł owieka. - Adamie, zejd ź w t ą dolin ę. Powiedział Pan: Adam spytał: -Co to jest dolina, Panie?
CluD Computing t take proste
Arkusz Kalkulacyjny opracowała: Alicja Rusek.
Bazy danych w systemie SimCallCenter Krótkie omówienie wyboru baz danych stosowanych w CallCenter, integracja z zewnętrznymi bazami danych Czas 15 min.
Geometryczne dyktando
Kiedy Siergiej dzwoni do George`a…
KINECT – czyli z czym to się je?. Damian Zawada
Kliknij Tylko jedna minutka. M ó wi si ę, ż e by kogo ś d ostrzec wystarczy 1 sekunda 1 godzina by kogo ś oceni ć 1 dzie ń by kogo ś polubi ć lub pokocha.
POLSKIE RODZINY- FAKTY, MITY I STEREOTYPY Anna Antoniak Sylwia Szczepańska Kl. 1b.
To, co zapami ę ta ł am…. Klasa 0 Moja pierwsza szkolna wycieczka… Byłam w Krakowie na Wawelu i w Smoczej Jamie razem z kolegami i kole ż ankami ze szkoły.
Asystent Rejestr Umów.
IBM Tivoli Storage Manager Strojenie A Presentation by Paweł Krawczyk June 8, 2011.
Temat 4: Znaki diakrytyczne i definiowanie języka dokumentu
HISTORIA FIZYKII. Rozwój fizyki jako nauki zapocz ą tkowany zosta ł w XVII w. W XVIII w. sformu ł owano mechanik ę klasyczn ą i podstawy elektromagnetyz.
L.I.P.S.S. Helmut Loidl koordynator Transfer po uko ń czeniu szko ł y podstawowej jest obecnie najgor ę tszym tematem w Europie. Nie przyj ę cie na.
Rozdział 3: Bezpieczeństwo w sieci opartej na systemie Windows 2000.
GABRIEL GARCÍA MÁRQUEZ
Lab 3, 4, 5 Zaawansowane arkusze kalkulacyjne. autor: Piotr Marczewski WYKRESY Typy wykresów Grupowane Skumulowane Skumulowane.
PARK NARODOWY GÓR STOŁOWYCH
MOCNE I SŁABE STRONY NARZĘDZI PLANISTYCZNYCH
dla programistów Windows Phone
Jak można nauczyć korzystania z prawdopodobieństwa.
1.
Równowaga rynkowa.
Bazy Danych Programowanie w SQL Wojciech St. Mościbrodzki
W ARSZTAT DO SZKOLENIA MS10264 D EVELOPING W EB A PPLICATIONS WITH M ICROSOFT V ISUAL S TUDIO 2010 Michał Kuciapski.
Pytania warte uwagi:. Powszechnie uwa ż a si ę, ż e jeden nie ma jakiej ś wielkiej wagi, jednak sugeruj ą c si ę znanym przys ł owiem - grosz do grosza.
Rozporz ą dzenie MEN z dnia 30 kwietnia 2007 r. w sprawie warunków i sposobu oceniania, klasyfikowania i promowania uczniów i s ł uchaczy oraz przeprowadzania.
Katalog samochodowy prawdziwego mężczyzny.
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Chrystusa Ciałem każdy z nas jest Niech nie czuje się nikt sam Chrystusa ciałem Życie wieczne On daje nam.
Modele biznesowe. Podręcznik Model biznesowy to w pewnym sensie szkic strategii, która ma zostać wdrożona w ramach struktur, procesów i systemów organizacji.
Rozwój informatyzacji Rozwój informatyzacji - cele i wyzwania Agnieszka Konkel Konferencja: bezpieczeństwo teleinformatyczne państwa,
© 2014 IBM Corporation COMMON POLSKA 2014 JDBC z IBM System i Tomasz Piela & Marcin Wilk Global Technlonogy Services, IBM.
Skuteczności i koszty windykacji polubownej Wyniki badań zrealizowanych w ramach grantu Narodowego Centrum Nauki „Ocena poziomu rzeczywistej.
Lekcja 1 – Hello World! Visual Studio, coś łatwego na początek 
A Ą B C Ć D E Ę F G H I J K L Ł M N Ń O Ó P R S Ś T U W Y Z Ź Ż.
Zapis prezentacji:

SaaS Architektura Multitenant Michał Mac Architekt, Comarch MCPD Win Developer, MCITP DBA, Developer

Agenda

Agenda Długi ogon/SaaS Reguły biznesowe Rozszerzalność danych Pojemnik na dane Sql Server

Długi ogon

Jak zrealizować ideę długiego ogona w IT? $ / Klient Najwięksi klienci Co jeśli obniżymy koszt wyprodukowania i dostarczenia oprogramowania? Typowi klienci Nowy rynek >> aktualny rynek Rynek (aktualnie) poza zasięgiem

Za co płaci klient?

Za co płaci klient?

Sprzęt u dostawcy: efekt skali Dostawca może zainwestować w olbrzymie Data-Center

Sprzęt u dostawcy: efekt skali Microsoft Data Center (Chicago, IL) Koszt inwestycji $500m, wielkość 10 boisk football

SaaS – zyski użytkownika Nie kupuje sprzętu Nie instaluje oprogramowania Nie ponosi dużego kosztu na starcie Model abonamentowy Reklamy Większe możliwości sprzętowe producenta – high availability

SaaS – zyski producenta Ciągłe i stałe przychody Lepsza ochrona własności intelektualnej Aktualizacje aplikacji odbywają się centralnie

Za co płaci klient?

Za co płaci klient?

SaaS – modele dojrzałości

SaaS – modele dojrzałości Przykład 10 000 baz.

SaaS – modele dojrzałości

SaaS – modele dojrzałości

SaaS – modele dojrzałości

3 własności Konfigurowalność Multitenancy Skalowalność

SaaS

Przykładowa aplikacja

Założenia Wymienialne reguły biznesowe Rozszerzalny model danych Konfigurowalny interfejs Multitenancy

Demo

Założenia Wymienialne reguły biznesowe Rozszerzalny model danych Konfigurowalny interfejs Multitenancy

Reguły biznesowe

Demo z regułami nie zostało udostępnione, gdyż jest zrobione z użyciem komercyjnego kodu. Natomiast dobra informacja jest taka, że powstaje open sourcowa implementacja podobnej biblioteki. Zapraszam na code.google.com/p/businessframework/ Znajduje się tam dużo przykładów w formie unit testów: reguły biznesowe, reguły walidacyjne, pisane C#, jak i prostym językiem – Formula, oraz kilka innych rzeczy. Zapraszam do współpracy. Demo

Różne wymagania biznesowe Total = Quantity * ProductPrice Stacja benzynowa Quantity = Total / ProductPrice (z dokładnością do obsługi dzielenia przez 0)

Reguły biznesowe Reużywalne Automatyczna detekcja zależności Expression Trees Reguły walidacyjne Możliwość dodawania z zewnątrz Prosty tekstowy język – Formula Antlr + Expression Trees

Rozszerzalność danych

Rozszerzalność danych Realizacja Słownik ExpandoObject - .Net 4.0 Dynamiczny interfejs użytkownika Metadane per tenant Same dane nie wystarczą. Wymagana możliwość używania w regułach biznesowych Baza danych – w następnej części Słownik Expando object Metadane WPF supportuje bindowanie do indexera string, Silverlight nie, ale da się to zrobić

Warstwa danych

Baza danych Osobne bazy 1/2 poziom dojrzałości + możliwość pełnej customizacji per tenant + backup + premium approach + łatwa implementacja - Aktualizacja licencje wymagany sprzęt: 1000 baz, każda po 2 mb, długi czas odtwarzania baz po restarcie servera, a co za tym idzie być może złamane SLA

Osobne bazy Prosta rozszerzalność Prosta strategia backupów Bezpieczeństwo, izolacja Bankowość, branża medyczna Większe koszty – zużyte zasoby Auto close może zwiększyć ten limit, ale pogarsza czas dostępu Premiun approach

Baza danych Wspólna baza, osobne schematy

Wspólna baza, osobne schematy Łatwa implementacja i rozszerzalność Średni poziom izolacji Utrudniony backup/restore Niższe koszty, bo więcej tenantów na jednej bazie Operacje DDL, które blokują katalog systemowy + prosta customizacja per tenant - operacje ddl, które powodują ogromne lokowanie w katalogach systemowym, przykład 80 000 userów w bazie = 20 sek. Dodanie następnego

Baza danych Wspólna baza, wspólny schemat + brak operacji ddl + licencje, sprzęt, odtwarzanie + możliwość obsłużenia większej liczby tenantów + high availability - Trudniejsza implementacja

Wspólna baza, wspólny schemat Najniższe koszty sprzętu per tenant Możliwość dostarczenia drogich mechanizmów wysokiej dostępności po korzystnych cenach. Problemy z backupe/restorem Większe koszty produkcji aplikacji Należy zapewnić bezpieczeństwo, nawet w przypadku nieprzewidzianego błędu Tenant Data Encryption Tenant View Filter Możliwość partycjonowania per tenant

Porównanie

Warstwa danych Realizacja Trusted Database Connections Tenant View Filter

Wymagania Framework agnostic Transparentność Bezpieczeństwo Ewentualny błąd programisty nie może ujawnić danych innego Używanie pooli połączeń Wydajność

DAL

Baza danych CREATE USER TenantA WITHOUT LOGIN WITH DEFAULT_SCHEMA = Secured; GRANT SELECT, EXECUTE, INSERT, UPDATE, DELETE ON SCHEMA::[Secured] TO TenantA; Sposób podobny do security zrealizowane na bazie danych Wcześniejsza alokacja użytkowników – inaczej problem z dodawaniem: 100 000 użytkowników – 20 sek. przebudowa wew. cacha userów sql servera

Baza danych CREATE TABLE Products ( ProductId INT NOT NULL IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL REFERENCES Warehouses, );

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL REFERENCES Warehouses, ); DATABASE_PRINCIPAL_ID(), a nie USER_ID(), bo ta druga obsługuje tylko ok. 32 tys. obsolute

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL REFERENCES Warehouses, );

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1), PRIMARY KEY(TenantId, ProductId), Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL REFERENCES Warehouses, );

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1), PRIMARY KEY(TenantId, ProductId), Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL REFERENCES Warehouses, );

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1), PRIMARY KEY(TenantId, ProductId), Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL, FOREIGN KEY ( TenantId, WarehouseId ) REFERENCES Warehouses ); Klucz obcy składa się z kolumny tenant by łatwiej było migrować dane Zapewnia nam to izolację pomiędzy tenantami, żaden nie może się odwołać do danych innego.

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1), PRIMARY KEY(TenantId, ProductId), Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL, FOREIGN KEY ( TenantId, WarehouseId ) REFERENCES Warehouses ); Podobnie z UNIQUE + Indeksy Można użyć partycjonawania tabel jak i indeksów, gdy mamy dużych klientów

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1), PRIMARY KEY(TenantId, ProductId), Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL, FOREIGN KEY ( TenantId, WarehouseId ) REFERENCES Warehouses ); CREATE VIEW Secured.vProducts AS SELECT ProductId, Name, Price, WarehouseId FROM Products WHERE TenantId = DATABASE_PRINCIPAL_ID(); Dobrze umieścić widok w osobnym schemacie, bo łatwiej nadaje się uprawnienia Mechaniczna transformacja – t4, albo użycie mangement view, zależnie od podejścia

Baza danych CREATE TABLE Products ( TenantId INT NOT NULL DEFAULT (DATABASE_PRINCIPAL_ID()), ProductId INT NOT NULL IDENTITY(1,1), PRIMARY KEY(TenantId, ProductId), Name NVARCHAR(64) NOT NULL, Price DECIMAL(19,4) NOT NULL, WarehouseId INT NOT NULL, FOREIGN KEY ( TenantId, WarehouseId ) REFERENCES Warehouses ); CREATE VIEW Secured.vProducts AS SELECT ProductId, Name, Price, WarehouseId FROM Products WHERE TenantId = DATABASE_PRINCIPAL_ID(); Dobrze umieścić widok w osobnym schemacie, bo łatwiej nadaje się uprawnienia Mechaniczna transformacja – t4, albo użycie mangement view, zależnie od podejścia

Baza danych EXECUTE AS USER = 'TenantA'; SELECT * FROM vProducts; INSERT vProducts VALUES('Basketball', 55, 2);

Baza danych CREATE PROC Secured.GetProductsWithState @State INT AS BEGIN ... END

ConnectionPool DEMO

Rozszerzalność Modelu Danych

Rozszerzalność danych Dodawanie kolumn Tylko w osobnych bazach albo osobnych schematach

Dodawanie kolumn Tylko osobne bazy/osobny schemat Prostota Operacje DDL Nie potrzeba metadanych, ale może być trudniejsze do realizacji po stronie aplikacji Osobne codebase’y

Rozszerzalność danych Zaalokowane pola

Zaalokowane pola Predefiniowane pola np. 3 stringi 2 liczby Niepotrzebne zużycie miejsca, gdy któryś z tenantów nie używa pola SPARE Columns A co gdy tenant potrzebuje 4 stringi? Wariacje: Trzymanie danych jako string + metadane typu Skomplikowane, ale podobnego mechanizmu używa SalesForce

Rozszerzalność danych Klucz wartość Kiepska wydajność

Klucz wartość Dane trzymane są nie w jednym wierszu, ale w kilku brak ograniczenia na liczbę dodatkowych pól Gorsza wydajność, niż w Zaalokowanych polach występuje dużo randomowych operacji w bazie danych

Rozszerzalność danych Xml Słabe wsprawcie narzedzi, np. raportów, etc. Data centric appliacations, mała interakcja obiektów, prosta logika

Xml Słabe wsparcie narzędzi, np. raportów Dobre, gdy konfiguracja jest wymagana na poziomie instancji encji Dobre dla danych „rzadkich” Prosta implementacja

SalesForce Trudne, wymagająca implementacja, ale super wydajne i super elastyczne

Poza SaaS PaaS - Platform As A Service HaaS - Hardware As A Service IaaS - Infrastructure As A Service “Blue Cloud” by IBM Simple Storage Service (Amazon S3), Elastic Computing Cloud (Amazon EC2) Google computing services Microsoft Azure

Podsumowanie SaaS Wymaga obniżenia kosztu produkcji 4 modele dojrzałości Wyzwania dla architektury: Konfiguracja – reguły, elastyczny model danych Multitenancy – jedna instancja, wielu klientów Skalowalność

Pytania

Linki http://www.sztronka.com http://code.google.com/p/businessframework/ http://www.salesforce.com/au/assets/pdf/Force.com_Multitenancy_WP_101508.pdf http://msdn.microsoft.com/en-us/library/aa479086.aspx http://www.antlr.org/

michal.bartosz.mac@gmail.com www.sztronka.com Dziękuję michal.bartosz.mac@gmail.com www.sztronka.com