{"id":1799,"date":"2023-03-07T07:22:32","date_gmt":"2023-03-07T07:22:32","guid":{"rendered":"https:\/\/blog.amt.in\/?p=1799"},"modified":"2023-03-07T07:29:24","modified_gmt":"2023-03-07T07:29:24","slug":"insights-in-performance-engineering","status":"publish","type":"post","link":"https:\/\/blog.amt.in\/index.php\/2023\/03\/07\/insights-in-performance-engineering\/","title":{"rendered":"Insights on Performance Engineering"},"content":{"rendered":"<p>Performance engineering\u00c2\u00a0encompasses the techniques applied during a\u00c2\u00a0systems development life cycle\u00c2\u00a0to ensure the\u00c2\u00a0non-functional requirements\u00c2\u00a0for performance (such as\u00c2\u00a0throughput,\u00c2\u00a0latency, or\u00c2\u00a0memory\u00c2\u00a0usage) will be met. It may be alternatively referred to as\u00c2\u00a0systems performance engineering\u00c2\u00a0within\u00c2\u00a0systems engineering, and\u00c2\u00a0software performance engineering\u00c2\u00a0or\u00c2\u00a0application performance engineering\u00c2\u00a0within\u00c2\u00a0software engineering.<\/p>\n<p>As the connection between application success and business success continues to gain recognition, particularly in the mobile space, application performance engineering has taken on a preventive and perfective\u00c2\u00a0role within the software development life cycle. As such, the term is typically used to describe the processes, people and technologies required to effectively test non-functional requirements, ensure adherence to service levels and optimize application performance prior to deployment.<\/p>\n<p>The term\u00c2\u00a0performance engineering\u00c2\u00a0encompasses more than just the software and supporting infrastructure, and as such the term performance engineering is preferable from a macro view. Adherence to the non-functional requirements is also validated post-deployment by monitoring the production systems. This is part of\u00c2\u00a0IT service management.<\/p>\n<p>Performance engineering has become a separate discipline at a number of large corporations, with tasking separate but parallel to systems engineering. It is pervasive, involving people from multiple organizational units; but predominantly within the\u00c2\u00a0information technology\u00c2\u00a0organization.<\/p>\n<p>The objectives of\u00c2\u00a0Performance Engineering are:<\/p>\n<ul>\n<li>Increase business revenue by ensuring the system can process transactions within the requisite timeframe<\/li>\n<li>Eliminate system failure requiring scrapping and writing off the system development effort due to performance objective failure<\/li>\n<li>Eliminate late system deployment due to performance issues<\/li>\n<li>Eliminate avoidable system rework due to performance issues<\/li>\n<li>Eliminate avoidable system tuning efforts<\/li>\n<li>Avoid additional and unnecessary hardware acquisition costs<\/li>\n<li>Reduce increased\u00c2\u00a0software maintenance\u00c2\u00a0costs due to performance problems in production<\/li>\n<li>Reduce increased software maintenance costs due to software impacted by ad hoc performance fixes<\/li>\n<li>Reduce additional operational overhead for handling system issues due to performance problems<\/li>\n<li>Identify future bottlenecks by simulation over prototype<\/li>\n<li>Increase server capability<\/li>\n<\/ul>\n<p>Because this discipline is applied within multiple methodologies, the following activities will occur within differently specified phases. However, if the phases of the\u00c2\u00a0rational unified process\u00c2\u00a0(RUP) are used as a framework, then the activities will occur as follows:<\/p>\n<p>During the first, Conceptual phase of a program or project, critical\u00c2\u00a0business processes\u00c2\u00a0are identified. Typically they are classified as critical based upon revenue value, cost savings, or other assigned business value. This classification is done by the business unit, not the IT organization. High level risks that may impact system performance are identified and described at this time. An example might be known performance risks for a particular vendor system. Finally, performance activities, roles and deliverables are identified for the Elaboration phase. Activities and resource loading are incorporated into the Elaboration phase project plans.<\/p>\n<h4><span id=\"Elaboration\" class=\"mw-headline\">Elaboration:<\/span><\/h4>\n<p>During this defining phase, the critical business processes are decomposed to critical\u00c2\u00a0use cases. Probe cases will be decomposed further, as needed, to single page (screen) transitions. These are the use cases that will be subjected to script driven\u00c2\u00a0performance testing.<\/p>\n<p>The type of requirements that relate to performance engineering are the non-functional requirements, or NFR. While a functional requirement relates to which business operations are to be performed, a performance related non-functional requirement will relate to how fast that business operation performs under defined circumstances.<\/p>\n<p>Early in this phase a number of performance tool related activities are required. These include:<\/p>\n<ul>\n<li>Identify key development team members as subject matter experts for the selected tools.<\/li>\n<li>Specify a\u00c2\u00a0profiling\u00c2\u00a0tool for the development\/component unit test environment.<\/li>\n<li>Specify an automated unit (component) performance test tool for the development\/component unit test environment; this is used when no GUI yet exists to drive the components under development.<\/li>\n<li>Specify an automated tool for driving server-side unit (components) for the development\/component unit test environment.<\/li>\n<li>Specify an automated multi-user capable script-driven end-to-end tool for the development\/component unit test environment; this is used to execute screen-driven use cases.<\/li>\n<li>Identify a database test data load tool for the development\/component unit test environment; this is required to ensure that the database optimizer chooses correct execution paths and to enable reinitializing and reloading the database as needed.<\/li>\n<li>Deploy the performance tools for the development team.<\/li>\n<li>Presentations and training must be given to development team members on the selected tools.<\/li>\n<\/ul>\n<p>During this final phase the system is deployed to the production environment. A number of preparatory steps are required. These include:<\/p>\n<ul>\n<li>Configuring the operating systems, network, servers (application, web, database, load balancer, etc.), and any message queueing software according to the base checklists and the optimizations identified in the performance test environment<\/li>\n<li>Ensuring all performance monitoring software is deployed and configured<\/li>\n<li>Running statistics on the database after the production data load is completed<\/li>\n<\/ul>\n<p>Once the new system is deployed, ongoing operations pick up performance activities, including:<\/p>\n<ul>\n<li>Validating that weekly and monthly performance reports indicate that critical use cases perform within the specified non functional requirement criteria<\/li>\n<li>Where use cases are falling outside of NFR criteria, submit defects<\/li>\n<li>Identify projected trends from monthly and quarterly reports, and on a quarterly basis, execute\u00c2\u00a0capacity planning\u00c2\u00a0management activities<\/li>\n<\/ul>\n<p>The above is a brief about Performance Engineering. Watch this space for more updates on the latest trends in Technology.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Performance engineering\u00c2\u00a0encompasses the techniques applied<\/p>\n","protected":false},"author":1,"featured_media":1801,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[650,658,7],"tags":[651,659,18],"class_list":["post-1799","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-life-cycle","category-performance-engineering","category-techtrends","tag-life-cycle","tag-performance-engineering","tag-technology"],"_links":{"self":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts\/1799","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/comments?post=1799"}],"version-history":[{"count":2,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts\/1799\/revisions"}],"predecessor-version":[{"id":1802,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/posts\/1799\/revisions\/1802"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/media\/1801"}],"wp:attachment":[{"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/media?parent=1799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/categories?post=1799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.amt.in\/index.php\/wp-json\/wp\/v2\/tags?post=1799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}