development environment version control

How do you handle a situation where there are no seperate development and integration environments? Like we have a development web server and database server. Each developer using TFS gets code into their local machine, checks out-makes changes-checks in. While doing this they are changing the development database using stored procedures etc. Sometimes this is breaking build. when this happens some developers are stuck until others are done fixing it. I am not sure if they will add another integration environment. In my previous projects we had a build engineer to do the automation builds.

How do i add automation to build in this current environment? we work with visual studio 2013 for asp.net, TFS and sql server 2012. I haven't worked with tfs earlier(i mean using API for automating builds etc) .

Should we have another copy of sql server development database?

Thanks for your time.
JyozealAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

LajuanTaylorCommented:
In general it's considered a best practice to have separate servers for development, staging, and production. That's where having an infrastructure that can support vritualized devices can be very beneficial...

If you are currently limited in requesting new server builds, there are some options. Although, they are not ideal it could possibly benefit your current situation.

Please note this information is general because I don't know the specs of your devices - physical, virtual, RAM, disk space, processor, etc.

Assuming that you are stuck with one web server and on database server, here's what I suggest:
Single Web Server -
Configure IIS to support multiple host names on a single IP address. You could then have dev.mydomain.com, staging.mydomain.com, and prod.mydomain.com.
See one of many video tutorials https://www.youtube.com/watch?v=nK0wsS9xF4E 

Single Database Server
Since you would need an additional licenses and system resources to run a second instance SQL Server on the same machine, I suggest that you make copy of your database for development and staging on the same server. There's plenty scripts and tools to keep the data synced.

You could add conditional logic in your application to automatically switch databases depending on which site the code is running from...

A great and affordable product that can be used as a standalone or with TFS is called "Beyond Compare". I believe it can help you facilitate automation of your source code changes:
http://www.scootersoftware.com/support.php?zz=kb_scc_tfs
0
JyozealAuthor Commented:
Thanks for your comment. we do have separate servers for development,staging and production. But while doing development few times build is broken and other developers wait for particular piece to be up and running. I would like to know how to avoid this?

from your comment i think having another copy of DB on DB server seems like good option. So developers can use their local machines with this DB and development server can use another copy.

I would like to know if more options are available and also about automating the build process.
0
LajuanTaylorCommented:
This can be tricky because good technology can't always compensate for development snafus or process workflow break downs...

I would first make sure to document the process i.e. workflow that the Team needs to adhere to before releasing any code or change that might impact your systems.

You could implement a Software Change Management process without buying anything for starters.
Example:
http://www.itassetmanagement.net/2013/09/10/process-month-software-change-management-process/

Your automated build process could be handled by using a Release Management package. The following link is from Microsoft Virtual Academy and it focuses on Release Management for Visual Studio:
http://www.microsoftvirtualacademy.com/training-courses/devops-visual-studio-release-management-jump-start

Also, take a look at the following RedGate article that discuses the benefits Automated Deployment. It provides some product recommendations - Octopus Deploy which, has a free Community Edition
http://blog.red-gate.com/5-big-benefits-automated-deployment/
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Version Control

From novice to tech pro — start learning today.