• 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

    1. Putting business logic in the database can cause performance issues
    2. Growth can cause performance issues that cannot be overcome by simply buying hardware
    3. Sometimes you have no choice but to redesign existing architectures - because they were poorly thought out in the first place
    4. Some projects should just be killed because performance was not designed in from the start and retrofitting performance is a bad business decision
    5. Designing systems that scale is easier said than done
    6. Scaling by simply adding a new box (out) is easier than scaling by replacing existing hardware (up)
    7. Designing systems for 24/7/365 (6.9s) is easier said than done
    8. Databases can be designed to scale out but it is not as easy as scaling up, most consultants take the easy road
    9. Management often takes the path of least resistance (what costs me less today) when making project decisions
    10. 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