Evolution of Server‑Side Architecture: From Single Machine to Cloud‑Native Microservices
This article outlines the step-by-step evolution of server‑side architecture from a single‑machine setup to a cloud‑native, micro‑service ecosystem, detailing concepts such as distribution, high availability, caching, load balancing, database sharding, containerization, and the principles guiding scalable, resilient backend systems.
Basic Concepts
The article begins by defining fundamental terms such as distributed systems, high availability, clustering, load balancing, and forward/reverse proxy, providing a foundation for understanding later architectural decisions.
Architecture Evolution
1. Single‑machine architecture – Initially, Tomcat and the database run on the same server, suitable for low traffic.
2. Separate Tomcat and database – Deploying each on its own server improves performance but eventually hits database read/write bottlenecks.
3. Introduce local and distributed caching – Adding in‑process cache and an external Redis cache reduces database load, though Tomcat becomes the new bottleneck.
4. Reverse proxy for load balancing – Using Nginx or HAProxy distributes requests across many Tomcat instances, scaling request handling but pushing pressure back to the database.
5. Database read/write separation – Employing middleware like MyCAT splits reads and writes, allowing multiple read replicas and improving concurrency.
6. Business‑based sharding – Different business domains use separate databases, reducing contention and enabling horizontal scaling.
7. Split large tables – Horizontal partitioning (hashing, time‑based tables) and MPP databases (TiDB, Greenplum) further scale storage and query performance.
8. LVS/F5 layer‑4 load balancing – High‑performance load balancers handle hundreds of thousands of concurrent connections, with keepalived providing high availability.
9. DNS round‑robin across data centers – DNS‑based traffic distribution enables multi‑region scaling for massive concurrency.
10. Introduce NoSQL and search engines – Technologies such as HDFS, HBase, Redis, ElasticSearch, Kylin, and Druid address diverse data‑intensive workloads.
11. Split monolith into smaller applications – Business‑level modularization clarifies responsibilities and eases independent deployment.
12. Extract shared functions into microservices – Common services (user, order, payment) become independent services managed via Dubbo or Spring Cloud.
13. Enterprise Service Bus (ESB) – ESB unifies protocol conversion and reduces coupling, resembling SOA architecture.
14. Containerization – Docker packages services, while Kubernetes orchestrates dynamic deployment, scaling, and isolation.
15. Cloud platform adoption – Moving to public‑cloud IaaS/PaaS/SaaS provides elastic resources, reducing operational cost and enabling on‑demand scaling.
Design Principles
Eliminate single points of failure (N+1 design).
Provide rollback and feature toggle mechanisms.
Incorporate monitoring from the start.
Design for horizontal scalability and multi‑active data centers.
Prefer mature, commercially supported technologies.
Adopt stateless services and resource isolation.
The article concludes that while the presented evolution path is illustrative, real‑world systems may adopt steps out of order based on specific bottlenecks and business needs.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Architects' Tech Alliance
Sharing project experiences, insights into cutting-edge architectures, focusing on cloud computing, microservices, big data, hyper-convergence, storage, data protection, artificial intelligence, industry practices and solutions.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
