There are many examples in the news today about companies with complex systems that did not perform or scale as expected. Southwest airlines launched a campaign to reward it customers for crossing the 3 millionth friend on Facebook. The reward lured those customers to the web site for discounted airfare. It also caused the web site to slow down for people purchasing tickets, the status of the purchase was unclear for the customer, did they buy the ticket or not. This issue spilled over in the billing systems which billed the credits cards repeatedly for the same seat, in some cases 6-15 times or more. This caused the customers to make phone calls to the call center, the call center became overwhelmed, people waited a long time to speak with a representative.
The software performance architect has emerged to deal with the very complex and interrelated applications and systems being designed for today’s large and small companies. The performance architect will help mitigate your technology risk for the business. He or she will plan and manage across the Enterprise performance and scalability processes, tasks and activities.
The performance architect can help negotiate with the business a range of service level agreements for the key business applications and transactions. They can help establish response times for key online transactions, should it be 1 second, 2, 3 or 5 seconds?
A key role of the performance architect is to be the clearing house of Enterprise performance and scalability information. A weak spot in many large enterprises is the sharing of performance information. Often times the Application architect is not aware of how the application is performing in the production environment, how the architecture design decisions perform. The capacity planning team must be aware of any expected changes in the workload, and the capacity planning team that monitors production, can provide feedback on how the application or web site is being used.
The performance architect will define Enterprise wide practices and procedures that the application architects, and the application developers can use to build well performing systems. They can help make sure that nonfunctional requirements are defined and communicated across the software development lifecycle. They can make sure that the developers have implemented unit tests that indicate performance of the components early. They can help in the QA functional testing process by introducing micro-performance tests in the QA process. They can help establish guidelines for using virtual services to help test components when dependent third party or downstream components are not available.
The performance architect will provide the practices for designing and executing performance tests for sub-systems, business applications, Enterprise applications, and SaaS hosted applications. Many large Enterprises have complex production environments that require many different applications to work together; a front-end portal, Enterprise services bus, multiple back-end databases, and third party applications. Each of these must be independently performance tested. Often times, the risk to the business is large enough to require a massive end-to-end performance test. In addition to performance testing, these must include failover and failback testing, and antagonistic testing.
Performance tests require detailed analysis and interpretation of results. One of the greatest values the SPA provides is informing the business of the results in business terms.
The SPA will also provide the performance testing framework for the Enterprise to use. They can define the proper tools for generating load, the tools used for test data management and data generation, the monitoring and trending tools, the deep dive diagnostic tools for detailed analysis, the proper results reporting formats. In order to accelerate performance testing, there must also be a virtual service component that allows the ability to stub-out components during a test.
How is the application performance in production? Is the workload as expected? The information to these and more questions, must be shared and made widely available. Some organizations place large screen monitors in common areas showing a real-time performance dashboard for the key business transactions.
Application performance management (APM) is a critical component of the Enterprise performance processes. APM captures real-time transactions response times for every transaction on your web site. The Performance Architect must be the manager of that information and help distribute it to the business team, the architecture team, the developers and the performance engineering teams.
A key task the Performance architect must do is to define and increase the value of performance engineering activities to the business. To answer the question of what are we getting for our investment in the processes, people and tools for the performance engineering team.