What do you do if a major component of your architecture breaks, and your vendor is unable or unwilling to support it? What if your vendor has gone out of business? What if they’ve decided to kill the product line you’re using and replace it with something new and incompatible?
This scenario is bad, but there are some things you can do to defend yourself against it.
1) Use the facade pattern to create a wrapper layer around the vendor-specific API. This allows you to isolate your dependencies on the vendor’s API to a single class. All other classes interact with the vendor’s API through your facade class. If at some point you need to replace your vendor’s product with a different one, you can do it by simply rewriting a single class.
2) Stick to open standards where possible. (I’m thinking mainly of the Jave world here, because that’s where I do most of my work). Most vendors of JEE products offer helpful extensions to the JEE core standards. You should be cautious about using these, and if you use them, isolate them behind facades as in 1) above. If you stick to the core standards, you’ll have a much easier time migrating to another platform if it should become necessary.
3) Have a backup plan in mind. If working with Vendor A becomes problematic, you should have a Vendor B lined up, and at least a rough plan to switch to Vendor B.
4) Think open source first. Open source is not a perfect world. It generally requires more work to set up and manage than commercial products. On the other hand, you have access to the source itself, so you have the ability to diagnose problems to the lowest level, and the ability to fix the problem yourself if need be.
5) Don’t be a pioneer. Stick to technology that’s widely used and well-understood. When you stick to well-known and widely used products, chances are that most of the major bugs have already been run into and solved by someone else, or at least documented. When you use a brand-new or little-used product, there’s a good chance that, if you run into a problem, you’ll be the first one to do so. You may need to spend considerable time convincing your vendor that the issue is a real issue, more time for them to figure out what to do about it, and yet more time for them to provide a fix. Worst case, you might have to wait months for a fix.