Many systems evolve differently in reality than ideal scenarios, often necessitating multiple rewrites.Systems typically move up one or two stages and remain there throughout their lifespan.Avoiding full-application rewrites is crucial due to time and complexity concerns.The journey of system evolution begins with a single server handling all tasks.As a system grows, limitations emerge, such as overwhelmed servers and slower database querying.Vertical scalability involves hardware upgrades without architectural changes.Vertical scaling becomes costly and has limitations in terms of memory and CPU cores.Functional partitioning involves separating services like web servers and databases onto different machines.Horizontal scalability splits different components of a web app across multiple machines.Global scalability involves distributing data centers worldwide for improved latency and disaster recovery.