views:

114

answers:

1

How do you manage development and deployment of a n-tier system that's made up of multiple websites, desktop applications, web services and databases that have a mix of dependencies?

Assume that you have a continuous integration environment with source control and automated builds.

+1  A: 

This is something you'll find hard to achieve. However, one thing we do is to make sure that each distinct part of your system does the appropriate sanity checks, for example your data access layer will do something like:

public void OnStart(){
    if(database.SchemaVersion != this.RequiredDatabaseSchemaVersion)
        throw new DependencyException("The database was not the required version");
}

This example is totally trivial, but you should get the idea.

Another thing you can do is make sure that when you package your app you package it as one unit. So someone can do something like:

MyApplication_v1234.msi /install web_app
MyApplication_v1234.msi /install web_services

Obviously this depends on how you plan to distribute your app.

Hopefully this gives you something to think about.

jonnii