What is Sitefinity recommended way to maintain a production site?
My goal is to run a Sitefinity Production site where end users can add comments to forum & blog posts. And where we can maintain it by adding new themes, widgets or whatever.
I can see how to do the initial deployment, but remain unclear how to push incremental updates to the production system without putting the live data at risk.
I'm sure this is core functionality that everyone does but I've not found a Step by Step guide. Could you please explain the best practice around this?
Note: I intend to use Azure Websites on SQL Server & maintain it via Visual Studio & Sitefinity Administration pages.
As this is a real showstopper for us I'd appreciate any insight you can provide.
=====================
Background
========
I've spent weeks researching this but am confused by my options so feel I'm over looking some feature.
I've attached what I've concluded so far, please correct me where I'm incorrect.
SiteSync (Staging & Syncing Module)
Sync is One Way: items on current server are published on configured servers.
You can create a filter so it only syncs some objects. But this may not protect you if a new widget needs to update a production table that contains user data.
Issues:
1. As the production server is being updated by end-users, ie forum posts or blog posts. The DEV instance will never be as up-to-date as production. How are conflicts handled? What happens to this data? Is there a risk it will be overwritten?
My Understanding: There is no conflict detection, production data will be overwritten. What is the Use Case for this feature? Is it only applicable to sites which turn off social widgets & are publish only? Or have I underestimated it.
2. SiteSync only syncs content not the database. So what happens if I make a change that writes to the Sitefinity system tables &/or creates new schema? eg :-
a: Add a module or new dynamic content. (isn't it using code first to make changes to the database schema?)
b: If we make changes using the Admin tool on the production site, Do they change any DB schema? Is there a risk of any Settings or Config change being partially overwritten?
Thunder: "Deploy Sitefinity to Windows Azure".
What does this do? Other than edit config files & push files to Azure. If it needs to update database schema, is the existing data safe? Or are the tables just dropped & recreated?
Issue
1. I can't get this feature to work. Currently it requires an old version of Azure SDK (v2.6) which is no longer available for download. It doesn’t work with the latest Azure SDK v2.81. v.2.6 was superseded by 2.7 on 30th Sept 2015.
Is Thunder due to be updated soon?
Sitefinity Azure Powershell Deployment Scripts
These are far from production ready & seem to be a single use, purely to create the Azure site. If run again they are likely to overwrite the production database & all the data it contains. They also don't work at present due to the breaking change in Azure Resource manager API.
I have spent a bit of time looking at these, happy to discuss & share enhancements with an interested Sitefinity person.
SQL Server Management studio (SSMS)
This is by far the simplest option for the initial deployment of the database. But lacks the intelligence to sync any incremental updates to Sitefinity.
See: Object Explorer => Databases => Tasks => "Deploy Database to Windows Azure SQL Database"
SQLPackage "Publish" option.
This can push schema changes to production. But I'm concerned that many of the Sitefininty changes are both schema & also data rows in a control tables.
This tool would require knowledge of the Sitefinity control tables to synchronize reliably & it doesn't have that.
There is a risk it will clobber the produciton data in Sitefinity control tables
Create a Visual Studio Database project
Use the compare schema & compare data tools to track changes & manually push changes. This would work, but is time consuming & would require significant knowledge of Sitefinity internals to detect conflicts & fix reliably.
V9.0 Export for deployment
Is this the solution?
Its not clear to me if it is only copying files. OR if it is extracting all changes from the database & the filesystem. Producing some script & running that on the production server.
If so, what happens to existing production data? Does the developer need to ensure they don't chage the wrong thing OR will it ensure production data is not accidentally overwritten by the update.
--------------------------
Hello,
This is a common scenario you are describing.
With Azure this is easier than ever because Azure SQL databases have built in backup features with point in time restore. Check out this article: azure.microsoft.com/.../
With Azure I would recommend this setup: docs.sitefinity.com/deploy-projects-to-azure-web-apps
Normally you would have of course a local copy of your Sitefinity project with a fairly recent copy of the production database. When you wish to upgrade Sitefinity you perform it on your local machine and ensure it runs smoothly, fixing any issues you come across.
Once you are happy, you deployed the modified files (dlls) etc to the production environment and sitefinity handles the database upgrade automatically: docs.sitefinity.com/upgrade-projects-running-on-windows-azure
I hope this helps.
Regards,
Seth Cleaver
Telerik