SlideShare a Scribd company logo
1 of 66
Keeping the
Noisy Neighbors Happy
or
Multitenant Software Architecture
1
Eran Stiller
@eranstiller
Cloud Division Leader
Senior Software Architect
erans@codevalue.net
http://stiller.blog
2
The “Old” World
3
Sell a product!
The Cloud World
5
Multitenant Software as a Service (SaaS)
Reality Hits
6
To the Rescue
7
Agenda
8
Definitions Architectural
Issues
DevOps
Issues
What Is the Best Answer a Software Architect Can Give?
9
Disclaimer
This talk will NOT give you the answers
It will give you the questions you should ask
And hopefully answer
10
About Eran Stiller
Cloud Division Leader & Co-Founder at CodeValue
Software architect, consultant and instructor
Microsoft Azure MVP
Many years of hands-on experience
Expert in large-scale, server-side, highly-concurrent
systems
Co-Founder of Azure Israel Meetup
11
13
OzCode – Debug Like a WizardQuit debugging, spend more time writing brilliant software
With our Visual Studio extension for C#, follow the road to a bug-free world
oz-code.com | @oz_code
Magic Glance / Figure out complex expressionsLINQ Debugging / Know the flow of your LINQ queries
Reveal / Focus on data that actually matterSearch/ Find that needle in a haystack of data
What Is Multitenancy?
14
Multitenancy
The term "software multitenancy" refers to a software architecture in
which a single instance of software runs on a server and serves multiple
tenants. 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.
15
- Wikipedia
Multitenancy
The term "software multitenancy" refers to a software architecture in
which a single instance of software runs on a server and serves multiple
tenants. 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.
16
- Wikipedia
Multitenancy
The term "software multitenancy" refers to a software architecture in
which a single instance of software runs on a server and serves multiple
tenants. 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.
17
- Wikipedia
Multitenancy
The term "software multitenancy" refers to a software architecture in
which a single instance of software runs on a server and serves multiple
tenants. 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.
18
- Wikipedia
Multitenancy
The term "software multitenancy" refers to a software architecture in
which a single instance of software runs on a server and serves multiple
tenants. 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.
19
- Wikipedia
Who Is the Tenant?
21
Who Is the Tenant?
22
Who Is the Tenant?
23
Who Is the Tenant?
24
Who Does the User Belong To?
25
Architectural Issues
26
Reference Architecture (Monolith)
27
Back-End API
Web SPA Mobile App
Blob
Storage
SQL
Redis
Cache
Reference Architecture (Microservices)
28
Reverse
Proxy
Web SPA Mobile App
Blob
Storage
Mongo
Redis
Cache
Message
Service
User Service
Auth Service
Mongo
Redis
Cache
Shared vs. Dedicated Resources
29
Shared Dedicated
Shared vs. Dedicated Resources
3030
Security & PrivacyCost
Why favor each?
Shared vs. Dedicated Resources
3232
Help me decide!
Shared vs. Dedicated Resources
Versioning Strategy
3333
Per Tenant Per Region Global
Shared vs. Dedicated Resources
3434
StatefulStateless
State Management
Shared vs. Dedicated Resources
Database
3535
Shared vs. Dedicated Resources
Cache
3636
Reference Architecture (Monolith)
37
Back-End API
Web SPA Mobile App
Blob
Storage
SQL
Redis
Cache
Per Tenant
Reference Architecture (Monolith)
38
Web SPA Mobile App
Blob
Storage
SQL
Redis Cache
T T
T T
Back-End API
Reference Architecture (Microservices)
39
Reverse
Proxy
Web SPA Mobile App
Blob
Storage
Mongo
Redis
Cache
Message
Service
User Service
Auth Service
Mongo
Redis
Cache
Per Tenant
Reference Architecture (Microservices)
40
Reverse
Proxy
Web SPA Mobile App
Blob
Storage
Mongo
Redis
Cache
Message
Service
User Service
Auth Service
Mongo
Redis
Cache
Shared vs. Dedicated Resources
Why not both Cost & Security on Azure?
41
Demo
42
Shared vs. Dedicated Resources
43
Shared Dedicated
Let the customer choose – “Premium” tier!
Shared vs. Dedicated Resources
Cross tenant operations / data?
4444
Onboarding & Provisioning
45
We need a way to onboard new customers
Onboarding & Provisioning
var storageManagementClient = new StorageManagementClient(credential)
{ SubscriptionId = subscriptionId };
Console.WriteLine("Creating the storage account...");
return await storageManagementClient.StorageAccounts.CreateAsync(
groupName,
storageName,
new StorageAccountCreateParameters()
{
Sku = new Microsoft.Azure.Management.Storage.Models.Sku()
{ Name = SkuName.StandardLRS},
Kind = Kind.Storage,
Location = location
}
);
46
Onboarding & Provisioning
47
We need a way to charge customers
Per Tenant
Reference Architecture (Monolith)
48
Web SPA Mobile App
Blob
Storage
SQL
Redis Cache
T T
T T
Back-End API
Per Tenant
Reference Architecture (Monolith)
49
Web SPA Mobile App
Blob
Storage
SQL
Redis Cache
T T
T T
Back-End API
Provisioning
Portal
Tenant
Provisioning
Per Tenant
Reference Architecture (Microservices)
50
Reverse
Proxy
Web SPA Mobile App
Blob
Storage
Mongo
Redis
Cache
Message
Service
User Service
Auth Service
Mongo
Redis
Cache
Per Tenant
Reference Architecture (Microservices)
51
Reverse
Proxy
Web SPA Mobile App
Blob
Storage
Mongo
Redis
Cache
Message
Service
User Service
Auth Service
Mongo
Redis
Cache
Provisioning
Portal
Provisioning
Service
Global Reach
52
Regional Tenants Global Tenants
Where are our tenants located?
Encryption
54
Encryption
private static async Task<TenantInfo> CreateTenantAsync(Guid id)
{
var containerName = $"tenant-{id}";
await CreateBlobContainerAsync(containerName);
var keyName = $"key-{id}";
var keyVaultClient = new KeyVaultClient(GetTokenAsync);
await keyVaultClient.CreateKeyAsync(KeyVaultUrl, keyName,
JsonWebKeyType.Rsa);
return new TenantInfo(id, containerName, keyName);
}
55
Encryption
private static async Task<CloudBlockBlob>
UploadBlobAsync(CloudBlobContainer container, IKey rsa)
{
BlobEncryptionPolicy policy = new BlobEncryptionPolicy(rsa, null);
BlobRequestOptions options = new BlobRequestOptions {
EncryptionPolicy = policy };
CloudBlockBlob blob = container.GetBlockBlobReference("MyFile.txt");
using (var stream = File.OpenRead("Data.txt"))
{
await blob.UploadFromStreamAsync(stream, stream.Length, null,
options, null);
}
return blob;
}
56
Infrastructure
58
Infrastructure
59
Infrastructure
Tenant Management Service
One place to secure
One place to access tenant configuration
60
Per Tenant
Reference Architecture (Monolith)
61
Web SPA Mobile App
Blob
Storage
SQL
Redis Cache
T T
T T
Back-End API
Provisioning
Portal
Tenant
Provisioning
Per Tenant
Reference Architecture (Monolith)
62
Web SPA Mobile App
Blob
Storage
SQL
Redis Cache
Tenant
Data
T T
T T
Provisioning
Portal
Back-End API
Tenant
Management
Per Tenant
Reference Architecture (Microservices)
63
Reverse
Proxy
Web SPA Mobile App
Blob
Storage
Mongo
Redis
Cache
Message
Service
User Service
Auth Service
Mongo
Redis
Cache
Provisioning
Portal
Provisioning
Service
Per Tenant
Reference Architecture (Microservices)
64
Reverse
Proxy
Web SPA Mobile App
Blob
Storage
Mongo
Redis
Cache
Message
Service
User Service
Auth Service
Mongo
Redis
Cache
Tenant
Management
Tenant
Data
Provisioning
Portal
DevOps Issues
65
67
Automate!
Monitoring
68
Monitoring
69
Demo
70
Takeaways
71
Carefully define the tenant boundaries
Invest in your architecture
Follow well known architecture patterns – to the extreme
Decide on shared vs. dedicated resources
Don’t forget to handle onboarding, provisioning & billing
Rock solid infrastructure is key
Monitor each and every tenant
Earn a lot of cash!
72
Thank You!
73
Eran Stiller
@eranstiller
Cloud Division Leader
Senior Software Architect
erans@codevalue.net
http://stiller.blog

