Kumar Shivakumar | Architecting High Performing, Scalable and Available Enterprise Web Applications | E-Book | sack.de
E-Book

E-Book, Englisch, 288 Seiten

Kumar Shivakumar Architecting High Performing, Scalable and Available Enterprise Web Applications


1. Auflage 2014
ISBN: 978-0-12-802528-4
Verlag: Elsevier Science & Techn.
Format: EPUB
Kopierschutz: 6 - ePub Watermark

E-Book, Englisch, 288 Seiten

ISBN: 978-0-12-802528-4
Verlag: Elsevier Science & Techn.
Format: EPUB
Kopierschutz: 6 - ePub Watermark



Architecting High Performing, Scalable and Available Enterprise Web Applications provides in-depth insights into techniques for achieving desired scalability, availability and performance quality goals for enterprise web applications. The book provides an integrated 360-degree view of achieving and maintaining these attributes through practical, proven patterns, novel models, best practices, performance strategies, and continuous improvement methodologies and case studies.  The author shares his years of experience in application security, enterprise application testing, caching techniques, production operations and maintenance, and efficient project management techniques. - Delivers holistic view of scalability, availability and security, caching, testing and project management - Includes patterns and frameworks that are illustrated with end-to-end case studies - Offers tips and troubleshooting methods for enterprise application testing, security, caching, production operations and project management - Exploration of synergies between techniques and methodologies to achieve end-to-end availability, scalability, performance and security quality attributes - 360-degree viewpoint approach for achieving overall quality - Practitioner viewpoint on proven patterns, techniques, methodologies, models and best practices - Bulleted summary and tabular representation of concepts for effective understanding - Production operations and troubleshooting tips

Shailesh Kumar Shivakumar is a Senior Technology Architect at Infosys Technologies Limited with over 13 years of industry experience. His areas of expertise include Java Enterprise technologies, Performance engineering, Enterprise portal technologies, User interface components and performance optimization. He is a Guinness world record holder of participation for successfully developing a mobile application in coding marathon. He has four patent applications including two US patent applications in the area of web and social technologies. He was involved in multiple large-scale and complex online transformation projects for Fortune 500 clients of his organization. He also provided on-demand consultancy in performance engineering for critical projects across various units in the organization. His has hands-on experience on breadth of technologies including web technologies, portal technologies and database technologies and has worked on multiple domain areas such as retail, manufacturing, e-commerce, avionics etc. He was the chief architect of an online platform which won 'best web support site” award among global competitors. He is a regular blogger at Infosys Thought Floor and many of his technical white papers are published in Infosys external site. He has delivered two talks at Oracle JavaOne 2013 conference on performance optimization and project management and has presented a paper at IEEE conference on knowledge management systems. He also headed a center-of-excellence for portals and is currently the practice lead for enterprise portal practice. He led multiple thought-leadership and productivity improvement initiatives and was part of special interest groups (SIG) related to emerging web technologies at his organization. He holds numerous professional certifications including Oracle Certified Master (OCM) Java Enterprise Edition 5, Sun certified Java programmer, Sun Certified Business component developer, IBM certified Solution Architect - Cloud computing, IBM Certified Solution Developer - IBM WebSphere Portal 6.1 and many others. He has won numerous awards including prestigious Infosys Awards for Excellence 2013-14 'Multi-talented thought leader' under 'Innovation - Thought leadership” category, 'Brand ambassador award” for MFG unit, delivery excellency award and multiple spot awards and received honor from executive vice chairman of his organization. He is featured as 'Infy star” in Infosys Hall of fame and recently led a delivery team which won the 'best project team” award at his organization. He holds an engineering degree in computer science and has done executive management program from Indian Institute of Management, Calcutta. He lives in Bangalore, India and can be reached at Shailesh.shivakumar@gmail.com. Linked in profile page: in.linkedin.com/in/shaileshkumarshivakumar/

Kumar Shivakumar Architecting High Performing, Scalable and Available Enterprise Web Applications jetzt bestellen!

Weitere Infos & Material


