SlideShare a Scribd company logo
1 of 87
Adventures of building a multi-tenant
PaaS on Microsoft Azure
Building Bruges – Tom Kerkhove
Azure Architect
Microsoft Azure MVP & Advisor
Writes on blog.tomkerkhove.be
Maintainer of Promitor, KEDA & Arcus
Hi, I’m Tom Kerkhove
2
@TomKerkhove
tomkerkhove
Disclaimer
You’ll learn about my adventures & findings, not about silver bullets
3
4
Scale
5
Scale up/down
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 6
Scale
| Easiest way of scaling is to get a bigger box
| The only trade-off is that it means your app will be unavailable for a while
| At some point you’ll run out of “bigger boxes”
Scale out / in
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 7
Scale
| Provide multiple copies of your application based on your workload
| No impact on your uptime, but more complex
| My preferred way of scaling, but your application needs to be designed for it
Choose the right compute infrastructure
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 8
Functions
Functions
Container
Instances
Service
Service
Fabric Mesh
Cloud
Services
App
Service
Fabric
Kubernetes
Cluster
VM Scale
Sets
VMs
Bare Metal
| As control increases, so does complexity
| Every service has it’s own characteristics
| How you run your application
| How you package your application
| How you scale your application
Designing for scale
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 9
Scale
Order Function
Order Function
Order Function
Order Function
Order Function
Order Function
Azure Functions
Designing for scale with serverless
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 10
Scale
| The good
| The service handles scaling for you
| The bad
| The service handles scaling for you
| Does not provide a lot of awareness
| The ugly
| Dangerous to burn a lot of money
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 11
Source: http://blog.tdwright.co.uk/2018/09/06/beware-runonstartup-in-azure-functions-a-serverless-horror-story/
Designing for scale with PaaS
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 12
Scale
Instance
Orders Role
Cloud Services
Instance
InstanceInstance
InstanceInstance
InstanceInstance
Autoscaler
Message
Count > 100,
Add instance
Scale!
Designing for scale with PaaS
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 13
Scale
| The good
| You need to define how it scales
| Provides you with scaling awareness
| The bad
| You need to define how it scales
| Hard to determine the perfect scaling rules
| The ugly
| Be aware of “flapping” (http://bit.ly/monitor-autoscale-best-practices)
| Be aware of infinite scaling loops
Use an Azure Monitor Autoscale
14
Scale
Node 1
Cluster
Node 2 Node 3
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Designing for scale with CPaaS
Custom Metric
Provider
Horizontal Pod
Autoscaler(s)
Cluster
Autoscaler
15
Node 1
Cluster
Node 2 Node 3
Pod
Pod Pod
Pod
Pod
Pod
Pod
PodPod
Custom Metric
Provider
Horizontal Pod
Autoscaler(s)
Virtual Kubelet
Azure Container Instances
Container Group
Pod
Container Group
Pod
Container Group
Pod
Designing for scale with CPaaS
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 16
Scale
| The good
| Share resources across different teams
| Serverless scaling capabilities are available with Virtual Kubelet & Virtual Nodes
| The bad
| You are in charge of providing enough resources
| With great power, comes great responsibilities
| No autoscaling out-of-the-box
| Scaling on different levels
| Scaling can become complex(er)
| The ugly
| Takes a lot of effort to ramp up on how to scale
| There’s a lot to manage
17
Application autoscaling made simple with
Kubernetes Event-driven Autoscaling (KEDA)
Event-driven & Azure Functions Support
Vendor-Agnostic & Built-in Scalers
Save resources with scale to 0
Multiple Workload Types
Focus on your app scaling, not the scaling internals
bit.ly/keda-webinar
18
Scale
Node 1
Cluster
Node 2 Node 3
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Pod
Designing for scale with CPaaS
Cluster
Autoscaler
Custom Metric
Provider
Horizontal Pod
Autoscaler(s)
19
Use the tool that fits your needs
Don’t use a service because you know it, evaluate your options
Every technology has its trade-offs, learn them
Don’t overengineer, “because we’ll need it later”
You don’t need hyper scale from day I
Create awareness around your autoscaling
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 20
Scale
| Avoid burning money, get notified before it’s too late!
| Gain insights in your autoscaling rules
| Either configured by you or managed by Azure (ie. Azure Functions)
| Learn from them and tweak them
| Detect autoscaling loops in TEST instead of during live-site issue
| Choose the approach that fits your needs
| Configure Azure Monitor notifications
| Use built-in metrics to visualize and alert on
| Provide your own tooling around it
Create awareness around your autoscaling
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 21
Scale
Tips
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 22
Scale
| Resource consolidation pattern does not play nice with autoscaling
| Configure maximum instance count for your autoscaling
| Provide representable metrics of your remaining work
| Azure Monitor Autoscale is a hidden gem in Azure, use it!
| Does all the great things an autoscaler should do
| Use budget alerts, if feasible
Tenancy
23
24
Multi-tenancy is all about choices
How will you deploy your application?
How much isolation does it require between tenants? How much customization will we allow?
Do our tenants need access to their data?
Will it run in multiple regions?
Will one region require multiple deployments?
What is our pricing model?
Do we need to reflect this in our tenancy?
Multi-tenancy is more than data sharding
Choosing a tenancy model
25
Tenancy
App Stamp A Stamp B
Stamp C Stamp D
App
Tenant A
App
Tenant B
#n…#1 #n…#1BA
Full isolation between tenants by
deploying everything for every tenant
Run a multi-tenant application, but use
sharded data layer
App deployed in multiple stamps &
geographies with sharded data layer
Choosing a sharding strategy
26
Tenancy
| Spread all your data across multiple smaller databases instead of one big one
| Good example of scaling out to handle load
| A shard key is used to determine the shard based on the chosen strategy
| Choose your strategy wisely and think about your query patterns
| Does your customer need access to it? Then you should shard per tenant!
| You cannot easily change your strategy later on
| More information: http://bit.ly/sharding-pattern
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
Locating shards
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 27
Tenancy
Shard
Manager
How do I connect to “Sello”?
Order
Processor
#5#4#3#2#1 #6 #7 #8
Use this connection string
Get Secret
“Sql-Tenant-Sello”
Using shard managers
28
Tenancy
| Provide catalog of all shard in the platform
| Determine current shard based on shard key & chosen approach
| Metadata is stored in a store of choice
| Be careful where you store your secrets
| Choosing a good shard manager
| They should handle secrets in a secure manner
| Build your own, ie on top of Azure Key Vault
| Use existing tool, ie Azure SQL Database Elastic Tools
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
Cost-efficient sharding
29
Tenancy
#5#4#3#2#1 #6 #7 #8
Elastic Pool
| In a PaaS world you need to pay for every data store instance you have.
S1–5%
S1–15%
S1–5%
S1–25%
S1–50%
S1–7%
S1–21%
S1–41%
Use an Azure SQL Elastic Pools
| We pay ~€200 for 160 DTU, but only use ~20 % of it
Cost-efficient sharding
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 30
Tenancy
#5#4#3#2#1 #6 #7 #8
Elastic Pool
| Resource pools have a resource limit for all shards
7DTU
15DTU
8DTU
25DTU
24DTU
7DTU
40DTU
21DTU
93DTU
I need more resources!!!
We ran out, we only
have 200 DTU
25DTU
Cost-efficient sharding
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 31
Tenancy
#5#4#3#2#1 #6 #7 #8
Elastic Pool
| Enforce resource limitation on a per-shard level
7DTU
15DTU
8DTU
25DTU
24DTU
7DTU
40DTU
21DTU
50DTU
I need more resources!!!
You’ve had enough
37DTU
| Provide multiple resource pools to reduce impact of noisy neighbors
Cost-efficient sharding
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 32
Tenancy
#5#4#3#2#1 #6 #7 #8
Resource Pool A Resource Pool B Resource Pool C
7DTU
15DTU
8DTU
24DTU
7DTU
21DTU
50DTU
37DTU
7DTU
15DTU
8DTU
24DTU
7DTU
37DTU
| Reflect your pricing model in your resource pooling
Cost-efficient sharding
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 33
Tenancy
#5#4#3#2#1 #6 #7 #8
Basic Pool
37DTU
24DTU
5DTU
51DTU
63DTU
77DTU
158DTU
121DTU
Standard Pool Premium Pool
Provision 250 Standard DTUs , capped at 100Provision 100 Basic DTUs , capped at 50 Provision 500 Premium DTUs,
capped at 250
Cost-efficient sharding
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 34
| Consider moving all shards in a resource pool
| Configure maximum consumption per database
| Consider using multiple resource pools to reduce impact of noisy neighbor
| Resource pools are a great way to reflect your pricing model
| Monitor your pools as you would do for individual databases
Tenancy
Determining tenants
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 35
| Determining the tenant that is consuming your service via your API gateway
| Map the authentication key to the registered application and use its context
Tenancy
API
Gateway
API
DB
POST api/v1/orders
X-API-Key ABC
POST api/v1/orders
X-Tenant Sello
Shard
Manager
What shard is “Sello”?
Bill Bracket owns ABC.
Part of “Sello” group
Determining tenants
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
Tenancy
<policies>
<inbound>
<base/>
<set-header name="X-Tenant" exists-action="override">
<value>
@(string.Join(";", (from item in context.User.Groups where
item.Name.ToLower().Contains("sello -") select item.Name.Replace("Sello - ", String.Empty).Trim())))
</value>
</set-header>
</inbound>
<backend>
<base/>
</backend>
<outbound>
<base/>
</outbound>
<on-error>
<base/>
</on-error>
</policies>
Monitoring
37
38
39
40
Monitoring is a shared responsibility
You only value good monitoring, if you’ve been on the other side of the fence
Train your developers to use their own toolchain,
use automated tests on live infrastructure
41
Enrich your telemetry
Correlated all your telemetry to provide a logical flow, not just traces
Provide app-specific contextual information to all telemetry
Always return your correlation ids to your consumers
Never track personal identifiable information
Use different layers of correlation ids
Use consistent terminology
Correlate your telemetry
42
Monitoring
Frontend API
Order
Processor
DB
Get Products
Create Order
Operation ABC
Operation DEF
Transaction / Session XYZ
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
Correlate your telemetry
43
Monitoring
Frontend API
Order
Processor
DB
Get Products
Create Order
Operation ABC
Operation DEF
Transaction / Session XYZ
Cycle 123
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
44
Health checks
No direct business value, until it’s too late
Report status of your application - Is my application healthy? Is it ready?
Use them to verify deployments, measure latency, up time, cold start, …
Always provide throttling to block noisy consumers
Think about your connection management
Go as far as you want
45
Health checks
Handling alerts
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 46
| Always automate alert creation, they are part of your infrastructure as well
| Build a centralized alert handling process
| Azure Logic Apps is a good fit for this
| Different alerts have different contracts
| Use adapters to receive notifications
| Map to internal metric contract
| Handle via centralized alert handler
Monitoring
Azure Monitor
Classic Alert
Adapter
Azure Monitor
Metrics Alert
Adapter
Centralized
Alert Handler
Azure Monitor
Common Alert
Adapter
Handling alerts
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 47
| Use the Logic App template for Azure Monitor!
Monitoring
48
Write Root Cause Analysis (RCA)
Train your team for PROD outages, write RCAs in all environments
Did our alerts detect it? Did we have enough telemetry?
Provides a structured way of analysing your platform
Use as a knowledge transfer to customers & team
Define action points and follow-up on them
Use them to detect recurring issues
There is no such thing as failure, only opportunities to learn
Webhooks
49
Consuming webhooks
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 50
| Generated URLs are evil, provide good DNS names of your services
| And this goes for everything, not only webhooks
Webhooks
API
(12345.provider.com)
3rd
Party
POST https://12345.provider.com/api/webhooks
Where did
123456 go?!
API
(67890.provider.com)
Use an API Gateway
Consuming webhooks
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 51
| Do not reduce your API security because of your 3rd Party
Webhooks
API
(12345.provider.com)
3rd
Party
POST http://12345.provider.com/api/webhooks
Where is
your cert?
Use an API Gateway
Consuming webhooks
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 52
| Always route webhooks through an API gateway
| This decouples the webhook from your internal architecture
Webhooks
API
Gateway
API
3rd
Party
POST http://sello.com/api/v1/webhooks POST https://sello.provider.com/api/v1/webhooks
Authentication: Certificate
Consuming webhooks
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 53
| Always route webhooks through an API gateway
| This decouples the webhook from your internal architecture
Webhooks
API
Gateway
Orders
API
3rd
Party
POST http://sello.com/api/v1/webhooks
POST https://orders.sello.provider.com/api/v1/webhooks
Authentication: Certificate
Stock
APISome gateways support auth
key via query parameters
54
Provide user-friendly webhooks
Think as a webhook consumer, not publisher.
Provide a way for consumers to provide context during registration
Provide a self-service CRUD API to register new subscriptions
Pass your correlation id via Request-Id header
Provide an invocation history
Spaghetti infrastructure 2.0?
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 55
Webhooks
Warehouse
Service
Order
Service
Stock
Service
Shipping
Service
Invoice
Service
Payment
Service
Spaghetti infrastructure 2.0?
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 56
| Long-term this can start to become a burden
| A lot of bookkeeping to know who to update, how we should authenticate, etc
| No central place to route all webhooks through
| Your platform needs to be robust
| What if subscriber II is not responding? Let’s build a retry mechanism!
| Who says subscriber II owns foo.bar.com?
| Webhooks should use a “I don’t care, here’s an update” approach
Webhooks
Event Routers
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 57
Webhooks
Warehouse
Service
Order
Service
Stock
Service
Shipping
Service
Invoice
Service
Payment
Service
Event
Router
Event Routers
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 58
| Event Routers do all the heavy lifting for you
| Provide a centralized hub for all things events
| Bookkeeping of whom subscribes to what webhooks and events
| They will retry sending events when they did not reply
| They will perform webhook validations
| Publishers can publish events to the event router and takes it from there
| Great for for internal usage, but harder to use with 3rd parties
| Webhook validation is not always easy to setup
Webhooks
Tips
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 59
| Webhooks are not durable, if you are not around you will miss it.
| If you need to ensure at-least-once delivery, consider using a broker instead
| Store audit entry of webhook that are being pushed
| Can be important in case of a dispute
| Optionally even include the response of the consumer
| Do not only allow global registrations, consider serving more granular updates
| For example, I want updates of one flight instead of all flights
| Provide rate limiting on your webhook endpoints
| Don’t let your platform go down by your 3rd party provider
| Webhooks are contracts as well
| Provide good documentation and version them
Webhooks
60
Use Webhooks & Events internally
Build fully automated reactive applications / data ingestion pipelines
Decouple teams from each other
Provide capability to extend
June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 61
Azure Event Grid, the heart of Azure
62
Example
| Azure Key Vault provides native Event Grid Events (preview)
| This provides the capability to fully automate certificate management
| The power of these events can leverage closer integration by other services such as
Azure App Services, API Management who can consume latest version of cert
https://blog.tomkerkhove.be/2019/05/28/azure-event-grid-the-heart-of-azure/
63
No.
Embrace Change
64
65
66
How we used to ship
Stable releases every few years
Hard to shift product focus
67
And then came agile…
68
DevOps
Releasing Software to Production
multiple times a day
6969
DevOops
70
You are not Netflix
Manual interventions are evil, automate (as much as possible)
Create automated pipelines for shipping software
(deployment rings are awesome)
Use infrastructure/build as code
DevOps is a culture and requires a mind shift
71
We live in a world of constant change
Our underlying infrastructure is constantly moving & changing
Cloud vendors are competing to offer unique services
Staying up to date is a lot harder
72
Who knows these services?
Service Bus for Windows Server
Azure BizTalk Services
Azure Hybrid Connection
Azure Alerts
Azure Access Control Service
Azure Container Services
Azure Data Factory v1
Azure RemoteApp
The lifecycle of a service
73
Embrace Change
Private Preview
• Rough version of
product
• Shared under NDA to
limited group
Public Preview
• Available to the masses
General Available
• Covered by SLA
• Supported version
The End
• Deprecation
• Silent Sunsetting
• Reincarnation in 2.0
The end of the road
74
Embrace Change
| Official deprecation
| Officially announced as deprecated
| Migration is required before service shutdown
| Reincarnation
| A new version of the service arises in a new version
| Can be part of service or service in total
| Silent deprecation
| No further development in the product
| Service is still running smoothly
| Does not mean you should stop using it
Azure Access Control Service,
Azure Scheduler
Azure Data Factory (Service)
Azure Functions (Host)
Azure Cloud Services?
Can also be tooling cfr.
Azure DevOps Cloud-
based Loadtesting
75
Choosing an Alternative
76
Let’s use the shiny one, right?!
Maybe.
77
Choosing an Alternative
There is no silver bullet
Use the tool that fits your needs, not perse what you know
Be careful with the latest shiny technology
Decide as a team
Build or buy
78
Questions you should ask
What is the learning curve? Is it worthwhile?
Does it have a vendor lock-in?
Is it operable?
Does it have a future?
79
80
App portability is essential
81
Code - .NET Core
Packaging – Containers
Hosting - Open Application Model (OAM)
Eventing &
Webhooks
CloudEvents
Service-to-Service
Service Mesh
Interface (SMI)
App Portability Toolbelt
Telemetry
OpenTelemetry
83
84
You learn by doing
And sometimes, you regret your choices.
85
Cloud platforms are never finished
Your platform evolves, and so does its needs
Prepare for your migrations
Nothing is written in stone
Use a product mindset
Change is coming, so you’d better be prepared
86
Stay up to date with Azure Deprecation Notic
Dashboard with deprecation notices concerning Azure services,
regions, features, APIs and SDKs
Search for services which you depend on
@AzureEndOfLife on Twitter
https://github.com/azure-deprecation/dashboard
Conclusion
87
88
Conclusion
Technologies have scalability capabilities & trade-offs
Provide user-friendly webhooks & route them via API gateways
Define & roll out a good monitoring strategy
Automate everything, it will save you one day
You build it, you run it
We live in a world of constant change, so be prepared

More Related Content

What's hot

tell us which cloud you prefer
tell us which cloud you prefertell us which cloud you prefer
tell us which cloud you preferTraining Institute
 
Cloud comparison - AWS vs Azure vs Google
Cloud comparison - AWS vs Azure vs GoogleCloud comparison - AWS vs Azure vs Google
Cloud comparison - AWS vs Azure vs GooglePatrick Pierson
 
Azure DevOps työkalut - Roundtable 14.3.2019
Azure DevOps työkalut - Roundtable 14.3.2019Azure DevOps työkalut - Roundtable 14.3.2019
Azure DevOps työkalut - Roundtable 14.3.2019Janne Mattila
 
Cloud Computing for the Enterprise
Cloud Computing for the EnterpriseCloud Computing for the Enterprise
Cloud Computing for the EnterpriseAmazon Web Services
 
10 Best Practices for Reducing Spend in AWS
10 Best Practices for Reducing Spend in AWS10 Best Practices for Reducing Spend in AWS
10 Best Practices for Reducing Spend in AWSVAST
 
Microsoft Azure News - October 2019
Microsoft Azure News - October 2019Microsoft Azure News - October 2019
Microsoft Azure News - October 2019Daniel Toomey
 
AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...
AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...
AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...Amazon Web Services
 
AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진
AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진
AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진Amazon Web Services Korea
 
Cloud Computing Azure
Cloud Computing AzureCloud Computing Azure
Cloud Computing AzureCrowd
 
Amazon Web Services for Disaster Recovery, Attila Narin, AWS
Amazon Web Services for Disaster Recovery, Attila Narin, AWS Amazon Web Services for Disaster Recovery, Attila Narin, AWS
Amazon Web Services for Disaster Recovery, Attila Narin, AWS CloudOps Summit
 
Optimizing EC2 usage on AWS
Optimizing EC2 usage on AWSOptimizing EC2 usage on AWS
Optimizing EC2 usage on AWSCloudability
 
Cloudera streaming with flink oct 29, 2020 meetup london
Cloudera streaming with flink oct 29, 2020 meetup londonCloudera streaming with flink oct 29, 2020 meetup london
Cloudera streaming with flink oct 29, 2020 meetup londonTimothy Spann
 

What's hot (16)

tell us which cloud you prefer
tell us which cloud you prefertell us which cloud you prefer
tell us which cloud you prefer
 
Cloud comparison - AWS vs Azure vs Google
Cloud comparison - AWS vs Azure vs GoogleCloud comparison - AWS vs Azure vs Google
Cloud comparison - AWS vs Azure vs Google
 
Azure DevOps työkalut - Roundtable 14.3.2019
Azure DevOps työkalut - Roundtable 14.3.2019Azure DevOps työkalut - Roundtable 14.3.2019
Azure DevOps työkalut - Roundtable 14.3.2019
 
Cloud Computing for the Enterprise
Cloud Computing for the EnterpriseCloud Computing for the Enterprise
Cloud Computing for the Enterprise
 
10 Best Practices for Reducing Spend in AWS
10 Best Practices for Reducing Spend in AWS10 Best Practices for Reducing Spend in AWS
10 Best Practices for Reducing Spend in AWS
 
Microsoft Azure News - October 2019
Microsoft Azure News - October 2019Microsoft Azure News - October 2019
Microsoft Azure News - October 2019
 
Amazon cloud service
Amazon cloud serviceAmazon cloud service
Amazon cloud service
 
AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...
AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...
AWS Summit 2013 | India - Running Enterprise Applications like SAP, Oracle an...
 
Deep Learning Summit (DLS01-8)
Deep Learning Summit (DLS01-8)Deep Learning Summit (DLS01-8)
Deep Learning Summit (DLS01-8)
 
AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진
AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진
AWS Enterprise Summit - 클라우드 네이티브 신규 애플리케이션 구축하기 - 정윤진
 
Cloud Computing Azure
Cloud Computing AzureCloud Computing Azure
Cloud Computing Azure
 
Amazon Web Services for Disaster Recovery, Attila Narin, AWS
Amazon Web Services for Disaster Recovery, Attila Narin, AWS Amazon Web Services for Disaster Recovery, Attila Narin, AWS
Amazon Web Services for Disaster Recovery, Attila Narin, AWS
 
Optimizing EC2 usage on AWS
Optimizing EC2 usage on AWSOptimizing EC2 usage on AWS
Optimizing EC2 usage on AWS
 
Hello Cloud
Hello CloudHello Cloud
Hello Cloud
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
Cloudera streaming with flink oct 29, 2020 meetup london
Cloudera streaming with flink oct 29, 2020 meetup londonCloudera streaming with flink oct 29, 2020 meetup london
Cloudera streaming with flink oct 29, 2020 meetup london
 

Similar to Building Bruges 2020 - Adventures of building a multi-tenant PaaS on Microsoft Azure

Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...
Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...
Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...Tom Kerkhove
 
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...Tom Kerkhove
 
Cloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth AnalysisCloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth AnalysisAndrew Brust
 
Microsoft Azure News - December 2019
Microsoft Azure News - December 2019Microsoft Azure News - December 2019
Microsoft Azure News - December 2019Daniel Toomey
 
Architecting multi-cloud ready applications
Architecting multi-cloud ready applicationsArchitecting multi-cloud ready applications
Architecting multi-cloud ready applicationsSwaminathan Vetri
 
Modernizing Integrations
Modernizing IntegrationsModernizing Integrations
Modernizing IntegrationsRichard Seroter
 
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...Trivadis
 
Better Software is Better than Worse Software - Vince Russo
Better Software is  Better than Worse Software - Vince RussoBetter Software is  Better than Worse Software - Vince Russo
Better Software is Better than Worse Software - Vince RussoVMware Tanzu
 
Azure Data.pptx
Azure Data.pptxAzure Data.pptx
Azure Data.pptxFedoRam1
 
Cloud Computing101 Azure, updated june 2017
Cloud Computing101 Azure, updated june 2017Cloud Computing101 Azure, updated june 2017
Cloud Computing101 Azure, updated june 2017Fernando Mejía
 
Seven Criteria for Building an AWS Global Transit Network
Seven Criteria for Building an AWS Global Transit NetworkSeven Criteria for Building an AWS Global Transit Network
Seven Criteria for Building an AWS Global Transit NetworkKhash Nakhostin
 
DevCamp - What can the cloud do for me
DevCamp - What can the cloud do for meDevCamp - What can the cloud do for me
DevCamp - What can the cloud do for meChris Dufour
 
Microsoft Azure - Planning your move to the cloud
Microsoft Azure - Planning your move to the cloudMicrosoft Azure - Planning your move to the cloud
Microsoft Azure - Planning your move to the cloudScott Cameron
 
Cloud architecture - Azure - AWS
Cloud architecture - Azure - AWSCloud architecture - Azure - AWS
Cloud architecture - Azure - AWSAlexandre BERGERE
 
Cloud Computing and Microsoft
Cloud Computing and MicrosoftCloud Computing and Microsoft
Cloud Computing and MicrosoftJohn Bristowe
 
Next Generation Data Integration with Azure Data Factory
Next Generation Data Integration with Azure Data FactoryNext Generation Data Integration with Azure Data Factory
Next Generation Data Integration with Azure Data FactoryTom Kerkhove
 
Next Generation of Data Integration with Azure Data Factory by Tom Kerkhove
Next Generation of Data Integration with Azure Data Factory by Tom KerkhoveNext Generation of Data Integration with Azure Data Factory by Tom Kerkhove
Next Generation of Data Integration with Azure Data Factory by Tom KerkhoveCodit
 
From legacy to Azure Service Fabric in 360h. Odessa.
From legacy to Azure Service Fabric in 360h. Odessa.From legacy to Azure Service Fabric in 360h. Odessa.
From legacy to Azure Service Fabric in 360h. Odessa.Stas Lebedenko
 
ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...
ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...
ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...Hasan Basri AKIRMAK, MSc,ExecMBA
 

Similar to Building Bruges 2020 - Adventures of building a multi-tenant PaaS on Microsoft Azure (20)

Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...
Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...
Integrate UK 2019 - Adventures of building a (multi-tenant) PaaS on Microsoft...
 
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...
Techdays Finland 2019 - Adventures of building a (multi-tenant) PaaS on Micro...
 
Cloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth AnalysisCloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
Cloud Computing and the Microsoft Developer - A Down-to-Earth Analysis
 
Microsoft Azure News - December 2019
Microsoft Azure News - December 2019Microsoft Azure News - December 2019
Microsoft Azure News - December 2019
 
Architecting multi-cloud ready applications
Architecting multi-cloud ready applicationsArchitecting multi-cloud ready applications
Architecting multi-cloud ready applications
 
Modernizing Integrations
Modernizing IntegrationsModernizing Integrations
Modernizing Integrations
 
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
 
Better Software is Better than Worse Software - Vince Russo
Better Software is  Better than Worse Software - Vince RussoBetter Software is  Better than Worse Software - Vince Russo
Better Software is Better than Worse Software - Vince Russo
 
Azure Data.pptx
Azure Data.pptxAzure Data.pptx
Azure Data.pptx
 
Cloud Computing101 Azure, updated june 2017
Cloud Computing101 Azure, updated june 2017Cloud Computing101 Azure, updated june 2017
Cloud Computing101 Azure, updated june 2017
 
Deep architectural competency for deploying azure solutions
Deep architectural competency for deploying azure solutionsDeep architectural competency for deploying azure solutions
Deep architectural competency for deploying azure solutions
 
Seven Criteria for Building an AWS Global Transit Network
Seven Criteria for Building an AWS Global Transit NetworkSeven Criteria for Building an AWS Global Transit Network
Seven Criteria for Building an AWS Global Transit Network
 
DevCamp - What can the cloud do for me
DevCamp - What can the cloud do for meDevCamp - What can the cloud do for me
DevCamp - What can the cloud do for me
 
Microsoft Azure - Planning your move to the cloud
Microsoft Azure - Planning your move to the cloudMicrosoft Azure - Planning your move to the cloud
Microsoft Azure - Planning your move to the cloud
 
Cloud architecture - Azure - AWS
Cloud architecture - Azure - AWSCloud architecture - Azure - AWS
Cloud architecture - Azure - AWS
 
Cloud Computing and Microsoft
Cloud Computing and MicrosoftCloud Computing and Microsoft
Cloud Computing and Microsoft
 
Next Generation Data Integration with Azure Data Factory
Next Generation Data Integration with Azure Data FactoryNext Generation Data Integration with Azure Data Factory
Next Generation Data Integration with Azure Data Factory
 
Next Generation of Data Integration with Azure Data Factory by Tom Kerkhove
Next Generation of Data Integration with Azure Data Factory by Tom KerkhoveNext Generation of Data Integration with Azure Data Factory by Tom Kerkhove
Next Generation of Data Integration with Azure Data Factory by Tom Kerkhove
 
From legacy to Azure Service Fabric in 360h. Odessa.
From legacy to Azure Service Fabric in 360h. Odessa.From legacy to Azure Service Fabric in 360h. Odessa.
From legacy to Azure Service Fabric in 360h. Odessa.
 
ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...
ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...
ITU Cekirdek Mini MBA Seminar - Business & Technology Perspectives for the Sc...
 

More from Tom Kerkhove

Techorama 2022 - Adventures of building Promitor, an open-source product
Techorama 2022 - Adventures of building Promitor, an open-source productTechorama 2022 - Adventures of building Promitor, an open-source product
Techorama 2022 - Adventures of building Promitor, an open-source productTom Kerkhove
 
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...Tom Kerkhove
 
Introduction to Promitor
Introduction to PromitorIntroduction to Promitor
Introduction to PromitorTom Kerkhove
 
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...Tom Kerkhove
 
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...Tom Kerkhove
 
Global Azure Virtual - Application Autoscaling with KEDA
Global Azure Virtual - Application Autoscaling with KEDAGlobal Azure Virtual - Application Autoscaling with KEDA
Global Azure Virtual - Application Autoscaling with KEDATom Kerkhove
 
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...Tom Kerkhove
 
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...Tom Kerkhove
 
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...Tom Kerkhove
 
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key VaultAzure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key VaultTom Kerkhove
 
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...Tom Kerkhove
 
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...Intelligent Cloud Conference 2018 - Building secure cloud applications with A...
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...Tom Kerkhove
 
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...Tom Kerkhove
 
NDC Minnesota - Analyzing StackExchange data with Azure Data Lake
NDC Minnesota - Analyzing StackExchange data with Azure Data LakeNDC Minnesota - Analyzing StackExchange data with Azure Data Lake
NDC Minnesota - Analyzing StackExchange data with Azure Data LakeTom Kerkhove
 
Techdays Finland 2018 - Building secure cloud applications with Azure Key Vault
Techdays Finland 2018 - Building secure cloud applications with Azure Key VaultTechdays Finland 2018 - Building secure cloud applications with Azure Key Vault
Techdays Finland 2018 - Building secure cloud applications with Azure Key VaultTom Kerkhove
 
NDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data LakeNDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data LakeTom Kerkhove
 
TechDays NL 2016 - Building your scalable secure IoT Solution on Azure
TechDays NL 2016 - Building your scalable secure IoT Solution on AzureTechDays NL 2016 - Building your scalable secure IoT Solution on Azure
TechDays NL 2016 - Building your scalable secure IoT Solution on AzureTom Kerkhove
 
Integration Monday - Analysing StackExchange data with Azure Data Lake
Integration Monday - Analysing StackExchange data with Azure Data LakeIntegration Monday - Analysing StackExchange data with Azure Data Lake
Integration Monday - Analysing StackExchange data with Azure Data LakeTom Kerkhove
 
ITProceed 2015 - Securing Sensitive Data with Azure Key Vault
ITProceed 2015 - Securing Sensitive Data with Azure Key VaultITProceed 2015 - Securing Sensitive Data with Azure Key Vault
ITProceed 2015 - Securing Sensitive Data with Azure Key VaultTom Kerkhove
 
Securing sensitive data with Azure Key Vault
Securing sensitive data with Azure Key VaultSecuring sensitive data with Azure Key Vault
Securing sensitive data with Azure Key VaultTom Kerkhove
 

More from Tom Kerkhove (20)

Techorama 2022 - Adventures of building Promitor, an open-source product
Techorama 2022 - Adventures of building Promitor, an open-source productTechorama 2022 - Adventures of building Promitor, an open-source product
Techorama 2022 - Adventures of building Promitor, an open-source product
 
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...
Microsoft Partners - Application Autoscaling Made Easy With Kubernetes Event-...
 
Introduction to Promitor
Introduction to PromitorIntroduction to Promitor
Introduction to Promitor
 
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...
Azure Lowlands 2020 - API management for microservices in a hybrid and multi-...
 
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...
NDC London 2021 - Application Autoscaling Made Easy With Kubernetes Event-Dri...
 
Global Azure Virtual - Application Autoscaling with KEDA
Global Azure Virtual - Application Autoscaling with KEDAGlobal Azure Virtual - Application Autoscaling with KEDA
Global Azure Virtual - Application Autoscaling with KEDA
 
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
AZUG Lightning Talk - Application autoscaling on Kubernetes with Kubernetes E...
 
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...
IglooConf 2020 - API management for microservices in a hybrid and multi-cloud...
 
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...
Microsoft Ignite 2019 - API management for microservices in a hybrid and mult...
 
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key VaultAzure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
Azure Low Lands 2019 - Building secure cloud applications with Azure Key Vault
 
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...
Intelligent Cloud Conference 2018 - Automatically scaling Kubernetes pods bas...
 
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...Intelligent Cloud Conference 2018 - Building secure cloud applications with A...
Intelligent Cloud Conference 2018 - Building secure cloud applications with A...
 
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...
Intelligent Cloud Conference 2018 - Next Generation of Data Integration with ...
 
NDC Minnesota - Analyzing StackExchange data with Azure Data Lake
NDC Minnesota - Analyzing StackExchange data with Azure Data LakeNDC Minnesota - Analyzing StackExchange data with Azure Data Lake
NDC Minnesota - Analyzing StackExchange data with Azure Data Lake
 
Techdays Finland 2018 - Building secure cloud applications with Azure Key Vault
Techdays Finland 2018 - Building secure cloud applications with Azure Key VaultTechdays Finland 2018 - Building secure cloud applications with Azure Key Vault
Techdays Finland 2018 - Building secure cloud applications with Azure Key Vault
 
NDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data LakeNDC Sydney - Analyzing StackExchange with Azure Data Lake
NDC Sydney - Analyzing StackExchange with Azure Data Lake
 
TechDays NL 2016 - Building your scalable secure IoT Solution on Azure
TechDays NL 2016 - Building your scalable secure IoT Solution on AzureTechDays NL 2016 - Building your scalable secure IoT Solution on Azure
TechDays NL 2016 - Building your scalable secure IoT Solution on Azure
 
Integration Monday - Analysing StackExchange data with Azure Data Lake
Integration Monday - Analysing StackExchange data with Azure Data LakeIntegration Monday - Analysing StackExchange data with Azure Data Lake
Integration Monday - Analysing StackExchange data with Azure Data Lake
 
ITProceed 2015 - Securing Sensitive Data with Azure Key Vault
ITProceed 2015 - Securing Sensitive Data with Azure Key VaultITProceed 2015 - Securing Sensitive Data with Azure Key Vault
ITProceed 2015 - Securing Sensitive Data with Azure Key Vault
 
Securing sensitive data with Azure Key Vault
Securing sensitive data with Azure Key VaultSecuring sensitive data with Azure Key Vault
Securing sensitive data with Azure Key Vault
 

Recently uploaded

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

Building Bruges 2020 - Adventures of building a multi-tenant PaaS on Microsoft Azure

  • 1. Adventures of building a multi-tenant PaaS on Microsoft Azure Building Bruges – Tom Kerkhove
  • 2. Azure Architect Microsoft Azure MVP & Advisor Writes on blog.tomkerkhove.be Maintainer of Promitor, KEDA & Arcus Hi, I’m Tom Kerkhove 2 @TomKerkhove tomkerkhove
  • 3. Disclaimer You’ll learn about my adventures & findings, not about silver bullets 3
  • 4. 4
  • 6. Scale up/down June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 6 Scale | Easiest way of scaling is to get a bigger box | The only trade-off is that it means your app will be unavailable for a while | At some point you’ll run out of “bigger boxes”
  • 7. Scale out / in June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 7 Scale | Provide multiple copies of your application based on your workload | No impact on your uptime, but more complex | My preferred way of scaling, but your application needs to be designed for it
  • 8. Choose the right compute infrastructure June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 8 Functions Functions Container Instances Service Service Fabric Mesh Cloud Services App Service Fabric Kubernetes Cluster VM Scale Sets VMs Bare Metal | As control increases, so does complexity | Every service has it’s own characteristics | How you run your application | How you package your application | How you scale your application
  • 9. Designing for scale June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 9 Scale Order Function Order Function Order Function Order Function Order Function Order Function Azure Functions
  • 10. Designing for scale with serverless June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 10 Scale | The good | The service handles scaling for you | The bad | The service handles scaling for you | Does not provide a lot of awareness | The ugly | Dangerous to burn a lot of money
  • 11. June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 11 Source: http://blog.tdwright.co.uk/2018/09/06/beware-runonstartup-in-azure-functions-a-serverless-horror-story/
  • 12. Designing for scale with PaaS June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 12 Scale Instance Orders Role Cloud Services Instance InstanceInstance InstanceInstance InstanceInstance Autoscaler Message Count > 100, Add instance Scale!
  • 13. Designing for scale with PaaS June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 13 Scale | The good | You need to define how it scales | Provides you with scaling awareness | The bad | You need to define how it scales | Hard to determine the perfect scaling rules | The ugly | Be aware of “flapping” (http://bit.ly/monitor-autoscale-best-practices) | Be aware of infinite scaling loops Use an Azure Monitor Autoscale
  • 14. 14 Scale Node 1 Cluster Node 2 Node 3 Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Designing for scale with CPaaS Custom Metric Provider Horizontal Pod Autoscaler(s) Cluster Autoscaler
  • 15. 15 Node 1 Cluster Node 2 Node 3 Pod Pod Pod Pod Pod Pod Pod PodPod Custom Metric Provider Horizontal Pod Autoscaler(s) Virtual Kubelet Azure Container Instances Container Group Pod Container Group Pod Container Group Pod
  • 16. Designing for scale with CPaaS June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 16 Scale | The good | Share resources across different teams | Serverless scaling capabilities are available with Virtual Kubelet & Virtual Nodes | The bad | You are in charge of providing enough resources | With great power, comes great responsibilities | No autoscaling out-of-the-box | Scaling on different levels | Scaling can become complex(er) | The ugly | Takes a lot of effort to ramp up on how to scale | There’s a lot to manage
  • 17. 17 Application autoscaling made simple with Kubernetes Event-driven Autoscaling (KEDA) Event-driven & Azure Functions Support Vendor-Agnostic & Built-in Scalers Save resources with scale to 0 Multiple Workload Types Focus on your app scaling, not the scaling internals bit.ly/keda-webinar
  • 18. 18 Scale Node 1 Cluster Node 2 Node 3 Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Designing for scale with CPaaS Cluster Autoscaler Custom Metric Provider Horizontal Pod Autoscaler(s)
  • 19. 19 Use the tool that fits your needs Don’t use a service because you know it, evaluate your options Every technology has its trade-offs, learn them Don’t overengineer, “because we’ll need it later” You don’t need hyper scale from day I
  • 20. Create awareness around your autoscaling June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 20 Scale | Avoid burning money, get notified before it’s too late! | Gain insights in your autoscaling rules | Either configured by you or managed by Azure (ie. Azure Functions) | Learn from them and tweak them | Detect autoscaling loops in TEST instead of during live-site issue | Choose the approach that fits your needs | Configure Azure Monitor notifications | Use built-in metrics to visualize and alert on | Provide your own tooling around it
  • 21. Create awareness around your autoscaling June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 21 Scale
  • 22. Tips June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 22 Scale | Resource consolidation pattern does not play nice with autoscaling | Configure maximum instance count for your autoscaling | Provide representable metrics of your remaining work | Azure Monitor Autoscale is a hidden gem in Azure, use it! | Does all the great things an autoscaler should do | Use budget alerts, if feasible
  • 24. 24 Multi-tenancy is all about choices How will you deploy your application? How much isolation does it require between tenants? How much customization will we allow? Do our tenants need access to their data? Will it run in multiple regions? Will one region require multiple deployments? What is our pricing model? Do we need to reflect this in our tenancy? Multi-tenancy is more than data sharding
  • 25. Choosing a tenancy model 25 Tenancy App Stamp A Stamp B Stamp C Stamp D App Tenant A App Tenant B #n…#1 #n…#1BA Full isolation between tenants by deploying everything for every tenant Run a multi-tenant application, but use sharded data layer App deployed in multiple stamps & geographies with sharded data layer
  • 26. Choosing a sharding strategy 26 Tenancy | Spread all your data across multiple smaller databases instead of one big one | Good example of scaling out to handle load | A shard key is used to determine the shard based on the chosen strategy | Choose your strategy wisely and think about your query patterns | Does your customer need access to it? Then you should shard per tenant! | You cannot easily change your strategy later on | More information: http://bit.ly/sharding-pattern June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
  • 27. Locating shards June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 27 Tenancy Shard Manager How do I connect to “Sello”? Order Processor #5#4#3#2#1 #6 #7 #8 Use this connection string Get Secret “Sql-Tenant-Sello”
  • 28. Using shard managers 28 Tenancy | Provide catalog of all shard in the platform | Determine current shard based on shard key & chosen approach | Metadata is stored in a store of choice | Be careful where you store your secrets | Choosing a good shard manager | They should handle secrets in a secure manner | Build your own, ie on top of Azure Key Vault | Use existing tool, ie Azure SQL Database Elastic Tools June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
  • 29. Cost-efficient sharding 29 Tenancy #5#4#3#2#1 #6 #7 #8 Elastic Pool | In a PaaS world you need to pay for every data store instance you have. S1–5% S1–15% S1–5% S1–25% S1–50% S1–7% S1–21% S1–41% Use an Azure SQL Elastic Pools | We pay ~€200 for 160 DTU, but only use ~20 % of it
  • 30. Cost-efficient sharding June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 30 Tenancy #5#4#3#2#1 #6 #7 #8 Elastic Pool | Resource pools have a resource limit for all shards 7DTU 15DTU 8DTU 25DTU 24DTU 7DTU 40DTU 21DTU 93DTU I need more resources!!! We ran out, we only have 200 DTU 25DTU
  • 31. Cost-efficient sharding June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 31 Tenancy #5#4#3#2#1 #6 #7 #8 Elastic Pool | Enforce resource limitation on a per-shard level 7DTU 15DTU 8DTU 25DTU 24DTU 7DTU 40DTU 21DTU 50DTU I need more resources!!! You’ve had enough 37DTU
  • 32. | Provide multiple resource pools to reduce impact of noisy neighbors Cost-efficient sharding June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 32 Tenancy #5#4#3#2#1 #6 #7 #8 Resource Pool A Resource Pool B Resource Pool C 7DTU 15DTU 8DTU 24DTU 7DTU 21DTU 50DTU 37DTU 7DTU 15DTU 8DTU 24DTU 7DTU 37DTU
  • 33. | Reflect your pricing model in your resource pooling Cost-efficient sharding June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 33 Tenancy #5#4#3#2#1 #6 #7 #8 Basic Pool 37DTU 24DTU 5DTU 51DTU 63DTU 77DTU 158DTU 121DTU Standard Pool Premium Pool Provision 250 Standard DTUs , capped at 100Provision 100 Basic DTUs , capped at 50 Provision 500 Premium DTUs, capped at 250
  • 34. Cost-efficient sharding June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 34 | Consider moving all shards in a resource pool | Configure maximum consumption per database | Consider using multiple resource pools to reduce impact of noisy neighbor | Resource pools are a great way to reflect your pricing model | Monitor your pools as you would do for individual databases Tenancy
  • 35. Determining tenants June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 35 | Determining the tenant that is consuming your service via your API gateway | Map the authentication key to the registered application and use its context Tenancy API Gateway API DB POST api/v1/orders X-API-Key ABC POST api/v1/orders X-Tenant Sello Shard Manager What shard is “Sello”? Bill Bracket owns ABC. Part of “Sello” group
  • 36. Determining tenants June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure Tenancy <policies> <inbound> <base/> <set-header name="X-Tenant" exists-action="override"> <value> @(string.Join(";", (from item in context.User.Groups where item.Name.ToLower().Contains("sello -") select item.Name.Replace("Sello - ", String.Empty).Trim()))) </value> </set-header> </inbound> <backend> <base/> </backend> <outbound> <base/> </outbound> <on-error> <base/> </on-error> </policies>
  • 38. 38
  • 39. 39
  • 40. 40 Monitoring is a shared responsibility You only value good monitoring, if you’ve been on the other side of the fence Train your developers to use their own toolchain, use automated tests on live infrastructure
  • 41. 41 Enrich your telemetry Correlated all your telemetry to provide a logical flow, not just traces Provide app-specific contextual information to all telemetry Always return your correlation ids to your consumers Never track personal identifiable information Use different layers of correlation ids Use consistent terminology
  • 42. Correlate your telemetry 42 Monitoring Frontend API Order Processor DB Get Products Create Order Operation ABC Operation DEF Transaction / Session XYZ June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
  • 43. Correlate your telemetry 43 Monitoring Frontend API Order Processor DB Get Products Create Order Operation ABC Operation DEF Transaction / Session XYZ Cycle 123 June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure
  • 44. 44 Health checks No direct business value, until it’s too late Report status of your application - Is my application healthy? Is it ready? Use them to verify deployments, measure latency, up time, cold start, … Always provide throttling to block noisy consumers Think about your connection management Go as far as you want
  • 46. Handling alerts June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 46 | Always automate alert creation, they are part of your infrastructure as well | Build a centralized alert handling process | Azure Logic Apps is a good fit for this | Different alerts have different contracts | Use adapters to receive notifications | Map to internal metric contract | Handle via centralized alert handler Monitoring Azure Monitor Classic Alert Adapter Azure Monitor Metrics Alert Adapter Centralized Alert Handler Azure Monitor Common Alert Adapter
  • 47. Handling alerts June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 47 | Use the Logic App template for Azure Monitor! Monitoring
  • 48. 48 Write Root Cause Analysis (RCA) Train your team for PROD outages, write RCAs in all environments Did our alerts detect it? Did we have enough telemetry? Provides a structured way of analysing your platform Use as a knowledge transfer to customers & team Define action points and follow-up on them Use them to detect recurring issues There is no such thing as failure, only opportunities to learn
  • 50. Consuming webhooks June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 50 | Generated URLs are evil, provide good DNS names of your services | And this goes for everything, not only webhooks Webhooks API (12345.provider.com) 3rd Party POST https://12345.provider.com/api/webhooks Where did 123456 go?! API (67890.provider.com) Use an API Gateway
  • 51. Consuming webhooks June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 51 | Do not reduce your API security because of your 3rd Party Webhooks API (12345.provider.com) 3rd Party POST http://12345.provider.com/api/webhooks Where is your cert? Use an API Gateway
  • 52. Consuming webhooks June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 52 | Always route webhooks through an API gateway | This decouples the webhook from your internal architecture Webhooks API Gateway API 3rd Party POST http://sello.com/api/v1/webhooks POST https://sello.provider.com/api/v1/webhooks Authentication: Certificate
  • 53. Consuming webhooks June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 53 | Always route webhooks through an API gateway | This decouples the webhook from your internal architecture Webhooks API Gateway Orders API 3rd Party POST http://sello.com/api/v1/webhooks POST https://orders.sello.provider.com/api/v1/webhooks Authentication: Certificate Stock APISome gateways support auth key via query parameters
  • 54. 54 Provide user-friendly webhooks Think as a webhook consumer, not publisher. Provide a way for consumers to provide context during registration Provide a self-service CRUD API to register new subscriptions Pass your correlation id via Request-Id header Provide an invocation history
  • 55. Spaghetti infrastructure 2.0? June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 55 Webhooks Warehouse Service Order Service Stock Service Shipping Service Invoice Service Payment Service
  • 56. Spaghetti infrastructure 2.0? June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 56 | Long-term this can start to become a burden | A lot of bookkeeping to know who to update, how we should authenticate, etc | No central place to route all webhooks through | Your platform needs to be robust | What if subscriber II is not responding? Let’s build a retry mechanism! | Who says subscriber II owns foo.bar.com? | Webhooks should use a “I don’t care, here’s an update” approach Webhooks
  • 57. Event Routers June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 57 Webhooks Warehouse Service Order Service Stock Service Shipping Service Invoice Service Payment Service Event Router
  • 58. Event Routers June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 58 | Event Routers do all the heavy lifting for you | Provide a centralized hub for all things events | Bookkeeping of whom subscribes to what webhooks and events | They will retry sending events when they did not reply | They will perform webhook validations | Publishers can publish events to the event router and takes it from there | Great for for internal usage, but harder to use with 3rd parties | Webhook validation is not always easy to setup Webhooks
  • 59. Tips June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 59 | Webhooks are not durable, if you are not around you will miss it. | If you need to ensure at-least-once delivery, consider using a broker instead | Store audit entry of webhook that are being pushed | Can be important in case of a dispute | Optionally even include the response of the consumer | Do not only allow global registrations, consider serving more granular updates | For example, I want updates of one flight instead of all flights | Provide rate limiting on your webhook endpoints | Don’t let your platform go down by your 3rd party provider | Webhooks are contracts as well | Provide good documentation and version them Webhooks
  • 60. 60 Use Webhooks & Events internally Build fully automated reactive applications / data ingestion pipelines Decouple teams from each other Provide capability to extend
  • 61. June 2019 Adventures of building a (multi-tenant) PaaS on Microsoft Azure 61
  • 62. Azure Event Grid, the heart of Azure 62 Example | Azure Key Vault provides native Event Grid Events (preview) | This provides the capability to fully automate certificate management | The power of these events can leverage closer integration by other services such as Azure App Services, API Management who can consume latest version of cert https://blog.tomkerkhove.be/2019/05/28/azure-event-grid-the-heart-of-azure/
  • 65. 65
  • 66. 66 How we used to ship Stable releases every few years Hard to shift product focus
  • 67. 67 And then came agile…
  • 68. 68 DevOps Releasing Software to Production multiple times a day
  • 70. 70 You are not Netflix Manual interventions are evil, automate (as much as possible) Create automated pipelines for shipping software (deployment rings are awesome) Use infrastructure/build as code DevOps is a culture and requires a mind shift
  • 71. 71 We live in a world of constant change Our underlying infrastructure is constantly moving & changing Cloud vendors are competing to offer unique services Staying up to date is a lot harder
  • 72. 72 Who knows these services? Service Bus for Windows Server Azure BizTalk Services Azure Hybrid Connection Azure Alerts Azure Access Control Service Azure Container Services Azure Data Factory v1 Azure RemoteApp
  • 73. The lifecycle of a service 73 Embrace Change Private Preview • Rough version of product • Shared under NDA to limited group Public Preview • Available to the masses General Available • Covered by SLA • Supported version The End • Deprecation • Silent Sunsetting • Reincarnation in 2.0
  • 74. The end of the road 74 Embrace Change | Official deprecation | Officially announced as deprecated | Migration is required before service shutdown | Reincarnation | A new version of the service arises in a new version | Can be part of service or service in total | Silent deprecation | No further development in the product | Service is still running smoothly | Does not mean you should stop using it Azure Access Control Service, Azure Scheduler Azure Data Factory (Service) Azure Functions (Host) Azure Cloud Services? Can also be tooling cfr. Azure DevOps Cloud- based Loadtesting
  • 76. 76 Let’s use the shiny one, right?! Maybe.
  • 77. 77 Choosing an Alternative There is no silver bullet Use the tool that fits your needs, not perse what you know Be careful with the latest shiny technology Decide as a team Build or buy
  • 78. 78 Questions you should ask What is the learning curve? Is it worthwhile? Does it have a vendor lock-in? Is it operable? Does it have a future?
  • 79. 79
  • 81. 81 Code - .NET Core Packaging – Containers Hosting - Open Application Model (OAM) Eventing & Webhooks CloudEvents Service-to-Service Service Mesh Interface (SMI) App Portability Toolbelt Telemetry OpenTelemetry
  • 82. 83
  • 83. 84 You learn by doing And sometimes, you regret your choices.
  • 84. 85 Cloud platforms are never finished Your platform evolves, and so does its needs Prepare for your migrations Nothing is written in stone Use a product mindset Change is coming, so you’d better be prepared
  • 85. 86 Stay up to date with Azure Deprecation Notic Dashboard with deprecation notices concerning Azure services, regions, features, APIs and SDKs Search for services which you depend on @AzureEndOfLife on Twitter https://github.com/azure-deprecation/dashboard
  • 87. 88 Conclusion Technologies have scalability capabilities & trade-offs Provide user-friendly webhooks & route them via API gateways Define & roll out a good monitoring strategy Automate everything, it will save you one day You build it, you run it We live in a world of constant change, so be prepared

Editor's Notes

  1. Get it out early and see if customers want this; if not, kill it
  2. Get it out early and see if customers want this; if not, kill it
  3. You will need to make big decisions up front, which can turn out to be bad ones – Be prepared!
  4. Ideally you have “session id”, “operation id” & “cycle id” Easier to troubleshoot in case of support cases
  5. Ideally you have “session id”, “operation id” & “cycle id” Easier to troubleshoot in case of support cases
  6. How could this have been prevented? Did we have enough telemetry & alerts? Who was impacted? Do we need to send out communications?
  7. This context will be delivered along with the effective payload Registering is one thing, opting-out or getting an overview is another story This can be important for migration reasons or in case of bugs causing bad subscriptions This helps consumers troubleshoot why events were not delivered Allow them to search on correlation id Would you like to consume your webhooks?
  8. Get it out early and see if customers want this; if not, kill it
  9. “This new technology fixes our problem!” and potentially gives you a lot of new ones Make sure it’s already stable
  10. “This new technology fixes our problem!” and potentially gives you a lot of new ones Make sure it’s already stable
  11. ADF vs SQL Agent