Regarding a Online Web based Software application, we are facing difficulty in deciding the approach of product development.
We are working on the system design for online web application that has the potential to be offered as SAAS service. We’re facing difficulties here in deciding following system design and implementation related decision, also having lot of cost consideration too.
Approach A:
We design and develop everything to consider very basic requirement that is just fulfilling the the basic requirements and solves given problem at hand, and launch it. A good enough system to support few hundred users without focusing too much on micro optimizing everything.
We add new features as and when clients requests by adding new module.
So, Simple design, single development, scale when necessary by either upgrading infrastructure or optimizing when required, and might replace the system with total new system as required in future.
We keep same server but have different db for client accounts. Again, different application hosted for each client accessing separate db, etc. When need arises we may add new servers. Although little difficult to manage/maintain and upgrade.
Approach B:
We study full requirements, possible features to add that might add additional value (although we’re still not sure about which such additional features add how much value?) and design the system that supports very large numbers of users (with heavy set of hardware) from beginning.
We launch full featured application that is also very well optimized from the beginning.
We design it to support multiple client accounts in single db and application hosting, and implement it on cloud servers / load balancing servers with architecture like a matured SAAS application. Although this makes it very difficult to code and maintain. And definitely takes more time to implement.
Note that,
We are prepared with features list, UI and possible technology setups we might be using. I want to understand what could be the best approach to address this situation.
As earlier I have seen for one other product development project that, with set of all features, it took too long to complete, and even it has such features that is not being in used at all. The cost considerations are very high with such projects, I would prefer to go with approach A, because that is quick, easy and predictable. Moreover, I will have user feedback very soon compared to the second approach, which might help me decide which features to focus and why. Moreover, when the need arises, we might rewrite the complete application with focus on system that is similar to approach B.
I would like to learn how other companies manage this kind of situation, and what could be the best way to implement such project?
It depends.
Rules of thumb:
Do not scare away Your customers by letting them wait to long, shipping a broken or unmaintainable product. Do not waist money on infrastructure You do not need (yet).