It is nowhere taught in academics or software architect training to build a cost efficient architecture. However every organization expects its architects and designers to keep the budget of the project in mind while deciding the underlying architecture for the product or solution. So what is the effective cost of an architecture? Here is a formula to estimate cost of the architecture:
Architecture Cost in dollars = Cost of tools/products + Cost of development of foundation code/library + Cost of Architecture development – Cost saving in terms of dollars
Cost of architecture development includes architect or lead’s time spent on research, discussions and proof of concept development.
Cost saving is the amount the stakeholders would save through out the lifespan of active development and maintenance of the solution when compared to going about the development without any special consideration to design/architecture evaluation.
How much is too much for architecture development?
We need to factor the intended ROI (return on investment) of the deliverable. If it is hard to put a dollar value on ROI then think about the value the overall value, the solution would bring to end users. The value could be the time and effort saved by switching to new solution against legacy or manual process.
Please note the here we are only talking about cost efficiency, not the efficiency of architecture itself. It is quite possible that all architectures would achieve intended results along with acceptable performance, scalability, maintainability, usability and so on.
Here are few examples of cost efficient vs cost draining architecture.
- Designing a log scrapping solution to produce some stats on the usage of the website which is used for say 50 internal users. Choosing a solution around homegrown log parser using Lucene or open source log analysis tools such as graylog, AWStats, W3Perl or GoAccess is prossibly decent enough and cost efficient as well. However if you would like to analyze your public facing sites and drive your marketing decision or analytics based on your website usage then it would be worthwhile to explore commercial tools such as splunk, sumologic or free cloud based solution from elastic- logstash.
- You need to develop a reporting like solution, which needs to write pdf, word and excel outputs. If the output format is simple and the usage is for internal users a low cost solution based on Jasper reports, itext/docx4j on jxls might be good enough. However if the documents or reports have signifacant importance such as legal or sales documents or client facing reports then it is worthwhile to look into Tableu, Seismic, Cognos or Crystal Reports.
Often times the scale of the solution is also an important factor in the cost of architecture decisions. For example to design a search or lookup solution you can simply create set of maps on the server or use so form of efficient string search algorithms (e.g Boyer Moore Horse Pool Raita) or implement Lucene or Cache based Lookups such as EHCache Query. However to address the needs to centralized multiple lookups which can scale independent of the client application, it is advised to use a dedicated search server/service such as Apache Solr, Oracle Endeca, Elastic Search.
Often times the project owner only considers the merit of the architecture by how less they are spending on third party commercial tools. It might be the case that the architect wants to prove that he/she could deliver the solution on opensource platform as a trend now a days. By the end of project the developers might spend a lot more time into fixing issues or customizing opensource code to suit the project needs. These customization could be complex and hard to maintain. Eventually the overall cost of the project might be more than what could have been spent on a commercial tool or paid support on opensource tool. Opensource tools are often inefficient for developing native solution targeting closed products such as Microsoft office, windows processes, oracle database migration, replication and so on.
I hope you get the idea of cost efficient architecture. An architecture developed overnight with zero cost but taking lot of time trying to force hit all the requirements is not a cost efficient one. Some people in architecture community have cowboy attitude to throw away such quick and dirty solutions but it becomes developer’s nightmare for rest of the life of the project and eventually gets replaced with more expensive solution. Although such projects are great of your outsourcing/consulting partners feeding on the maintenance, enhancements and defects fixes, organization should encourage open debate and evaluate at least 2 competing solution/tools/architecture proposals before getting into full fledged development. Let me know your thoughts and experience of cost efficient architecture.