Wednesday, June 4, 2008

BBNC Development Environment Revisited

I did a post while back about standing up a development environment for BBNC. Well, I decided to address this subject again because a few things here have changed and I’ve had to take another look at how we approach our own development environment.

When I wrote my earlier post about this I was really the only web developer. We have since hired a second full time developer and a summer intern, both working on projects in BBNC. We also have a database admin that is touching code a bit more than before. I quickly started to notice some flaws in the old development approaches.
  • It was really hard to share projects – zipping up code and emailing them to each other just wasn’t going to fly.
  • It's tough when more than one person develops on the same dev server. Every time you build a project in Visual Studio causes IIS to re-compile. This slows down everyone.
  • Versioning is important because we now have two people that are learning BBNC & touching code. These are smart guys but I needed to make sure we could roll back changes if needed.
  • Backups. When it was just me it was O.K. to have the code on a laptop and back it up daily but managing backups of code that's not centrally located was going to be tough. All the code still needed to be in one place.
While my solution isn’t ground breaking, it’s actually pretty simple, I mention it because there are unique challenges when you add BBNC into the mix. Here is what I came up with.

Now, I'm not that good at graphics and this was really my first attempt at using Powerpoint Shapes for anything other than a square so bare with me while I explain what's happening.

First off all our code files are securely located within SourceSafe in our internal network and they are backed up every night. We don’t have any valuable code sitting on a laptop anymore. SourceSafe also provides the versioning control we now need and it prevents us from accidently overwriting or loosing changes others made.

Each laptop has a web only install of BBNC with a connection back to an internally located BBNC Database server setup for development only. The live database isn’t sitting on a laptop that can get stolen so all of our constituent’s info is safe and secure. It’s also backed up every night. In addition to that since all the developers share the same database and that helps a bit too when you are sharing projects. When one developer sets up a custom part in BBNC it’s available to everyone else all they need to do is just get the updated code from SourceSafe and re-build the project locally.

Another spin off advantage is that this method works really well when developing off-site via VPN. Since most of the heavy lifting is done locally in IIS there isn’t much overhead heading back to the internal network. I actually don't notice much of a difference in speed on VPN compared to when I'm in the office.

So I hope that helps some of you. Expect another screen cast soon once I find a bit of free time to put one together.

No comments: