Solution options

The solution options are as follows:

  • The efficiency and effectiveness of a performance strategy are closely tied to a caching strategy. From a performance standpoint, having an efficient and elaborate caching mechanism is the first step in the process. Take the inventory of all key application components and come up with a strategy to cache the data that will speed up the overall process.
  • Evaluate all possibilities of failure and their likely probability. A few common failure events could be hardware failure, security breaches, natural disasters, a sudden spike in traffic, network failure, and so on. For each of these events, attach a weight and probability of its occurrence. Then devise a fault-tolerance mechanism for each of these events. The fault handling procedures and failover options minimize the latency issues caused by failed components.
  • Design solutions so that they can be distributed across multiple nodes. This offers a dual advantage of both performance and scalability.
  • The key components should be kept lightweight by minimizing their overall size and minimizing server round trips. The most popular way of implementing a lightweight design is to use asynchronous JavaScript and XML - AJAX-based components with no or minimum JavaScripting. This reduces the impact on page size as well as the number of page refreshes and server round-trips.
  • Leverage the AJAX-based approach, whether it be for client-side components, communicating with the server, or for data aggregation,. Non-blocking loads using asynchronous data requests drastically improve the perceived page load time and provides a non-blocking loading of the page.
  • While retrieving data from systems, such as a database or web services, it is recommended to batch the requests to reduce server round-trips. Most of the database APIs and object-relational mapping (ORM) frameworks provide batching functionality.
  • Leveraging open standards not only allows for future painless extension of the technology stack, but it also helps in understanding the technology and troubleshooting in the case of performance issues.
  • Software components should be loosely coupled so that the failure of a performance issue with one component does not impact the overall response time.
  • Adopt continuous code build, deployment, and testing to discover performance issues early in the SDLC. Often, performance testing is done during the end phases of the project, which is expensive and complex to troubleshoot.
  • The various tiers should be hosted on different hardware machines. Resource intensive operations and the database are deployed on dedicated hardware, providing improved performance.
  • Leverage resource pooling in the application container to improve the performance. Use of connection pooling for database connections will improve performance.
  • Load balancing is a key technique to spread the load evenly between various nodes. Load balancing or distribution through the Round Robin DNS algorithm will facilitate in superior performance.
  • Lower traffic on the wire by sending only what is required and retrieving only what is necessary.
  • Reduce the number of transitions between boundaries, and reduce the amount of data transferred over the wire. Choose batch mode to minimize calls over the network channel.
  • Where communication tier boundaries are crossed, leverage coarse-grained interfaces requiring a reduced number of calls for a specific process, and consider using an asynchronous model of communication.
  • Design effective locking, transaction, queuing, and threading mechanisms. Leverage optimum queries for superior performance, and avoid bulk data fetching when only a subset is required for the operation. Leverage asynchronous APIs, message queuing, or one-way calls to minimize blocking while making calls across tier boundaries.
  • Application, database, and server tuning will also improve system performance.
  • Architect efficient communication methodology and protocols between tiers to ensure entities securely interact with no performance degradation.
  • Leverage container built-in features, such as distributed transaction and authentication, that will improve robustness and simplify architecture.
  • Largely granular interfaces require multiple invocation to perform a task and are the best solution alternatives when located on the same physical node.
  • Interfaces that make only one call to accomplish each task provide outstanding performance when the components are distributed across physical boundaries.
  • Separate long-running critical processes that might fail by using a separate physical cluster. For example, a web server provides superior processing capacity and memory, but may not have robust storage that can be swapped rapidly in the event of a hardware failure.
..................Content has been hidden....................

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