SlideShare a Scribd company logo
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 Architecture
tyrantbrian
 
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
HTS Hosting
 
Why Microservices
Why MicroservicesWhy Microservices
Why Microservices
Amazon Web Services
 
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
Scientia Groups
 
Cloud to Edge
Cloud to EdgeCloud to Edge
Cloud to Edge
Wesley Reisz
 
Full lifecycle of a microservice
Full lifecycle of a microserviceFull lifecycle of a microservice
Full lifecycle of a microservice
Luigi Bennardis
 
Kubernetes solutions
Kubernetes solutionsKubernetes solutions
Kubernetes solutions
Eric 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 Micro
Graeme Wood
 
Microservices in Java
Microservices in JavaMicroservices in Java
Microservices in Java
Anatole Tresch
 
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 Cloud
sdevillers
 
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
Srinath 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 DBA
Severalnines
 
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
Blazeclan Technologies Private Limited
 
APIs in a Microservice Architecture
APIs in a Microservice ArchitectureAPIs in a Microservice Architecture
APIs in a Microservice Architecture
WSO2
 
Cloud Security Fundamentals Webinar
Cloud Security Fundamentals WebinarCloud Security Fundamentals Webinar
Cloud Security Fundamentals Webinar
Joseph Holbrook, Chief Learning Officer (CLO)
 
Microservices_vs_SOA
Microservices_vs_SOAMicroservices_vs_SOA
Microservices_vs_SOA
Yakov Liskoff
 
Seven Seas Technology
Seven Seas TechnologySeven Seas Technology
Seven Seas Technology
Unnikrishnan P
 
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
Jason 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 Management
Sukumar Nayak
 
Cloud Resource Management
Cloud Resource ManagementCloud Resource Management
Cloud Resource Management
NASIRSAYYED4
 
Cloud architecture
Cloud architectureCloud architecture
Cloud architecture
Adeel 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!.pdf
Shelly 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 Mesh
Nordic 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 Java
Otá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 Chapter
Hemraj Singh Chouhan
 
Microservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native AppsMicroservices Architecture - Cloud Native Apps
Microservices Architecture - Cloud Native Apps
Araf Karsh Hamid
 
Over view of software artitecture
Over view of software artitectureOver view of software artitecture
Over view of software artitecture
ABDEL RAHMAN KARIM
 
Open Stack Cloud Services
Open Stack Cloud ServicesOpen Stack Cloud Services
Open Stack Cloud Services
Saurabh Gupta
 
Cloud computing 1
Cloud computing  1Cloud computing  1
Cloud computing 1
Ashok Kumar
 
Cloud computing 1
Cloud computing  1Cloud computing  1
Cloud computing 1
Ashok 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.pptx
ssuser5faa791
 
How to Think Multi-Cloud
How to Think Multi-CloudHow to Think Multi-Cloud
How to Think Multi-Cloud
RightScale
 
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
Araf Karsh Hamid
 
Virtualization in Cloud Computing
Virtualization in Cloud ComputingVirtualization in Cloud Computing
Virtualization in Cloud Computing
ijtsrd
 
Introduction Of Cloud Computing
Introduction Of Cloud ComputingIntroduction Of Cloud Computing
Introduction Of Cloud Computing
Monica Rivera
 
Implementing security groups in open stack
Implementing security groups in open stackImplementing security groups in open stack
Implementing security groups in open stack
Rishabh 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 Kubernetes
Rakesh 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 Process
Eran Stiller
 
Application Evolution Strategy
Application Evolution StrategyApplication Evolution Strategy
Application Evolution Strategy
Eran 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 Tye
Eran 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 2020
Eran 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 Apps
Eran Stiller
 
Modern Microservices Architecture with Docker
Modern Microservices Architecture with DockerModern Microservices Architecture with Docker
Modern Microservices Architecture with Docker
Eran Stiller
 
Windows Containers - Microsoft Ignite The Tour
Windows Containers - Microsoft Ignite The TourWindows Containers - Microsoft Ignite The Tour
Windows Containers - Microsoft Ignite The Tour
Eran 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 Tour
Eran Stiller
 
It's a Serverless World
It's a Serverless WorldIt's a Serverless World
It's a Serverless World
Eran 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 World
Eran 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 Cloud
Eran 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 Microservices
Eran Stiller
 
IoT in Action Keynote - CodeValue
IoT in Action Keynote - CodeValueIoT in Action Keynote - CodeValue
IoT in Action Keynote - CodeValue
Eran 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 Vault
Eran Stiller
 
Cloud Native Development on Azure
Cloud Native Development on AzureCloud Native Development on Azure
Cloud Native Development on Azure
Eran Stiller
 
Today, the Cloud Is Your Advantage
Today, the Cloud Is Your AdvantageToday, the Cloud Is Your Advantage
Today, the Cloud Is Your Advantage
Eran Stiller
 
Build 2019 Recap
Build 2019 RecapBuild 2019 Recap
Build 2019 Recap
Eran 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

All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
Alina Yurenko
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
ISH Technologies
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
NishanthaBulumulla1
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
Green Software Development
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 

Recently uploaded (20)

All you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVMAll you need to know about Spring Boot and GraalVM
All you need to know about Spring Boot and GraalVM
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
Preparing Non - Technical Founders for Engaging a Tech Agency
Preparing Non - Technical Founders for Engaging  a  Tech AgencyPreparing Non - Technical Founders for Engaging  a  Tech Agency
Preparing Non - Technical Founders for Engaging a Tech Agency
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
YAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring detailsYAML crash COURSE how to write yaml file for adding configuring details
YAML crash COURSE how to write yaml file for adding configuring details
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
Energy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina JonuziEnergy consumption of Database Management - Florina Jonuzi
Energy consumption of Database Management - Florina Jonuzi
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 

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/