|
Your project's performance is dependent on the system architecture, so it's critical to choose the architecture that provides the correct performance level - neither too high nor too low.
Buy Vs. Build
We always develop a system with the strictest attention to Buy vs. Build analysis. This means that wherever possible we avoid re-inventing the wheel, thereby cutting cost and development time.
Layering
Clean separation of business logic from presentation is necessary in order to reduce development time and increase product robustness, scalability and flexibility. We achieve this by using the n-tier Model-View-Controller architecture in most of our projects, except when the legacy nature of the application makes it impossible.

Scalable architecture
The nature of a project defines the level of scalability needed, from a few thousand users to millions making thousands of requests per second. We achieve the correct scalability through three mechanisms.
- Partitioning: separating various system functions onto different servers.
- Layering: providing logical dividing points for a system with tiers as the physical dividers.
- Clustering: spreading the work for a given function or tier across multiple machines.
Functional partitioning allows different system functions to be implemented on different physical machines and logically combined into a coherent information system. It provides great scalability because all function servers can run on a single machine or each function server can run on a separate machine (e.g. to handle a large number of users.)
These configurations reflect the normal tradeoffs between response time and scalability. For light loads, an all-components-on-a-single-machine configuration provides the shortest path between components and the fastest response time; however, response time rapidly degrades as the user load increases.
At the other end of the scalability spectrum, spreading components onto as many machines as possible imposes network overhead on each connection between machines; however the system can scale to service large volumes of user requests. The response time of a single request is longer on the highly scalable configuration, but the configuration can gracefully handle much higher user request loads.
|