1;Front Cover;1
2;Architecting High Performing, Scalable and Available Enterprise Web Applications;4
3;Copyright Page;5
4;Dedication;6
5;Contents;8
6;Preface;12
6.1;All-around quality;12
6.2;360° view: key highlights and differentiators of the book;12
6.3;Motivation for the book;14
6.4;Main themes and focus areas;15
6.5;Organization of chapters;16
6.6;Target audience;17
6.7;Declaration;18
7;About the Author;20
8;Acknowledgments;22
9;1 Architecting Scalable Enterprise Web Applications;24
9.1;1.1 Introduction;24
9.2;1.2 Scalability layers;26
9.3;1.3 Key tenets of enterprise scalability;27
9.3.1;1.3.1 Dimensions of scalability;29
9.4;1.4 Challenges for scalability;30
9.5;1.5 Scalability patterns and best practices;34
9.5.1;1.5.1 Scalability patterns;34
9.5.1.1;1.5.1.1 Scalability best practices;40
9.5.2;1.5.2 Deep-dive into scalability;40
9.5.2.1;1.5.2.1 Scalability through fault tolerance and failover;40
9.5.2.2;1.5.2.2 Distributed computing;53
9.5.2.2.1;1.5.2.2.1 Hyperscale architecture;54
9.5.2.3;1.5.2.3 Services scalability;54
9.5.2.3.1;Architecting scalable services infrastructure;57
9.5.2.3.2;Distributed clustered ESB configuration;58
9.5.2.4;1.5.2.4 Database scalability;59
9.5.2.5;1.5.2.5 Storage scalability;61
9.5.2.6;1.5.2.6 Virtualization;62
9.5.2.6.1;Impact of virtualization on scalability;62
9.5.2.7;1.5.2.7 Cloud alternative;63
9.6;1.6 Architecting scalable systems;64
9.6.1;1.6.1 Real-world scalability-related metrics of the enterprise application;64
9.6.2;1.6.2 Infrastructure planning;65
9.6.2.1;1.6.2.1 Infrastructure design and components;65
9.6.2.1.1;1.6.2.1.1 Sizing and capacity planning;66
9.6.3;1.6.3 Right routing and workload management;69
9.6.4;1.6.4 Scalable software design;70
9.6.5;1.6.5 Scalability strategy at various layers;71
9.6.6;1.6.6 Scalability monitoring and governance;72
9.7;1.7 Scalability testing;73
9.8;1.8 Scalability anti-patterns;74
9.9;1.9 Case study;75
9.9.1;1.9.1 Problem statement;75
9.9.2;1.9.2 Analysis methodology;76
9.9.2.1;1.9.2.1 Architecture and code analysis;76
9.9.2.2;1.9.2.2 Testing methodology;76
9.9.2.3;1.9.2.3 Scalability problems identified;76
9.9.3;1.9.3 Scalability optimization;77
9.9.4;1.9.4 Result;78
9.10;1.10 Chapter summary;79
10;2 Ensuring High Availability for Your Enterprise Web Applications;82
10.1;2.1 Introduction;82
10.1.1;2.1.1 Key tenets of high availability;82
10.1.2;2.1.2 Motivations for high availability;83
10.2;2.2 High availability planning;83
10.2.1;2.2.1 Enterprise application availability chain;84
10.2.2;2.2.2 Availability analysis process and establishment;87
10.3;2.3 Challenges to high availability;91
10.3.1;2.3.1 Hardware-related challenges;91
10.3.2;2.3.2 Software-related challenges;91
10.3.2.1;2.3.2.1 Application issues impacting availability;92
10.3.3;2.3.3 Process-related challenges;93
10.3.4;2.3.4 Unanticipated challenges;93
10.4;2.4 High availability architecture patterns and best practices;93
10.4.1;2.4.1 Patterns for high availability;93
10.4.2;2.4.2 Software high availability patterns;96
10.4.3;2.4.3 High availability best practices;97
10.5;2.5 High availability for storage, network, and database components;98
10.5.1;2.5.1 Storage availability through RAID;98
10.5.2;2.5.2 Storage virtualization;98
10.5.2.1;2.5.2.1 Storage availability through NAS and SAN;100
10.6;2.6 High availability database;100
10.7;2.7 Network availability;101
10.8;2.8 5R model for high availability;102
10.8.1;2.8.1 Reliability;102
10.8.2;2.8.2 Replicability and DR strategy;105
10.8.3;2.8.3 Recoverability;107
10.8.4;2.8.4 Reporting and monitoring;108
10.8.5;2.8.5 Redundancy;108
10.9;2.9 Other aspects of high availability;109
10.9.1;2.9.1 Special case of gateway pages and business-critical transactions;109
10.9.2;2.9.2 Comparison with cloud;111
10.9.3;2.9.3 High availability of services, feeds, static assets, and pluggable components;112
10.10;2.10 Availability anti-patterns;114
10.11;2.11 High availability governance;115
10.12;2.12 Uninterrupted system and application maintenance;115
10.13;2.13 High availability testing;117
10.14;2.14 Case study;117
10.14.1;2.14.1 Problem statement;117
10.14.2;2.14.2 High availability assessment;118
10.14.3;2.14.3 Fixing gaps related to high availability;119
10.14.3.1;2.14.3.1 Infrastructure layer;119
10.14.3.2;2.14.3.2 Database layer;120
10.14.3.3;2.14.3.3 Application layer;120
10.14.3.4;2.14.3.4 Process-related fixes;120
10.14.3.5;2.14.3.5 Results;120
10.15;2.15 Chapter summary;121
11;3 Optimizing Performance of Enterprise Web Application;124
11.1;3.1 Introduction;124
11.2;3.2 WPO concepts and analysis;124
11.2.1;3.2.1 Basic concepts of WPO and its impact on online strategy;124
11.2.2;3.2.2 Analysis of factors contributing to web page load time and common pitfalls;125
11.3;3.3 WPO strategy;127
11.3.1;3.3.1 Establishing performance objectives and SLAs;127
11.3.2;3.3.2 Model and evaluate various performance scenarios for business-critical processes and transactions;128
11.3.3;3.3.3 Establishing performance design guidelines;130
11.3.4;3.3.4 Performance-based development approach in project lifecycle phases;131
11.3.4.1;3.3.4.1 Requirement elaboration;131
11.3.4.2;3.3.4.2 Architecture and design phase;132
11.3.4.3;3.3.4.3 Application development phase;133
11.3.4.4;3.3.4.4 Validation phase;136
11.3.5;3.3.5 Bottleneck analysis;140
11.3.6;3.3.6 Performance monitoring;141
11.4;3.4 Optimizing performance for supporting ecosystem components;142
11.4.1;3.4.1 Optimized infrastructure for performance;142
11.4.2;3.4.2 HTML 5 optimization;143
11.4.3;3.4.3 Responsive web design;143
11.5;3.5 Asset optimization strategy;145
11.5.1;3.5.1 Static assets optimization—generic optimization techniques;145
11.5.2;3.5.2 Smart asset proxy;146
11.5.3;3.5.3 Progressive semantic asset loading;150
11.5.4;3.5.4 Rapid rendering framework;152
11.6;3.6 Other dimensions of performance optimization;156
11.6.1;3.6.1 Optimization of content-driven pages;156
11.6.2;3.6.2 Accelerating HTTPS pages;157
11.7;3.7 Performance anti-patterns;158
11.8;3.8 Web analytics-based performance improvement;159
11.9;3.9 Performance governance framework;160
11.10;3.10 Case study for top-down performance optimization;160
11.11;3.11 Chapter summary;163
12;4 Caching for Enterprise Web Application;166
12.1;4.1 Introduction;166
12.2;4.2 Impact on scalability, availability, and performance;168
12.3;4.3 Cache concepts;169
12.4;4.4 Cache design;171
12.4.1;4.4.1 Cache invalidation strategy;171
12.5;4.5 Caching patterns;174
12.6;4.6 Caching antipatterns;174
12.7;4.7 Caching strategy;177
12.8;4.8 Cache metrics and administration;179
12.8.1;4.8.1 Key caching metrics;179
12.8.2;4.8.2 Cache administration and monitoring;179
12.9;4.9 Chapter summary;181
13;5 Securing Enterprise Web Application;182
13.1;5.1 Introduction;182
13.2;5.2 Security strategy;182
13.3;5.3 Vulnerability, threat, and risk assessment;184
13.4;5.4 Designing security principles and policies;186
13.5;5.5 Implementing security policy at all levels;189
13.6;5.6 Security testing and monitoring;189
13.6.1;5.6.1 Security testing;190
13.7;5.7 Chapter summary;201
14;6 Enterprise Web Application Testing;202
14.1;6.1 Introduction;202
14.2;6.2 Web testing challenges;202
14.2.1;6.2.1 Brief introduction to Web 2.0;202
14.2.2;6.2.2 Analysis of testing methodologies in enterprise web projects;203
14.2.2.1;6.2.2.1 Testing challenges;203
14.3;6.3 Testing best practices;205
14.4;6.4 Testing estimation at each project phase;206
14.5;6.5 UCAPP testing model for enterprise applications;206
14.5.1;6.5.1 User-centric testing;207
14.5.2;6.5.2 Complete validation;210
14.5.3;6.5.3 Automated testing;211
14.5.4;6.5.4 Proactive defect prevention and detection;212
14.5.5;6.5.5 Performance focus;215
14.6;6.6 Other aspects of testing;216
14.6.1;6.6.1 Services testing;216
14.6.2;6.6.2 A special case of testing challenges in environment with layered caching;219
14.6.3;6.6.3 Testing metrics and business KPIs;220
14.7;6.7 Chapter summary;221
15;7 Project Management for Enterprise Applications;222
15.1;7.1 Introduction;222
15.2;7.2 Survey and analysis of enterprise software projects;222
15.3;7.3 Project management best practices during various phases of the software project;222
15.4;7.4 Lead indicators of quality issues;223
15.5;7.5 Proactive quality approach techniques;224
15.5.1;7.5.1 Comprehensive proactive quality governance framework;224
15.5.2;7.5.2 Automated quality control;231
15.5.3;7.5.3 Continuous and iterative development, integration, testing, release, and monitoring;231
15.5.4;7.5.4 Productivity improvement measures;235
15.5.5;7.5.5 Continuous quality improvement framework;236
15.6;7.6 Project quality tools and metrics;237
15.6.1;7.6.1 Quality mission control;237
15.6.2;7.6.2 Proactive project quality metrics;238
15.6.3;7.6.3 Proactive risk control;238
15.7;7.7 Governance;239
15.7.1;7.7.1 Program governance approach;239
15.7.2;7.7.2 Various dimensions of governance;240
15.7.3;7.7.3 Effective program management;241
15.8;7.8 Chapter summary;242
16;8 Operations and Maintenance;244
16.1;8.1 Introduction;244
16.2;8.2 Continuous build and deployment;244
16.3;8.3 Monitoring and notification;245
16.4;8.4 Production issue troubleshooting and incident handling;248
16.5;8.5 Production operations;253
16.6;8.6 Chapter summary;257
17;9 Enterprise Architecture Case Study: ElectronicsDeals Online;258
17.1;9.1 Case study context;258
17.2;9.2 ElectronicsDeals case study;258
17.3;9.3 Architecture solution;259
17.4;9.4 Designing initial architecture;260
17.5;9.5 Making the ElectronicsDeals online scalable;260
17.6;9.6 Adding high availability features for ElectronicsDeals online;267
17.7;9.7 Accelerated performance for ElectronicsDeals online;274
17.8;9.8 Securing ElectronicsDeals online;279
17.9;9.9 Project execution strategy of ElectronicsDeals Online;279
17.10;9.10 Logical architecture;280
17.11;9.11 Risk and mitigation strategy;281
18;Bibliography;288