More Related Content

What's hot

Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecturetyrantbrian
 
Benefits of Containers, Microservices and Containerized Microservices
Benefits of Containers, Microservices and Containerized MicroservicesBenefits of Containers, Microservices and Containerized Microservices
Benefits of Containers, Microservices and Containerized MicroservicesHTS Hosting
 
Projecting Enterprise Security Requirements on the Cloud
Projecting Enterprise Security Requirements on the CloudProjecting Enterprise Security Requirements on the Cloud
Projecting Enterprise Security Requirements on the CloudScientia Groups
 
Full lifecycle of a microservice
Full lifecycle of a microserviceFull lifecycle of a microservice
Full lifecycle of a microserviceLuigi Bennardis
 
Kubernetes solutions
Kubernetes solutionsKubernetes solutions
Kubernetes solutionsEric Cattoir
 
Vmware Seminar Security & Compliance for the cloud with Trend Micro
Vmware Seminar Security & Compliance for the cloud with Trend MicroVmware Seminar Security & Compliance for the cloud with Trend Micro
Vmware Seminar Security & Compliance for the cloud with Trend MicroGraeme Wood
 
Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Chris Richardson
 
Multi-tenancy In the Cloud
Multi-tenancy In the CloudMulti-tenancy In the Cloud
Multi-tenancy In the Cloudsdevillers
 
Multi-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingMulti-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingSrinath Perera
 
Code Freeze 2018: There is no such thing as a microservice!
Code Freeze 2018: There is no such thing as a microservice!Code Freeze 2018: There is no such thing as a microservice!
Code Freeze 2018: There is no such thing as a microservice!Chris Richardson
 
Slides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBA
Slides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBASlides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBA
Slides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBASeveralnines
 
APIs in a Microservice Architecture
APIs in a Microservice ArchitectureAPIs in a Microservice Architecture
APIs in a Microservice ArchitectureWSO2
 
Microservices_vs_SOA
Microservices_vs_SOAMicroservices_vs_SOA
Microservices_vs_SOAYakov Liskoff
 
Cloud Computing Use Cases Whitepaper 3 0
Cloud Computing Use Cases Whitepaper 3 0Cloud Computing Use Cases Whitepaper 3 0
Cloud Computing Use Cases Whitepaper 3 0Jason Reed
 

What's hot (20)

Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Benefits of Containers, Microservices and Containerized Microservices
Benefits of Containers, Microservices and Containerized MicroservicesBenefits of Containers, Microservices and Containerized Microservices
Benefits of Containers, Microservices and Containerized Microservices
 
Why Microservices
Why MicroservicesWhy Microservices
Why Microservices
 
Projecting Enterprise Security Requirements on the Cloud
Projecting Enterprise Security Requirements on the CloudProjecting Enterprise Security Requirements on the Cloud
Projecting Enterprise Security Requirements on the Cloud
 
Cloud to Edge
Cloud to EdgeCloud to Edge
Cloud to Edge
 
Full lifecycle of a microservice
Full lifecycle of a microserviceFull lifecycle of a microservice
Full lifecycle of a microservice
 
Kubernetes solutions
Kubernetes solutionsKubernetes solutions
Kubernetes solutions
 
Vmware Seminar Security & Compliance for the cloud with Trend Micro
Vmware Seminar Security & Compliance for the cloud with Trend MicroVmware Seminar Security & Compliance for the cloud with Trend Micro
Vmware Seminar Security & Compliance for the cloud with Trend Micro
 
Microservices in Java
Microservices in JavaMicroservices in Java
Microservices in Java
 
Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions Using patterns and pattern languages to make better architectural decisions
Using patterns and pattern languages to make better architectural decisions
 
Multi-tenancy In the Cloud
Multi-tenancy In the CloudMulti-tenancy In the Cloud
Multi-tenancy In the Cloud
 
Multi-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud ComputingMulti-Tenant SOA Middleware for Cloud Computing
Multi-Tenant SOA Middleware for Cloud Computing
 
Code Freeze 2018: There is no such thing as a microservice!
Code Freeze 2018: There is no such thing as a microservice!Code Freeze 2018: There is no such thing as a microservice!
Code Freeze 2018: There is no such thing as a microservice!
 
Slides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBA
Slides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBASlides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBA
Slides: Polyglot Persistence for the MongoDB, MySQL & PostgreSQL DBA
 
Productive Expansion on Amazon Web Services with BlazeClan
 Productive Expansion on Amazon Web Services with BlazeClan Productive Expansion on Amazon Web Services with BlazeClan
Productive Expansion on Amazon Web Services with BlazeClan
 
APIs in a Microservice Architecture
APIs in a Microservice ArchitectureAPIs in a Microservice Architecture
APIs in a Microservice Architecture
 
Cloud Security Fundamentals Webinar
Cloud Security Fundamentals WebinarCloud Security Fundamentals Webinar
Cloud Security Fundamentals Webinar
 
Microservices_vs_SOA
Microservices_vs_SOAMicroservices_vs_SOA
Microservices_vs_SOA
 
Seven Seas Technology
Seven Seas TechnologySeven Seas Technology
Seven Seas Technology
 
Cloud Computing Use Cases Whitepaper 3 0
Cloud Computing Use Cases Whitepaper 3 0Cloud Computing Use Cases Whitepaper 3 0
Cloud Computing Use Cases Whitepaper 3 0
 

Similar to Keeping the Noisy Neighbors Happy

Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak
 
