Wednesday, March 18th, 2009...11:21 am

The Business Model and its Impact on Product Architecture

Jump to Comments

Today I would like to talk about the impact that business model actually makes on a product architecture. I mean how the way that company uses to earn money affects its growth and profitability via product architecture.

When you are writing custom piece of software for particular customer, the strategy is simple – do your best to satisfy the customer as much as possible with the minimal development efforts/investments. In order to achieve that you need to design architecture in that way to predict as much number of future changes as possible, make your product easy to change and move sequentially forward in the future. That’s why you split your architecture into layers, you create abstract interfaces, you apply concrete implementations, and finally you make your architecture pluggable and easy to extend.  You rely on 3rd party libraries, you try  to re-use previous experience and code snippets/libraries. Of course you are facing a lot of other development challenges here, as everyone does in software world today, but the key question is how to save efforts on product development. Do more with the help of less.

This question leads us to that idea that almost every company that has specialty, tries to build a platform instead of developing an ad-hoc solution each time from scratch. They develop platform that is easy to customize for particular customer. If the job is done properly (by perfect beings in perfect world:), number of your customers will not depend on number of development investments. Profitable model.Write once, sale many times.
That reminds me one of easy to scale patterns – write once, read many times(read optimized scenario requires you to optimize data at write time)
In this case the challenge is to split you product architecture into bricks. Easy to replace, easy to rebuild, easy to append. Another challenge is how to build ideal platform, the framework that can be easily customized for any customer…and keep it simple. Both, on UI and code level. That’s true art, to build the system that’s complex in a whole, at the same time consisting of simple disjoint blocks.

So, we examined companies that sell products and platforms. But there are companies that don’t sell products and nevertheless stay alive in software business. They do have own products, but they sell advertising. Google is the best example. This is indirect model. The profitability lies in a number of users using a product. Nobody will use Google AdWords if few clients use Google Search.So, to stay alive in this business you need to keep existing customers and constantly gain ground using new ones. Like a shark, keep moving or you will die. Other competitors will intercept your users.

In order to serve such incredible number of users you need to scale your product easily. You need to do less job with a less number of machines in a cluster. Electricity bills matter here. Performance, fail-over, load balancing, capacity reserve. All these items are answers to one simple question stated by the business model – how to handle large number of users/content transparently and efficiently without expensive hardware infrastructure at the same time saving development efforts.

The main idea is that everything has its origin, like anything in a universe. Everything starts from something and leads to something. There is a reason for everything around us. And each day, on each page of code you can make your influence on the company in whole.

Leave a Reply