Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

SaaS Architektura Multitenant

Podobne prezentacje


Prezentacja na temat: "SaaS Architektura Multitenant"— Zapis prezentacji:

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

2 Agenda

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

4 Długi ogon

5

6

7

8

9 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

10

11 Za co płaci klient?

12 Za co płaci klient?

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

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

15 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

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

17 Za co płaci klient?

18 Za co płaci klient?

19 SaaS – modele dojrzałości

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

21 SaaS – modele dojrzałości

22 SaaS – modele dojrzałości

23 SaaS – modele dojrzałości

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

25 SaaS

26 Przykładowa aplikacja

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

28 Demo

29

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

31 Reguły biznesowe

32

33 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

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

35 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

36 Rozszerzalność danych

37

38 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ć

39 Warstwa danych

40 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

41 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

42 Baza danych Wspólna baza, osobne schematy

43 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 userów w bazie = 20 sek. Dodanie następnego

44 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

45 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

46 Porównanie

47 Warstwa danych Realizacja Trusted Database Connections
Tenant View Filter

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

49 DAL

50 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: użytkowników – 20 sek. przebudowa wew. cacha userów sql servera

51 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, );

52 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

53 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, );

54 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, );

55 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, );

56 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.

57 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

58 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

59 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

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

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

62

63

64 ConnectionPool DEMO

65 Rozszerzalność Modelu Danych

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

67 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

68 Rozszerzalność danych
Zaalokowane pola

69 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

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

71 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

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

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

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

75 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

76 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ść

77 Pytania

78 Linki http://www.sztronka.com

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


Pobierz ppt "SaaS Architektura Multitenant"

Podobne prezentacje


Reklamy Google