Development and Operations are both critical to IS/IT usage in an organization, but operations often look at development as something alien – from another planet (and developers have the same view on operations). Having worked in both development and operations I often claim that development doesn’t know operations and operations doesn’t know development.
Development and Operations are both critical to IS/IT usage in an organization, but developers often look at operations as something alien – from another planet (and operations have the same view on developers). Having worked in both development and operations I often claim that development doesn’t know operations and operations doesn’t know development.
Let’s have a look at some common developer opinions about operations.
They don’t understand deployment.
What they do is unqualified compared to what we do.
How hard is it really to build a proper backup solution?
One of the features of Entity Framework Code First is to automatically create the database on first access. It is a convenient approach in many cases. Unfortunately the applications I work with does not fall into one of those cases. The applications I develop typically run on a dedicated web server, with the database hosted on in a shared MSSQL environment somewhere nearby.
The shared MSSQL environment is often set up using advanced clustering and virtualization technologies to maximise performance and reliability. In such an enviromnent my code seldom have access rights enough to create a database and even if it did, automatically created databases is not an option. Databases should be created by a DBA that carefully chooses the right name of the database, the right place for data and transaction log files and applies the right growth settings for the files.
To work with the shared MSSQL environment the application shouldn’t to any automatic creation or updates to the database schema. On startup I only want the application to check two things:
that the database exists
that the database is compatible with the model in the code.
Only after those checks have passed I want the application to run. A custom database initalization strategy can do those checks and throw exceptions that prevent the application from running if there is no existing and compatible database.