Cloud Resource Management
Cloud Resource ManagementCloud Resource Management
Cloud Resource ManagementNASIRSAYYED4
 
Cloud architecture
Cloud architectureCloud architecture
Cloud architectureAdeel Javaid
 
All-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdfAll-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdfShelly Megan
 
APIs from the Edge to the Mesh
APIs from the Edge to the MeshAPIs from the Edge to the Mesh
APIs from the Edge to the MeshNordic APIs
 
Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]Otávio Santana
 
Arquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaArquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaOtávio Santana
 
Presentation on Openstack in null Bhopal Chapter
Presentation on Openstack in null Bhopal ChapterPresentation on Openstack in null Bhopal Chapter
Presentation on Openstack in null Bhopal ChapterHemraj Singh Chouhan
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsAraf Karsh Hamid
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitectureABDEL RAHMAN KARIM
 
Open Stack Cloud Services
Open Stack Cloud ServicesOpen Stack Cloud Services
Open Stack Cloud ServicesSaurabh Gupta
 
Cloud computing 1
Cloud computing  1Cloud computing  1
Cloud computing 1Ashok Kumar
 
Cloud computing 1
Cloud computing  1Cloud computing  1
Cloud computing 1Ashok Kumar
 
Simplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptxSimplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptxssuser5faa791
 
How to Think Multi-Cloud
How to Think Multi-CloudHow to Think Multi-Cloud
How to Think Multi-CloudRightScale
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREAraf Karsh Hamid
 
Virtualization in Cloud Computing
Virtualization in Cloud ComputingVirtualization in Cloud Computing
Virtualization in Cloud Computingijtsrd
 
Introduction Of Cloud Computing
Introduction Of Cloud ComputingIntroduction Of Cloud Computing
Introduction Of Cloud ComputingMonica Rivera
 
Implementing security groups in open stack
Implementing security groups in open stackImplementing security groups in open stack
Implementing security groups in open stackRishabh Agarwal
 
Reference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to KubernetesReference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to KubernetesRakesh Gujjarlapudi
 

Similar to Keeping the Noisy Neighbors Happy (20)

Sukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud ManagementSukumar Nayak-Agile-DevOps-Cloud Management
Sukumar Nayak-Agile-DevOps-Cloud Management
 
Cloud Resource Management
Cloud Resource ManagementCloud Resource Management
Cloud Resource Management
 
Cloud architecture
Cloud architectureCloud architecture
Cloud architecture
 
All-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdfAll-inclusive insights on Building JavaScript microservices with Node!.pdf
All-inclusive insights on Building JavaScript microservices with Node!.pdf
 
APIs from the Edge to the Mesh
APIs from the Edge to the MeshAPIs from the Edge to the Mesh
APIs from the Edge to the Mesh
 
Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]Architecting Cloud Computing Solutions with Java [1.1]
Architecting Cloud Computing Solutions with Java [1.1]
 
Arquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com JavaArquitetando soluções de computação em nuvem com Java
Arquitetando soluções de computação em nuvem com Java
 
Presentation on Openstack in null Bhopal Chapter
Presentation on Openstack in null Bhopal ChapterPresentation on Openstack in null Bhopal Chapter
Presentation on Openstack in null Bhopal Chapter
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
 
Open Stack Cloud Services
Open Stack Cloud ServicesOpen Stack Cloud Services
Open Stack Cloud Services
 
Cloud computing 1
Cloud computing  1Cloud computing  1
Cloud computing 1
 
Cloud computing 1
Cloud computing  1Cloud computing  1
Cloud computing 1
 
Simplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptxSimplify DevOps with Microservices and Mobile Backends.pptx
Simplify DevOps with Microservices and Mobile Backends.pptx
 
How to Think Multi-Cloud
How to Think Multi-CloudHow to Think Multi-Cloud
How to Think Multi-Cloud
 
Microservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SREMicroservices Docker Kubernetes Istio Kanban DevOps SRE
Microservices Docker Kubernetes Istio Kanban DevOps SRE
 
Virtualization in Cloud Computing
Virtualization in Cloud ComputingVirtualization in Cloud Computing
Virtualization in Cloud Computing
 
Introduction Of Cloud Computing
Introduction Of Cloud ComputingIntroduction Of Cloud Computing
Introduction Of Cloud Computing
 
Implementing security groups in open stack
Implementing security groups in open stackImplementing security groups in open stack
Implementing security groups in open stack
 
Reference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to KubernetesReference architectures shows a microservices deployed to Kubernetes
Reference architectures shows a microservices deployed to Kubernetes
 

More from Eran Stiller

Architecting at Scale with the Advice Process
Architecting at Scale with the Advice ProcessArchitecting at Scale with the Advice Process
Architecting at Scale with the Advice ProcessEran Stiller
 
Application Evolution Strategy
Application Evolution StrategyApplication Evolution Strategy
Application Evolution StrategyEran Stiller
 
Developing and Deploying Microservices with Project Tye
Developing and Deploying Microservices with Project TyeDeveloping and Deploying Microservices with Project Tye
Developing and Deploying Microservices with Project TyeEran Stiller
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020Eran Stiller
 
Bot-Tender: A Chat Bot Walks into a Bar (2020)
Bot-Tender: A Chat Bot Walks into a Bar (2020)Bot-Tender: A Chat Bot Walks into a Bar (2020)
Bot-Tender: A Chat Bot Walks into a Bar (2020)Eran Stiller
 
Why Don’t You Understand Me? Build Intelligence into Your Apps
Why Don’t You Understand Me? Build Intelligence into Your AppsWhy Don’t You Understand Me? Build Intelligence into Your Apps
Why Don’t You Understand Me? Build Intelligence into Your AppsEran Stiller
 
Modern Microservices Architecture with Docker
Modern Microservices Architecture with DockerModern Microservices Architecture with Docker
Modern Microservices Architecture with DockerEran Stiller
 
Windows Containers - Microsoft Ignite The Tour
Windows Containers - Microsoft Ignite The TourWindows Containers - Microsoft Ignite The Tour
Windows Containers - Microsoft Ignite The TourEran Stiller
 
Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...
Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...
Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...Eran Stiller
 
Bot Framework - Microsoft Ignite The Tour
Bot Framework - Microsoft Ignite The TourBot Framework - Microsoft Ignite The Tour
Bot Framework - Microsoft Ignite The TourEran Stiller
 
It's a Serverless World
It's a Serverless WorldIt's a Serverless World
It's a Serverless WorldEran Stiller
 
Keynote - From Monolith to Microservices - Lessons Learned in the Real World
Keynote - From Monolith to Microservices - Lessons Learned in the Real WorldKeynote - From Monolith to Microservices - Lessons Learned in the Real World
Keynote - From Monolith to Microservices - Lessons Learned in the Real WorldEran Stiller
 
Architecting a Serverless IoT System in the Cloud
Architecting a Serverless IoT System in the CloudArchitecting a Serverless IoT System in the Cloud
Architecting a Serverless IoT System in the CloudEran Stiller
 
6 Lessons I Learned on my Journey from Monolith to Microservices
6 Lessons I Learned on my Journey from Monolith to Microservices6 Lessons I Learned on my Journey from Monolith to Microservices
6 Lessons I Learned on my Journey from Monolith to MicroservicesEran Stiller
 
IoT in Action Keynote - CodeValue
IoT in Action Keynote - CodeValueIoT in Action Keynote - CodeValue
IoT in Action Keynote - CodeValueEran Stiller
 
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...Eran Stiller
 
Create Your Own Serverless PKI with .NET & Azure Key Vault
Create Your Own Serverless PKI with .NET & Azure Key VaultCreate Your Own Serverless PKI with .NET & Azure Key Vault
Create Your Own Serverless PKI with .NET & Azure Key VaultEran Stiller
 
Cloud Native Development on Azure
Cloud Native Development on AzureCloud Native Development on Azure
Cloud Native Development on AzureEran Stiller
 
Today, the Cloud Is Your Advantage
Today, the Cloud Is Your AdvantageToday, the Cloud Is Your Advantage
Today, the Cloud Is Your AdvantageEran Stiller
 

More from Eran Stiller (20)

Architecting at Scale with the Advice Process
Architecting at Scale with the Advice ProcessArchitecting at Scale with the Advice Process
Architecting at Scale with the Advice Process
 
Application Evolution Strategy
Application Evolution StrategyApplication Evolution Strategy
Application Evolution Strategy
 
Developing and Deploying Microservices with Project Tye
Developing and Deploying Microservices with Project TyeDeveloping and Deploying Microservices with Project Tye
Developing and Deploying Microservices with Project Tye
 
API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020API Design in the Modern Era - Architecture Next 2020
API Design in the Modern Era - Architecture Next 2020
 
Bot-Tender: A Chat Bot Walks into a Bar (2020)
Bot-Tender: A Chat Bot Walks into a Bar (2020)Bot-Tender: A Chat Bot Walks into a Bar (2020)
Bot-Tender: A Chat Bot Walks into a Bar (2020)
 
Why Don’t You Understand Me? Build Intelligence into Your Apps
Why Don’t You Understand Me? Build Intelligence into Your AppsWhy Don’t You Understand Me? Build Intelligence into Your Apps
Why Don’t You Understand Me? Build Intelligence into Your Apps
 
