« | Main| Source Code Control and Version Management in Lotus Notes »

Application development in production anyone?


Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 

While traveling to customer sites, I see many different setups for developing notes applications. Developing in production (yes, more times than you would think), two tier environment (Dev and production servers), and the recommended three tier environment (Dev, Test, and Production servers). Some people have separate domains for dev work, QA etc.

Two real-world instances I've seen in the field come to mind that document the perils of making code changes live in production.

1) Developer adds new columns and makes other changes to a View used for keyword look-ups. His code apparently functions as he expected when he checked against a particular document. However the changes made to the View broke many of the look-ups used from agents that run as background processes. Suddenly the sales team cannot quote, or sell at all. Coincidently, the backups had not been operating. It took 2 days to recover. With estimated lost revenue at approximately $750,000 USD.

2) Developer fixes some minor bugs and typo's (one of them a field name) on a Web-based application. Runs an agent to update all documents. And the data is updated correctly. However, because the Web-based Agents in the database contained the typo as well, they failed each time someone tried to open a document. Because the document was never opened, updates were not applied and critical client information was lost. This went on for 2 weeks before it was noticed and corrected. This cost his company 2 long-term customers at about $5 million in revenue per year.

Had the developers in both these cases run the applications through a proper test cycle, both instances likely would have been caught. The reason not to run the application in test was always because the changes were minor and there was expected to be minimal impact on the operation of the application. So do you still think the idea of developing in production makes sense? I'll bet many of you have had similar experiences. Don't be shy. Let's hear them!

Comments

Gravatar Image1 - At an employer about 8 years ago, when they had just started I built a Customer service Application in Live whilst people were using it...

IT was soooo much fun... seriously

I developed an initial application, demo'd it, the business liked it so we put it in.

They started using it ,emailing me functionality that would be usefull as they used it, based on customer interaction.

When I got an email I would do the dev in the template on the live server and then refresh the design. Then shout across the office that the functionality was in.

This was such a cool way of working the level of interaction between developer and end user was fantastic.True RAD.

That application is still live today, and ohh my god if you look at the underlying design its S**t, but its still working, still functional. (I am in the process of proposing a complete re-architecture of the app!!).

In reality I would never want to work that way again, and only got away with it because the company was so new and so small...

But it was exciting !Emoticon Emoticon

Gravatar Image2 - I'll stay anonymous for this story . . .

I added a new agent to a db in production to alert Marketing of certain information.
A little while later, the Marketing called me to ask why I had just sent her 30,000 emails . . . and counting.

In this case it wasn't a career-limiting mistake. If the email had gone to a larger group of people it would have been a *real* problem.

The moral of the story:
a) Don't develop in Production
b) Test everything
c) If ignore these rules, make your changes using someone elses ID!

Gravatar Image3 - "The reason not to run the application in test was always because the changes were minor and there was expected to be minimal impact on the operation of the application". How many times have I heard that? There is no excuse whatsoever for allowing such cowboy behaviour. The companies deserve what they got for allowing it to happen.

Gravatar Image4 - Changing a field name is never a small change.
Apart from that, I believe that it really depends on the size of the company. We have about 250 employees and I'm the only Notes admin and developer and I do develop on the production server. Mostly it's adding functionality without changing what's already there. Or the database is completely new and only acessible for a few test users.
In the rare cases where documents change, I use local replicas to test the impact.
For such a small company, it just makes no sense to use two or three separate environments.

Gravatar Image5 - Thomas, while I agree with you to a degree, I don't think size of company should make a difference. What it comes down to is 'Just Enough'. I think there should be no reason not to have a separate development environment at least. It may be that the test 'environment' is just a sub directory in production or development, but doing any sort of development in production can only lead to trouble. It only takes a single mistake in an agent that adds 25,000 documents to a production application that replicates out to other servers.... believe me... I speak from experience Emoticon !! Why wait till a mistake happens and management come asking serious questions?

Gravatar Image6 - I'll go further than Craig - I wouldn't ever use the production server and separate subdirectories, because there's no reason not to run a Domino server instance on your own computer and use it as a development environment. That way you can test web apps, server-based agents, security - things you can't verify just by using a local replica. Domino can run on just about any hardware out there - even V7 can run in less than 128 MB of RAM (haven't tried that with 8 yet, but I bet it runs fine). It's really not that hard, and the benefits are enormous.

Gravatar Image7 - I agree with Thomas to a limited degree. The thing is when you are chief cook and bottle washer - tiered development takes a lot of discipline. It is certainly challenging for first timers, however Stephen Wissel had a nice blog entry on templates that showed me the light { Link } .

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)