Just like most of the Developers out there, I am comfortable with solutions being developed in development environments, tested in test environments and then eventually moved to production for end users.
But, I am seeing this practice challenged more often than less in the recent years. Many customers dont want to have these multiple environments in place for many reasons – effort, cost, etc. I have worked on projects where there was only a single production environment. I have also worked on projects with up to 7 different environments – PoC/Demo, Dev, Test, UAT, Staging, Prod and DR.
The advances in Software and Hardware Virtualisation is helping with creating and managing various environments for development, staging, DR, etc relatively easy and cost effective to some extent. Cloud is seen everywhere these days and it is also making the expectation of having an always on infrastrucutre, cheap and resilient to become a reality in many cases. For those who can use Cloud, it will make creating multiple environments easy.
Regardless of the lesser cost, I also think that high use of Cloud will push the demand high for the ability to do dev, test on a single production infrastructure. This deman will change the way products and solutions are being built and delivered on and off the Cloud. IT professionals will need to look into this seriously. We need solutions that can be developed, tested and deployed on a single production environment safely. This will mean some sacrifices. This wont be possible for all scenarios. But, we need to look into this aspect on all our projects.
I am not saying we just develop for production on production. I am saying we need to look at using a single production infrastructure and use it for development, testing, etc. We must still use best practices around configuration management and release management. but now we have to do it all on the same infrastructure.
There is a danger that this may encourage systems to be built without consideration for deployment on different environments. But, that can be managed. The benefits of less deployment issues, lesser management overhead & lower costs should not be underestimated. We still need to adapt best practices to cater for this new scenario I am advocating.
SharePoint is a good example of a product where you could actually have Site collections for Dev and Test on the single server infrastructure. The SandBox is also making testing of these solutions easier (although I think the implementation is very limiting for a developer in this release). Speaking from my experience with K2, its inherent ability to manage various environmental configurations has been a great help for me in almost all projects. In my view, K2 and SharePoint are ideally placed for implementing DEV and TEST on PROD.
I will keenly watch this space.