MOST SOLUTION ARCHITECTS HAVE CHALLENGE TO RIGHTLY SIZE SYSTEM REQUIREMENTS
Mohamed Sulaiman Sultan Suhaibuddeen
Securing Malaysia's Digital Future | Chief Network Security Officer @ MCMC
Designing a system requires an integration between software and hardware, which covers from computing, connectivity, and storage in transforming input to become the desired output.
A system is made from interaction between multiple components and each of these component has its own limitations such as processing power, throughput, and storage; other than that, all those components has its own expiry, as in the warranty period or end of support and soon the end of life coverage. A simple rule is that normally, an equipment will be sold in the market for about 10 years before a replacement model introduced, in other words, after the 10 years it reaches end of support; after that, generally there will be another 5 years before the manufacturer declare end of life on it. So, when selecting an equipment do check how long it was around.
In determining the right sizing, there are three (3) resource utilization patterns for a system.
One is the increasing trend, where at every interval, there shall be consistent addition for resources pool, here an architect will do a forecast analysis on the trend in getting to know what would be the size needed for the system to run before an upgrade can be performed.
Second pattern is linear trend, where the system has certain specific user performing similar operation, here there will be hardly an upgrade needs but merely up keeping the equipment to run and replace those that are out of warranty or support.
The last one is a declining trend, where after a while the system will have much smaller resources requirement, this normally happen on a temporary or transit system that built for purpose to function up to specific period.
Nevertheless, from all computing resources, storage is the one that is very critical, for storage there are law that govern the retention period either online (hot) or offline (cold); which means that those data cannot be simply purged or exported out.
In my experience, most system are built on the increasing pattern; unfortunately many of the architecture that I have seen, mostly will oversized the required, which leads to a waste of resources, if they want to deploy a system that is needed for 20 years, they will do a big-bang purchase, then when the components come to expiry, they will waste again in getting a new full stack of what they have even wasn't fully utilized and surely there hasn't be a return on investment for it.
A good system architect will perform agile alike deployment by increasing the resources as and when needed, here we can see the benefits of using cloud computing, under the concept pay per use. Make sure resources utilization charts via monitoring system are regularly reviewed. Knowing the impact for user - operation over time is very crucial, like x number of user performing y transaction will increase CPU by ww% RAM by xx% network size by yy% and zz% on storage.
I strongly advice all system architect to do sizing via a near real simulation to gauge the requirements, so that the capacity planning can be done better, and another point is to do gradual incremental upgrades when the resources reaches the threshold.