{ by david linsin }

April 01, 2007

Architecture and Scalability

...if they would like me to help them to design architecture which is very easy to implement or which would be efficient and scalable ? Typically we settle on some balance but it does not change the fact - scalable architectures may be more complex to implement. This of course does not mean all simple architectures scale badly - for many tasks simple architectures can be good enough, but it should be right simple architectures. In some cases you might wish to implement simple architecture which you'll have to redo in the 6 months - just to show proof of concept, see first happy customers and raise investment or fell assured this project is worth to spend savings on. In others you prefer to do things as good as you can from the start. I'm not saying "right" as experience gained during the project development and new features typically require some changes....

So far I've seen two projects that designed a proof of concept like architecture and implemented it as a prototype. Unfortunately both projects didn't manage to get rid of their proof of concept design, but continued to base more features and functionality on top of their prototype implementations. Don't get me wrong, there is nothing wrong with a proof of concept architecture, cause you need to make sure the solution you intend to implement works.

The problem is that customers tend to think you are done with 90% of your work, though you actually just designed an implemented 10%. As pointed out in the blog post above you cannot cover requirements thoroughly with a proof of concept like designed architecture. Only during the process of developing an application, you learn to completely understand customer's requirements, mainly because you get to know the customer better. If you base your application solely on an architecture designed to fit requirements which are covered by a proof of concept like analysis your application will likely face a lot of problems in term of scalability. And with scalability I mean feature and performance wise.

I guess the blog post above makes a good point when it comes to finding a balance between a simple and thoroughly analyzed architecture. You have to compromise with the requirements already grasp and what could come in the future. What you definitely shouldn't do, is base your architecture solely on a rough analysis. If you've implemented a prototype, I think you should can it, do some more analysis and start all over again.



  • mail(dlinsin@gmail.com)
  • jabber(dlinsin@gmail.com)
  • skype(dlinsin)