Thursday, June 7, 2012

Evaluating Application Release Management tools combined with TFS ALM to deploy into Windows AZURE

[Sorry, duplicated post. See original: http://memoprojects.blogspot.co.uk/2012/06/evaluating-application-release.html]

Evaluating Application Release Management tools combined with TFS ALM


This post aims to start a list (not exhaustive) of Application Release management tools that complements TFS for customizing and delivering complex deployment scenario on the Windows Azure platform.
Here are some options InRelease, Nolio, attunity, UrbanCodeRightScale, New Relic,  Microsoft System Center (or more specific MS SC Orchestrator, previously called Opalis), Octopus, AttunityCodePlex TFS Deployer, MSBuild, MSDeploy, TFS ALM workflow (*) 
(again, we could find a lot more).

Update (July 2012): OpenSource Chef, from Opscode ==> VP of Product Management, George Moberly, demonstrates Chef's integration with Windows Azure at Microsoft TechEd Orlando 2012http://www.youtube.com/watch?v=il8lI7_FHP4

[update] Other realease management tools listed here: http://www.lbms.cz/Reseni/Serena-Release-Manager/pdf/Serena-Ovum-rainbow-map-for-DevOps-solutions.pdf


I have not assessed them all since it would take ages. However, I started to short list some of them according to our needs & priorities. If you are a vendor, please take a 5 to 10 min survey : http://fluidsurveys.com/surveys/intuitive/deploy-management-tool/
To be fair with all short-listed vendors (I am open to any solution), I will provide them 2 or 3 pages of our needs so that they could convince us with a 1 hour customized demo.
(*) TFS ALM used to deploy in Windows Azure. TechDays 2012 France Mise en place d'une démarche ALM avec Visual Studio pour Windows Azure (ALM206)
---------
Claude Rémillard, the Product Owner of InRelease allowed me to publish his answers. It’s “row” data, so forgive the presentation:
* Company website = inreleasesoftware.com
* Product name = InRelease
* User roles are usually supported by the tool:
    .Developer (in a Continuous integration environment)
    .QA for User Acceptance Tests
    .Release manager (approval)
    .Release engineer
    .Non-regression team (approval)
* The application is "Agile" enough to deploy more than once a day
* Support Windows / .Net code deployment
* Requires the installation of an Agent on the targeted on-premise server
    . But Not needed for the Cloud
* Automated provisioning for Microsoft Windows Azure Cloud
    . Possible, but not done out of the box. Complete support for Azure is on our roadmap.
* Support DACPAC database deployment
* Could trigger: Batch or PowerShell or Installshield
    . We support anything tool that can be triggered from a command line
* Each deployment path (e.g. Dev / Integration / Demo_Version / Production) can be composed of re-usable sub-validation-blocks (e.g. path Dev = Dev+QA+STAGING+VALIDATION+PROD , and SalesDemo = Dev+QA+PROD)
* Can be used as Standalone as well as triggered / integrated with TFS 2010
* Has the ability to run in parallel processes
    . Currently, we have sequential steps per server, with parallel servers installation. In the coming months, we will support full sequential and parallel processes.
TRACEABILITY
* Ability to connect to a database for audit trail (who deployed, when, which path, validators...)
* Can send emails to a mailing list
* Can visualize workflow of deployment in real-time during deployment
* Monitoring multiple simultaneous deployments ==> Partial. Can be done, but not all deployments are shown on one screen.
* Can perform pre-deployment checks ? (e.g. sufficient disk space ?)
* Can you capture and report on metrics (e.g. start-end time of each step of the process) ?
* Can you block a deployment if not all approval has signed-off ?
* Can schedule the deployments (date / time), with support restart of the deployment cycle, to recover from service interruption

* Support on rollback ==> Current support for rollback is limited to redeploying the last version that was installed. Plans to support rollback (by providing a rollback step for each installation step) is planned for the coming months.
* Possibility to centralize all configurations / variables (Web.Config, connection String, ...) ==> Different values per environment for variables are entered in InRelease. At deployment time, InRelease will then copy the values for a specific environment in the corresponding configuration file.
* How are those configurations presented to us (eg. table per deployment path, XML file...) ==> In InRelease, in a table per application/environment.
* How do centralize passwords (eg. SQL Server accounts, Service Accounts, Logins, ...) and restrict the access. In which container those passwords are stored (e.g. XML, database, ...) ==>     Password are entered directly in InRelease, encrypted as soon as they are entred, kept encrypted in the database, and only decrypted on the target server where the deployment is made.
* One-time cost ==>    > $ 2001 (No recurring charge)
* Size of the company     < 50
* Number of customers     < 50
* Why we should purchase your product ==> We are a company with a long ALM background and we are very close to our customers. Fast support, we listen to the needs of our customers and are constantly improving the software based on their feedback.
* PS. I saw that you are located in Paris, do not hesitate to communicate with us en français if you prefer!