Designing an Architecture

The first step is to lay out the required functional blocks and the second step is to define how these pieces connect to one another. The last step is to evaluate available, off-the-shelf software packages to see what you can buy and use versus paying someone to build them from scratch. How do you determine this? The following is a sequential list of questions:

1. Are there off-the-shelf components that meet key functional needs?

If the answer is no, then your evaluation is over.

2. How much do they cost to buy and to maintain?

Licensing and support contracts are easy to measure. You should also consider the ease of operational maintenance. For example, if you're using a large, complex, off-the-shelf component to fulfil a simple function, it may be costing you more to keep that component running than it would to build your own software internally to perform the same function.

3. How much would it cost and how long would it take to build internally?

Be careful here. Internal engineering projects are rarely overestimated. Ensure you've factored in all the less tangible, less obvious benefits of an off-the-shelf product. For example, an off-the-shelf product probably has documentation, it's probably been field tested by other customers, operational infrastructure (like logging, upgrades) is likely to be more advanced, and the vendor is probably making continual updates. As a bonus, there's probably a population of engineers who know how to use it. None ...

Get Starting a Tech Business: A Practical Guide for Anyone Creating or Designing Applications or Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.