We are discussing whether or not to deploy OutSystems on Microsoft azure to implement a hybrid solution (Dev and Test in the OutSystems cloud and Prod on ms azure).


https://success.outsystems.com/Documentation/11/Setting_Up_OutSystems/OutSystems_on_Microsoft_Azure/Set_Up_OutSystems_on_Microsoft_Azure

with this OutSystems provided a neat template to create a full OutSystems solution on azure.

For that I have the following questions:

1) What are the different Settings for the databas Server and the databases? Our current Production environment has 100GB database storage. So I would like to keep that as a reference. However I don't know the details for that databse or what is recommended by OS. (For the VMs it is F4s_v2; but no details on HDD /SSD space either)

2) What is the average cost per year/month of a Production environment on azure? 1 VM, 1 SQL Server, 3 Databases. The cost is highly dependend on the settings (hence question Nr 1)

3) Is it possible to create the Solution via the template and simply delete everything not needed afterwards (Sorry for that OS dev team. I read your blog post about how this template came to life and understand a considerable amount of work went into automatically setting the dependencies)? 

Solution

Hi Philipp


I have used the template a few times, and have some experience with arm  templates and running OS on Azure, so here's my 2 cents about this topic.


For a lot of questions you are asking the first answer that comes to mind is 'it depends', so it's very hard to provide you with a solid answer without knowing the exact scenario, but I will try anyway;)


1) We often use the general purpose serverless option. This way you can setup a pretty fast server, and pay only for what you use (expect the storage that is used of course). A great way to save on cost is tho enable the auto-pause so the db is not using any cpu when not used. of course this also requires some similair setup for your vm's . Note that there is a point where the serverless option is cheaper, and also one where the normal  'DTU' sizing is better, which you can find out with some experience and the azure cost calculator. 

2) Think of somewhere around 1000 euro azure costs per month, assuming a slightly trimmed down standard setup which OS reccommends.  Can be greatly reduced by using auto scaling vm's and database. Can also be much much more when you size up or use decent load balancing or other features. 


3) The arm template now only provides a whole environment (dev/test/prod) into one single resource group, and that is acually something you don't want in real scenarios. For example: It is very common to have non-production and production subscriptions seperated. Also I prefer to use seperate resource groups for the environments, so I can managed and monitor them much better.

In earlier versions of the OutSystems ARM template, you could just remove what you don't need, and spin up the changed template to for example only roll out an production environment. More recent versions introduced some linked templates that reside on a storage of which we don't have a sas token. It's logical we don't have that token, but this renders the template impossible to change by us.
The short answer; you can roll out the whole environment and delete the ones (and all resources connected)  you don't need. 

Hope this helps you!

Regards,
Dennis

Solution

Thank you very much.