The HddStatus project is basically a start-up and it was developed with as few limitations as possible. The most challenging task has been the choice of the proper database engine. Being not a huge company, cost has been a relevant variable. An accurate software engineering procedure allowed to identify different layers (data, presentation, administration, ...) that could be easily moved and improved in the future, according to new needs. The selected technologies are:
  • Linux
  • MongoDB database server
  • Apache web server
  • PHP scripting language
  • Commodity hardware
  • Proprietary models

Linux operating system

The back end of HddStatus runs on Linux servers. This choice allows to use a secure, fast, popular and free OS that can be run on almost any hardware or virtualization technology.

MongoDB database server

There is no such thing as the perfect database. Every DB has its own strengths and weaknesses. When choosing one, the involved dimensions need to be identified, sorted by importance, then weighted. The most important dimensions that were taken into consideration for this project were:
  • virtually unlimited storage
  • redundancy
  • sharding
  • support and active development
  • cost
  • availability on multiple platforms
  • easy to administer
  • ability to grow with needs
Schema-less, key-value, NoSQL database engines were compared and, after several tests, MongoDB was selected. It is very easy to start using MongoDB and it is easy to extend it. It supports replication and sharding, which were two very important features. It lacks some features of CouchDB, but it has a nice SQL-like query language that comes in handy in several scenarios.

Apache web server

Apache HTTP Server is the most popular web server. It supports a wide variety of operating systems and modules. It is stable, secure and efficient. Apache is available on almost any hardware and will not limit HddStatus, should it need to be moved to a different infrastructure.

PHP scripting language

PHP is a scripting language available on a wide range of platforms. It can be used for command line scripting, but it is most often known when used together with the Apache web server. When used this way, it allows to create server side processed dynamic pages. PHP speeds up the time-to-market by allowing an easy prototyping. HddStatus, in the future, might migrate to Tomcat, but PHP should be able to handle current needs quite easily for a long time.

Commodity hardware

Commodity hardware means lower costs, no hardware manufacturer lock-in and wide availability. It means somewhat lower reliability too, but even Google uses commodity hardware for his huge infrastructure. It is easy to test and prototype with because of its low cost.

Proprietary models

After working for years on hard disk S.M.A.R.T. analysis, it was clear that the lack of official documentation and the wide variety of implementations required some additional knowledge to be dealt with. An expert could easily see that some S.M.A.R.T. attribute value was normal for a specific hard disk model, but not for a different one. By processing millions of reports, a model is built. This model is the technological advantage behind HddStatus. Thanks to this model, HddStatus can give expert-like advice in an automated way.