I can only speak from experience. I was with my last company for four+ years. I worked on the enterprise architecture as the company grew from 1 million to 20 million subscribers and 2000 employees in a central location to 20,000 employees scattered across the country.
I have written many enterprise applications that seriously use (and sometimes abuse) the hardware they run on
In my experience
- Putting business logic in the database can cause performance issues
- Growth can cause performance issues that cannot be overcome by simply buying hardware
- Sometimes you have no choice but to redesign existing architectures - because they were poorly thought out in the first place
- Some projects should just be killed because performance was not designed in from the start and retrofitting performance is a bad business decision
- Designing systems that scale is easier said than done
- Scaling by simply adding a new box (out) is easier than scaling by replacing existing hardware (up)
- Designing systems for 24/7/365 (6.9s) is easier said than done
- Databases can be designed to scale out but it is not as easy as scaling up, most consultants take the easy road
- Management often takes the path of least resistance (what costs me less today) when making project decisions
- The first goal of most consultants is to get management to buy off on their ideas – see 9 and think about the implications
Always keep it simple, but not too simple
Michael R. Schmidt
Developer