Modern Microservices Architecture with Docker
Modern Microservices Architecture with DockerModern Microservices Architecture with Docker
Modern Microservices Architecture with Docker
 
Windows Containers - Microsoft Ignite The Tour
Windows Containers - Microsoft Ignite The TourWindows Containers - Microsoft Ignite The Tour
Windows Containers - Microsoft Ignite The Tour
 
Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...
Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...
Architecting Multitenant SaaS Applications with Azure - Microsoft Ignite The ...
 
Bot Framework - Microsoft Ignite The Tour
Bot Framework - Microsoft Ignite The TourBot Framework - Microsoft Ignite The Tour
Bot Framework - Microsoft Ignite The Tour
 
It's a Serverless World
It's a Serverless WorldIt's a Serverless World
It's a Serverless World
 
Keynote - From Monolith to Microservices - Lessons Learned in the Real World
Keynote - From Monolith to Microservices - Lessons Learned in the Real WorldKeynote - From Monolith to Microservices - Lessons Learned in the Real World
Keynote - From Monolith to Microservices - Lessons Learned in the Real World
 
Architecting a Serverless IoT System in the Cloud
Architecting a Serverless IoT System in the CloudArchitecting a Serverless IoT System in the Cloud
Architecting a Serverless IoT System in the Cloud
 
6 Lessons I Learned on my Journey from Monolith to Microservices
6 Lessons I Learned on my Journey from Monolith to Microservices6 Lessons I Learned on my Journey from Monolith to Microservices
6 Lessons I Learned on my Journey from Monolith to Microservices
 
IoT in Action Keynote - CodeValue
IoT in Action Keynote - CodeValueIoT in Action Keynote - CodeValue
IoT in Action Keynote - CodeValue
 
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
Net Conf Israel - Intro & Building Cloud Native Apps with .NET Core 3.0 and K...
 
Create Your Own Serverless PKI with .NET & Azure Key Vault
Create Your Own Serverless PKI with .NET & Azure Key VaultCreate Your Own Serverless PKI with .NET & Azure Key Vault
Create Your Own Serverless PKI with .NET & Azure Key Vault
 
Cloud Native Development on Azure
Cloud Native Development on AzureCloud Native Development on Azure
Cloud Native Development on Azure
 
Today, the Cloud Is Your Advantage
Today, the Cloud Is Your AdvantageToday, the Cloud Is Your Advantage
Today, the Cloud Is Your Advantage
 
Build 2019 Recap
Build 2019 RecapBuild 2019 Recap
Build 2019 Recap
 

Recently uploaded

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 

Recently uploaded (20)

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 