1 Architecting Scalable Enterprise Web Applications
Scalability of an enterprise application is critical to the success of its online strategy and business. Business needs its online platform to be scalable to sustain the growth, and this requires the enterprise web applications to efficiently handle the increased user traffic and input data volume with acceptable performance. In this chapter, we will look at various aspects of scalability such as scalability dimensions, key tenets, scalability challenges, scalability best practices, scalability patterns, and a comprehensive process to achieve scalability. A deep-dive analysis of scalability is elaborated, which includes layer-wise scalability, fault tolerance, distributed computing, sizing and capacity planning, scalable software design, load distribution, services scalability, database scalability, storage scalability, and virtualization techniques. The patterns, challenges, and best practices are all analyzed from hardware and software perspectives. The chapter also discusses various scalability testing methods and scalability-related anti-patterns. We then examine a case study at the end of this chapter where we look at a business scenario close to real world and apply the patterns and best practices discussed in the chapter to design a scalable system. Keywords
Scalability dimensions; scalability best practices; scalability patterns; scalability challenges; fault tolerance; failover; redundancy; clustered deployment; horizontal clustering; vertical clustering; stateless session; lightweight design; on-demand data loading; resource pooling; replication; service-oriented architecture; virtualization; sizing and capacity planning; scalability testing; scalable software design; load distribution 1.1 Introduction
Scalability is the capability of the enterprise application and its ecosystem components to handle increased workload and demand without compromising its overall efficiency. Let us look closely at the different elements related to scalability, based on the above statement: • Application and its ecosystem: Scalability is measured for various components at various levels. The ecosystem of an enterprise application generally includes the infrastructure elements like hardware components such as web server and database server, network interfaces, upstream/downstream systems, and all other components that participate in processing a web request. We can go further into granular level such as methods/functions used within the application, stored procedures of a database, or a web service to measure scalability. • Increased workload: As various components in different layers consume different kinds of input, the workload also varies. For instance, a web server generally handles HTTP requests, and hence its primary workload is in the form of HTTP requests for a given time period. Similarly, for an enterprise web application, the number of page requests forms the workload; the workload for a database server is in the form of queries. Normally, all these components will be designed to handle the “normal” workload, meaning the average volume of input data for a given time period. Allocated resources, code design, network bandwidth, and all others will be according to the normal workload. Often, however, web traffic is unpredictable. Suddenly, the web server may start receiving a huge number of HTTP requests due to a spike in user traffic. In such cases, we need to know the behavior of all the systems and applications involved. The variation in their response time, CPU/memory utilization, and network consumption all need to be analyzed. If the system cannot cope with the increased workload then it affects the above-mentioned variables. • Efficiency: The third aspect of scalability is the impact of increased workload on the efficiency of the system and application. Efficiency, in this scenario, is mainly non-functional in nature. This includes response times, Service Level Agreements (SLA), throughput (amount of data per second), number of pages served per second, and number of executed transactions per second (TPS), etc. An enterprise application has specific non-functional features that need to be satisfied. For instance, an enterprise application may be specified with a page response SLA of a 2-s time frame; a database server must handle 300 queries per second, and so on. An application is said to be scalable if it can efficiently handle a higher workload without impacting or compromising its specified features. This does not mean that an application slightly deviating from the specified nonfunctional requirements or SLAs can be termed as “not scalable.” Normally, the non-functional feature specifications and SLAs will be specified in a range, except for a few scenarios that warrant a strict nonnegotiable SLA. For instance, in the above example, the page response time SLA has a range between 2 and 3 s, which means that if the page response time does not fall below 5 s then it is still acceptable. If the application can handle a peak load and respond within 3 s, then, also, it is termed as scalable. Note Though a range with an upper limit and a lower limit for the SLA is a normally followed practice, some systems and applications need to satisfy very strict SLAs. For instance, real-time systems, mission-critical applications, and healthcare related applications might need to adhere to stricter SLA values. Little’s Law: The theorem is related to handling capacity of the system. This provides a high-level background for designing scalable and available systems. It states that for a system to be stable, the number of input requests should be equal to the product of the request arrival rate and the request handling time. Formally it is defined as: =?×W where L=Average number of requests in a stable system ?=Average request arrival rate W=Average time to service the request It can be explained by a simple example for our scenario. Let us say that the system gets an average of 100 web requests per second and it takes 0.5 s to service each request, then the average total number of requests the system can handle is 100×0.5=50 requests concurrently. We can also see from the same equation that in order to increase the number of requests that can be handled concurrently, we have to optimize the request servicing time (W). Scalability mainly deals on how to optimize W using infrastructure and software components. Throughout this chapter we will see all techniques related to this concept. Scalability in web applications Scalability in modern-day enterprise web applications is more relevant now than ever. With the explosion of engaging web applications requiring increased input data, increased online access through mobility devices, and bandwidth improvements in developing economies, all of these result in increased web activity and online traffic. Many of the key business functions such as marketing and sales use online as their primary channel. Hence the business revenue and success of an enterprise is directly dependent on its online strategy. Scalability of a system is the prime indicator of how the business can handle future growth. The following scenarios point to underlying scalability issues: • An e-commerce web application starts responding slowly due to an unexpected spike in user traffic during a new product launch • An online marketplace application faces intermittent connection drops when a huge number of bids are being placed for a specific product • An online retail website faces problems in the checkout process during a sales season In almost all cases, the scalability of an enterprise application involves a careful design of all its constituent components, systems, and layers. The application is as scalable as its weakest component; as a matter of fact, this principle of “a chain is as strong as its weakest link” holds true for all three quality attributes discussed in this book. Even a single non-scalable integration interface can pose a potential bottleneck and can bring down the system. This rule also holds true for other quality attributes such as performance and availability. The primary focus of this chapter, as well as of the book, is enterprise web application. Hence, all aspects related to enterprise web application will be discussed from a practitioner viewpoint. Wherever needed, the chapter covers all related concepts complemented by examples. Note This book considers an in-house deployment option wherein the servers are owned, planned, maintained, and operated by the organization. A brief discussion of cloud option is covered wherever applicable. 1.2 Scalability layers
The previous section gave a brief glimpse of various layers involved in establishing end-to-end scalability. Let us look at this in more detail. Understanding various layers involved is the first step in understanding scalability. This helps us to look at challenges/issues in those layers, how to optimally address each of them, and the best practices and patterns applicable for each layer. The layers depicted in Figure 1.1 are identified based on their sequence and order of contribution to scalability in the request processing chain. For example, when the user requests a web page in an...



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.