Solution options

The solution options are as follow:

  • There are two architecture choices for achieving scalability: vertically, by adding additional memory, processors or disks; and horizontally, by adding more machines to the system. Vertical scalability is easier to achieve than horizontal scalability.
  • Handling more customer requests requires the system to be scaled by deploying additional web servers.
  • Design layers and tiers for scalability, that is, to scale out or scale up a web, application, or database tier.
  • The key scalability patterns include distributed computing, parallel computing, SOA, event-driven architecture, push-and-pull data modeling, optimal load sharing, enterprise portals, and message modeling.
  • Clustering allows the ability to add processing capability by simply adding nodes to the cluster.
  • Use connection pooling for database and resource pooling improves the scalability of applications. Resource pooling, such as database connection pools, is for maintaining multiple logical connections over fewer physical connections and then reusing the connections, bringing in more scalable efficiencies.
  • Supplementary application or database servers can be added (horizontal scaling) to improve the scalability of the application.
  • Partition data across multiple database servers to improve scalability and allowing flexible location for data sets.
  • Design logical layers on the same physical tier to reduce the number of physical nodes while also increasing load sharing and failover capabilities.
  • Leverage design that uses alternative systems when it detects a spike in traffic or increase in user load for an existing system.
  • Architect store and forward techniques to allow the request to be stored when the target is offline, and send it when its back online.
  • Stateless transactions and requests makes the application more scalable. Design applications using stateless session beans improve the scalability.
  • Business logic needs be loosely coupled with web tier, hence deploying the application components on the separate node is easier. SOA provides scalability at the integration layer by loose coupling.
  • Distribute business components by deploying multiple machines, which can be accessed by the web tier components. This will increase the application's scalability as well.
  • Adopt REST-based integrations rather than heavyweight alternatives, such as Simple Object Access Protocol (SOAP) or Application Programming Interface (API) calls. Using lightweight alternatives, such as REST-based services, are fast, they transfer less data, and are more scalable.
  • Minimize the number of static assets, such as images, JavaScript, Cascading Style Sheets (CSS), required by the application. This can be achieved by compressing and merging them to form a minimal set.
  • Leverage AJAX-based asynchronous models for server invocations for partial page refresh.
  • Leverage on-demand pagination features, where the data required for the second page is fetched only when the user requests the page.
  • Leverage lightweight alternatives, such as JSON over XML for service invocations, and do the service invocations only when needed.
  • Reduce the amount of data transferred over the wire. Switching to lightweight alternatives, such as the JSON format for web data exchange.
  • Design services to be modular and reusable so that they can be easily scaled.
  • Scale out UIs by adding multiple nodes to web servers, asset, and media servers. The inbuilt caching of web servers should be leveraged for better performance and scalability.
  • Establish smart caching to cache the frequently used data/query results in the application tier to avoid costly APIs.
  • Avoid chatty APIs and batch the requests to minimize server round-trips. The fewer the calls, the less the load on the server and hence it will be more scalable.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset