5. Umbraco CMS as a Service
Open Source (since 2005) .NET CMS
6. Private preview Q4 2014
Launched in Q4 2015
Powering sites like Carlsberg, Coop, Danish Football Association and more
7. Running on Azure VMs, infrastructure similar to Azure
App Service
Each Environment has its own Azure SQL Database
All databases are in Elastic Database Pools
Powered by Azure
13. Azure SQL
“Azure SQL Database is a relational
database-as-a-service (DBaaS) based on
the latest stable version of Microsoft SQL
Server Database Engine”
23. Pricing example
Elastic Database Pool with 100 eDTUs and 200 databases:
~185.97 EUR / Month
200 x S1 databases (€24.83) = €4966 (break-even at 8 databases)
200 x S2 databases (€62.02) = €12404 (break-even at 3 databases)
24. Benefits of
Azure SQL
• SaaS context
• Single Tenant databases
• Less Management
• Price vs Scale Flexibility
• 30 days point in time restore
• Retention period for deleted databases
57. Summary
• Create up to 8 Pools per SQL Server
• Create 200 databases per Pool
• Maintain queue of available ”slots”
• Ensure deleted database ”slots” are re-used
• Self-provisioning services are fun!
Umbraco Cloud – WHY
Azure SQL – WHAT
Provisioning – HOW
Putting it into a Service - HOW
We don’t want our customers – especially new customers, to wait until a Project is made available to them.
What is involved with the creation of a single Project.
This can easily take up to 10 minutes.
And obviously the database creation is an important part of this.
DTU-based purchasing model exampleAt least two S3 databases or at least 15 S0 databases are needed for a 100 eDTU pool to be more cost-effective than using compute sizes for single databases.
Show a database growing in size according to Scale ->
Most of the time an S1 (20 DTU) database will work fine, every once in a while an S2 (50 DTU) would be better and for whose rare spikes an S3 (100 DTU) would be ideal
Less than a euro per database per month for the Elastic Database Pool version
Copying files around is easy, and managing git repositiories is also fairly straight forward, but what about the Azure SQL Databases and Elastic Pools?
The Azure quickstart documentation often has an overview like this … but there is nothing about the Management Libraries
Find it on github – and nuget
Some mentions of the SDK under ” Azure for .NET and .NET Core developers”
Should be part of Visual Studio development tool for .NET
Create a Service Principal using the Azure Cloud Shell
Locating the Service Principal under the current Subscription
<< Show Code running and creating a Resource Group, SQL Server, Elastic Pool and Databases >>
A Windows Service
The purpose of the Preallocation Service is…
What is involved with the creation of a single Project.
This can easily take up to 10 minutes.
When we start from Scratch
We create a Server in our Resource GroupWe create an Elastic Pool on our ServerWe create databases within our Elastic Pool
Database Availability Queues
Project Queues
… first the pool is empty
But we have space for 200 databases
So we put those ”availability slots” into a queue
(and don’t worry, we don’t have to wait for 200 cylinders going into that other cylinder)
So when we need a database for a new Project we are creating,
We can then just get an availability slot from our availability queue.
It contains details about the RG, Server, Pool and Database
When the Project is ready we put it into a Project Queue.
This allows us to have Projects available.
And so we can continue to create Projects using messages from the queue about availability
And we’ll start filling up those Elastic Pools
When a customer then creates a new Project, we retreive an available Project and assign it to a user and update the hostname
When a Project is created the database should go back into the queue of available database ”slots”
In certain situations we want to position a database ”slot” first in line.
At other times we just want a regular first in, first out.
Maybe we could supplement with an additional ”high priority” queue.
Ensure full utilization across the board aka make the CFO happy
After running this service for a while, with maintenance, development, feature ideas and more
That its doing too many things, which makes it increasingly difficult to maintain it as a reliable service.
Automatically balance databases in our elastic pools in order to keep our CFO happy
So we can hopefully get funding for our trip to Bali