MULTI-TENANT SAAS
USING 30K
DATABASES
Henry Been, SnelStart Software
Server 1 Server 2 Server n-1 Server n
Slechts
1
humongous
database
WAAROM???
Waarom maar 1 database?
• Single point of failure
• Duur
• Geen duidelijke tenant grenzen
Real scale-out: 33k+ databases
• Geen single point of failure
• 2,5 maal goedkoper
• 100% tenant isolatie
HENRY BEEN
SOFTWARE ARCHITECT
SPEAKER & CONSULTANT
ALM RANGER
hbeen@snelstart.nl
@henry_been
https://www.linkedin.com/in/henrybeen/
http://henry.werktbijsnelstart.nl
BIJ ONS OP DE SHOP
SnelStart
A
SnelStart
AA
SnelStart
SnelStart
A
SnelStart Services Platform - Overzicht
MULTI-TENANT SAAS
ELASTIC POOLS
ELASTIC DATABASE
CLIENT LIBRARY
using (SqlConnection conn =
customerShardMap.OpenConnectionForKey(customerId,
Configuration.GetCredentialsConnectionString(),
ConnectionOptions.Validate))
{
// Execute a simple command.
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = @"UPDATE Sales.Customer
SET PersonID = @newPersonID
WHERE CustomerID = @customerID";
cmd.Parameters.AddWithValue("@customerID", customerId);
cmd.Parameters.AddWithValue("@newPersonID", newPersonId);
cmd.ExecuteNonQuery();
}
ELASTIC JOBS
Elastic database jobs
• Self-hosted service
• Zelf installeren dmv Powershell
• Voor idempotent T-SQL executie
ELASTIC
TRANSACTIONS
Elastic transactions
• Geen MSDTC in Azure SQL DB
• Azure SQL DB zelf coordineerd
• .NET framework ≥ 4.6.1
using (var scope = new TransactionScope())
{
using (var conn1 = new SqlConnection(connStrDb1))
{
conn1.Open();
SqlCommand cmd1 = conn1.CreateCommand();
cmd1.CommandText = string.Format("insert into T1 values(1)");
cmd1.ExecuteNonQuery();
}
using (var conn2 = new SqlConnection(connStrDb2))
{
conn2.Open();
var cmd2 = conn2.CreateCommand();
cmd2.CommandText = string.Format("insert into T2 values(2)");
cmd2.ExecuteNonQuery();
}
scope.Complete();
}
DEMO TIME:
WINGTIPS
Database-per-tenant: Voordelen
• Tenant isolation
• Import/export scenario’s
• Capaciteitsmanagement
• Schaalbaarder
• Schema verschillen mogelijk
Database-per-tenant: Nadelen
• Meer ontwikkelwerk..,
…zeker wanneer je zelf bouwt
• ARM operaties …
• Duren lang
• Worden gethrottled
• Gaan vaak mis
Database-per-tenant: Wanneer?
• Isolatie is noodzakelijk
• Als scale-up niet past
• Individuele migratie scenario’s
hbeen@snelstart.nl
@henry_been
https://www.linkedin.com/in/henrybeen/
http://henry.werktbijsnelstart.nl
BEDANKT

Henry been - Multi-tenant applications using 30k databases

Editor's Notes

  • #2 Multi-tenancy: volledig disjoint gebruikers van een systeem
  • #3 Resilliance Prijs / gain verhouding Flexibility / capacity
  • #7 We have do 75 Azure SQL DB servers, hosting that 33k databases and yes, we do have issues regarding a single database (or more often a server, wich has issues for a couple of hours (within SLA) – but with very limited inpact on us WE can provision a little more capacity just in time, which is much cheaper than having to double your capacity when you are running out – Azure SQL DB model + we use standaard DTU’s instead of Premium, so we are a factor 2,5 cheaper Tenants are fully isolated, which has a number of advantages: per-tenant migration, backup, back in time, GDPR Plus wij gebruiken nu al vier maal meer capaciteit dan de grootste Azure SQL DB kan leveren
  • #8 Wat ik nu ga vertellen gaat vooral over ‘ouderwetse’ relationele databases Je weet wel.. die dingen die bijna iedereen in de praktijk nog heeft Gaat minder op voor DBs die dit idee al in zichzelf, intern, dragen, zoals bijv CosmosDB
  • #15 BacPac gekozen als back-up mechanisme Back-up mechanisme gekozen als methode om te transporteren naar de Cloud Compositie is een cliënt verantwoordelijkheid, met daarbinnen de server Terminologie * Central DB == catalog * Daarin zit: shard-map
  • #24 Wij hebben heel veel zelf gebouwd Tegenwoordig is er meer beschikbaar om dit te versnellen Paar dingen aanstippen Daarna een voorbeeldje bekijken
  • #32 Wingtips toelichten Varianten laten zien Infrastructuur doorlopen Databases doorlopen TechDays Tenant toevoegen..
  • #33 Weeg je opties af: een grote, of meerdere kleinere Jullie hopelijk aan het denken gezet en een alternatieve aanpak geschetst
  • #37 Weeg je opties af: een grote, of meerdere kleinere Jullie hopelijk aan het denken gezet en een alternatieve aanpak geschetst