Keeping the Noisy Neighbors Happy

  • 1. Keeping the Noisy Neighbors Happy or Multitenant Software Architecture 1 Eran Stiller @eranstiller Cloud Division Leader Senior Software Architect erans@codevalue.net http://stiller.blog
  • 2. 2
  • 4. The Cloud World 5 Multitenant Software as a Service (SaaS)
  • 8. What Is the Best Answer a Software Architect Can Give? 9
  • 9. Disclaimer This talk will NOT give you the answers It will give you the questions you should ask And hopefully answer 10
  • 10. About Eran Stiller Cloud Division Leader & Co-Founder at CodeValue Software architect, consultant and instructor Microsoft Azure MVP Many years of hands-on experience Expert in large-scale, server-side, highly-concurrent systems Co-Founder of Azure Israel Meetup 11
  • 11. 13 OzCode – Debug Like a WizardQuit debugging, spend more time writing brilliant software With our Visual Studio extension for C#, follow the road to a bug-free world oz-code.com | @oz_code Magic Glance / Figure out complex expressionsLINQ Debugging / Know the flow of your LINQ queries Reveal / Focus on data that actually matterSearch/ Find that needle in a haystack of data
  • 13. Multitenancy The term "software multitenancy" refers to a software architecture in which a single instance of software runs on a server and serves multiple tenants. 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. 15 - Wikipedia
  • 14. Multitenancy The term "software multitenancy" refers to a software architecture in which a single instance of software runs on a server and serves multiple tenants. 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. 16 - Wikipedia
  • 15. Multitenancy The term "software multitenancy" refers to a software architecture in which a single instance of software runs on a server and serves multiple tenants. 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. 17 - Wikipedia
  • 16. Multitenancy The term "software multitenancy" refers to a software architecture in which a single instance of software runs on a server and serves multiple tenants. 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. 18 - Wikipedia
  • 17. Multitenancy The term "software multitenancy" refers to a software architecture in which a single instance of software runs on a server and serves multiple tenants. 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. 19 - Wikipedia
  • 18. Who Is the Tenant? 21
  • 19. Who Is the Tenant? 22
  • 20. Who Is the Tenant? 23
  • 21. Who Is the Tenant? 24
  • 22. Who Does the User Belong To? 25
  • 24. Reference Architecture (Monolith) 27 Back-End API Web SPA Mobile App Blob Storage SQL Redis Cache
  • 25. Reference Architecture (Microservices) 28 Reverse Proxy Web SPA Mobile App Blob Storage Mongo Redis Cache Message Service User Service Auth Service Mongo Redis Cache
  • 26. Shared vs. Dedicated Resources 29 Shared Dedicated
  • 27. Shared vs. Dedicated Resources 3030 Security & PrivacyCost Why favor each?
  • 28. Shared vs. Dedicated Resources 3232 Help me decide!
  • 29. Shared vs. Dedicated Resources Versioning Strategy 3333 Per Tenant Per Region Global
  • 30. Shared vs. Dedicated Resources 3434 StatefulStateless State Management
  • 31. Shared vs. Dedicated Resources Database 3535
  • 32. Shared vs. Dedicated Resources Cache 3636
  • 33. Reference Architecture (Monolith) 37 Back-End API Web SPA Mobile App Blob Storage SQL Redis Cache
  • 34. Per Tenant Reference Architecture (Monolith) 38 Web SPA Mobile App Blob Storage SQL Redis Cache T T T T Back-End API
  • 35. Reference Architecture (Microservices) 39 Reverse Proxy Web SPA Mobile App Blob Storage Mongo Redis Cache Message Service User Service Auth Service Mongo Redis Cache
  • 36. Per Tenant Reference Architecture (Microservices) 40 Reverse Proxy Web SPA Mobile App Blob Storage Mongo Redis Cache Message Service User Service Auth Service Mongo Redis Cache
  • 37. Shared vs. Dedicated Resources Why not both Cost & Security on Azure? 41
  • 39. Shared vs. Dedicated Resources 43 Shared Dedicated Let the customer choose – “Premium” tier!
  • 40. Shared vs. Dedicated Resources Cross tenant operations / data? 4444
  • 41. Onboarding & Provisioning 45 We need a way to onboard new customers
  • 42. Onboarding & Provisioning var storageManagementClient = new StorageManagementClient(credential) { SubscriptionId = subscriptionId }; Console.WriteLine("Creating the storage account..."); return await storageManagementClient.StorageAccounts.CreateAsync( groupName, storageName, new StorageAccountCreateParameters() { Sku = new Microsoft.Azure.Management.Storage.Models.Sku() { Name = SkuName.StandardLRS}, Kind = Kind.Storage, Location = location } ); 46
  • 43. Onboarding & Provisioning 47 We need a way to charge customers
  • 44. Per Tenant Reference Architecture (Monolith) 48 Web SPA Mobile App Blob Storage SQL Redis Cache T T T T Back-End API
  • 45. Per Tenant Reference Architecture (Monolith) 49 Web SPA Mobile App Blob Storage SQL Redis Cache T T T T Back-End API Provisioning Portal Tenant Provisioning
  • 46. Per Tenant Reference Architecture (Microservices) 50 Reverse Proxy Web SPA Mobile App Blob Storage Mongo Redis Cache Message Service User Service Auth Service Mongo Redis Cache
  • 47. Per Tenant Reference Architecture (Microservices) 51 Reverse Proxy Web SPA Mobile App Blob Storage Mongo Redis Cache Message Service User Service Auth Service Mongo Redis Cache Provisioning Portal Provisioning Service
  • 48. Global Reach 52 Regional Tenants Global Tenants Where are our tenants located?
  • 50. Encryption private static async Task<TenantInfo> CreateTenantAsync(Guid id) { var containerName = $"tenant-{id}"; await CreateBlobContainerAsync(containerName); var keyName = $"key-{id}"; var keyVaultClient = new KeyVaultClient(GetTokenAsync); await keyVaultClient.CreateKeyAsync(KeyVaultUrl, keyName, JsonWebKeyType.Rsa); return new TenantInfo(id, containerName, keyName); } 55
  • 51. Encryption private static async Task<CloudBlockBlob> UploadBlobAsync(CloudBlobContainer container, IKey rsa) { BlobEncryptionPolicy policy = new BlobEncryptionPolicy(rsa, null); BlobRequestOptions options = new BlobRequestOptions { EncryptionPolicy = policy }; CloudBlockBlob blob = container.GetBlockBlobReference("MyFile.txt"); using (var stream = File.OpenRead("Data.txt")) { await blob.UploadFromStreamAsync(stream, stream.Length, null, options, null); } return blob; } 56
  • 54. Infrastructure Tenant Management Service One place to secure One place to access tenant configuration 60
  • 55. Per Tenant Reference Architecture (Monolith) 61 Web SPA Mobile App Blob Storage SQL Redis Cache T T T T Back-End API Provisioning Portal Tenant Provisioning
  • 56. Per Tenant Reference Architecture (Monolith) 62 Web SPA Mobile App Blob Storage SQL Redis Cache Tenant Data T T T T Provisioning Portal Back-End API Tenant Management
  • 57. Per Tenant Reference Architecture (Microservices) 63 Reverse Proxy Web SPA Mobile App Blob Storage Mongo Redis Cache Message Service User Service Auth Service Mongo Redis Cache Provisioning Portal Provisioning Service
  • 58. Per Tenant Reference Architecture (Microservices) 64 Reverse Proxy Web SPA Mobile App Blob Storage Mongo Redis Cache Message Service User Service Auth Service Mongo Redis Cache Tenant Management Tenant Data Provisioning Portal
  • 64. Takeaways 71 Carefully define the tenant boundaries Invest in your architecture Follow well known architecture patterns – to the extreme Decide on shared vs. dedicated resources Don’t forget to handle onboarding, provisioning & billing Rock solid infrastructure is key Monitor each and every tenant Earn a lot of cash!
  • 65. 72
  • 66. Thank You! 73 Eran Stiller @eranstiller Cloud Division Leader Senior Software Architect erans@codevalue.net http://stiller.blog

