Most software development books don't spend much time discussing hardware environments. Software, of course, ultimately executes on a hardware platform and the two are thus closely linked. This has been so since the early days of software. In fact, John Mauchly, who in 1949 developed one of the first high-level programming languages, called Short Order Code, had three years earlier been the co-designer of the ENIAC, one of the first large-scale digital computers. Today, however, software developers have a much broader choice of hardware platforms (and software languages) to select from for their projects. Selecting the proper hardware platform for your production and development environment can have a major impact on the success of your project. The most important thing to remember about this chapter, however, is this one big rule about hardware: Given today's economics, it is acceptable to waste money on hardware overcapacity. The reason is very simple. The tight labor market for software developers means skilled software engineers can demand premium salaries. Entry level software developers can easily make $50,000 a year and developers experienced in specialized skills such as object-oriented development can demand six figure salaries in some markets. At the same time, Moore's Law continues to apply as hardware becomes faster (and correspondingly cheaper) every year. This is illustrated in Figure 16-1.
In spite of the realities of relative hardware versus labor costs, many organizations are still not taking this into account. One reason is that hardware costs may still be analyzed in isolation. For instance, does a $10,000 workstation make a developer twice as productive as a $5,000 workstation? Probably not, but this is not the right question. To justify the $10,000 workstation's acquisition costs, it need only make a $50,000/year developer ten percent more productive to pay for itself in one year! Furthermore, hardware costs amount to only a small fraction of the life cycle cost of a workstation the bulk of this cost is incurred for system administration. A more expensive workstation does not cost any more, and may actually cost less to administer, than a lower priced system.
Your software project will most likely require a lot more hardware than development workstations. Depending on the project, you will require one or more different servers. You will also want to separate out your development environment from your production environment, with possibly a third set of hardware for quality assurance and testing. Some applications, such as the popular enterprise resource planning package SAP, in fact, utilize methodologies that specifically require separate sets of development, quality assurance, and production hardware. This chapter takes a look at some of the different types of workstation and server hardware that will be needed by most development projects while examining some development infrastructure components , namely networking and storage, that are changing even faster than the host platforms they are connected to.
One place to start when evaluating hardware platforms is with audited benchmarks. The two primary benchmark auditing and publishing organizations are SPEC, which covers CPU, NFS, and Web benchmarks and the Transaction Processing Council (TPC) which specializes in database benchmarks. This chapter suggests some of the SPEC and TPC benchmarks that might be appropriate to consider for different types of servers. However, using a benchmark without considering the details can lead to many incorrect assumptions. To help you better understand these benchmarks, this chapter reviews several benchmark reports , exposing the details and providing references for further study.