Editor's Notes

  1. Why are you all here? Image: https://pixabay.com/en/why-question-marks-unknown-ask-2028047/
  2. Images: https://pixabay.com/en/cabin-stone-cabin-nature-1257994/ https://pixabay.com/en/rock-island-illinois-house-home-123406/ https://pixabay.com/en/abandonded-interior-hdr-building-1017454/
  3. Images: https://pixabay.com/en/cabin-stone-cabin-nature-1257994/ https://pixabay.com/en/rock-island-illinois-house-home-123406/ https://pixabay.com/en/abandonded-interior-hdr-building-1017454/
  4. Image: https://pixabay.com/en/buildings-town-cityscape-1245842/
  5. Image: https://pixabay.com/en/despair-alone-being-alone-archetype-513529/
  6. Image: https://pixabay.com/en/question-questions-the-question-mark-1969018/
  7. Free image: https://pixabay.com/en/question-mark-important-sign-1872634/
  8. Image: https://pixabay.com/en/buildings-town-cityscape-1245842/
  9. Image: https://pixabay.com/en/buildings-town-cityscape-1245842/
  10. Image: https://pixabay.com/en/buildings-town-cityscape-1245842/
  11. Image: https://pixabay.com/en/buildings-town-cityscape-1245842/
  12. Image: https://pixabay.com/en/buildings-town-cityscape-1245842/
  13. Free images: https://pixabay.com/en/master-bedroom-residence-home-house-2014865/ https://pixabay.com/en/mattress-camp-mountain-hut-436263/
  14. Free images: https://pixabay.com/en/application-money-1756279/ https://pixabay.com/en/padlocks-locks-for-bags-597815/
  15. https://pixabay.com/en/sign-sorry-character-figure-1719892/
  16. Free images: https://pixabay.com/en/facade-window-home-building-117288/ https://pixabay.com/en/globe-world-earth-planet-1290377/
  17. Free images: https://pixabay.com/en/master-bedroom-residence-home-house-2014865/ https://pixabay.com/en/mattress-camp-mountain-hut-436263/
  18. Free images: https://pixabay.com/en/pedestrian-crossing-traffic-sign-160672/
  19. How do you update a system running 24/7/365? How do you keep the application servers responsive? How do you keep all application servers synced? How do you update the data/schema? How do you update all your clients’ software? Web, Mobile, Desktop… How do you rollback on error? How do you rollback data? How do you know there is an error?
  20. Free image: https://pixabay.com/en/key-colorful-matching-number-74534/
  21. https://pixabay.com/en/programming-computer-environment-1857236/ https://pixabay.com/en/sign-sorry-character-figure-1719892/
  22. https://pixabay.com/en/programming-computer-environment-1857236/ https://pixabay.com/en/sign-sorry-character-figure-1719892/
  23. https://pixabay.com/en/programming-computer-environment-1857236/ https://pixabay.com/en/sign-sorry-character-figure-1719892/
  24. Free images: https://pixabay.com/en/facade-window-home-building-117288/ https://pixabay.com/en/globe-world-earth-planet-1290377/
  25. Free image: https://pixabay.com/en/iron-man-superhero-hero-toy-704046/
  26. Free image: https://pixabay.com/en/heartbeat-pulse-healthcare-medicine-163709/
  27. Fee image: https://pixabay.com/en/pinches-pins-useful-bed-bugs-656719/