Designing high-performance applications - course 46,900 rub. from IBS Training Center, training 25 hours, Date: March 11, 2024.
Miscellaneous / / November 28, 2023
Even before designing any software system, you need to understand that due to certain limitations it can always become a high-performance system. When developing a high-performance system, it is necessary to determine what parameters define the system as high-performance. If the system is high-performance, then for its successful implementation special measures must be taken to ensure performance.
The course examines the differences between high-load, high-reliability and high-performance systems.
The main objective of the course is to provide an understanding of the basic concepts, principles and approaches used in the design of high-performance systems.
A common phrase: “It should work fast!” - this is not a requirement. During the training, participants will not only learn why this is not a requirement, but will also learn how to properly work with and analyze performance requirements. The course also introduces the concepts of “critical scenarios.” Students will consolidate the acquired knowledge on working with requirements in practice during a practical assignment.
The course examines the main examples of loss of productivity of software systems. After this, the main ways to combat system performance are given. Also within the framework of the course, patterns used in the design of systems with increased requirements are discussed using practical examples of application. performance, provides information about the main anti-patterns encountered when implementing software systems that affect productivity.
Special attention is paid to preparing the system for testing and analyzing test results. Describes the creation of a program and methodology for testing high-load systems, load models systems and discusses a methodology that allows for quantitative assessment of performance systems.
Since software system developers often have to solve the problems of developing highly loaded systems that process large volumes of data with given requirements for response times and volumes of processed data, the course will be useful not only for architects, but also for development project managers, developers.
1. Concept of a high-performance system (2.5 hours):
High-Performance application, High-Load application, High-Availability application.
Application performance management.
Dependence of the price of error correction on the stage of detection and the stage of introduction.
Basic characteristics describing system performance.
System load model.
2. Requirements analysis for high-performance systems (1.5 hours)
Formation of non-functional requirements for high-performance systems.
Dealing with contradictions when creating performance requirements.
Completeness of requirements.
Workshop (1 hour):
Analysis of requirements for inconsistency and completeness.
2.1.Architectural tactics. Productivity Tactics (1.5 hours)
Features of the formation of requirements for queuing systems (QS).
3. Design of high-performance systems (2 hours)
System quality attributes.
Tradeoffs when simultaneously working on several quality attributes: the example of CAP and PACELC.
Workshop: Analysis of the principle of balancing quality attributes using the example of Amazon Dynamo DB (1 hour):
Consideration of approaches to flexible system scaling using the example of Amazon Dynamo DB while maintaining control over fault tolerance and maintaining constant performance.
3.1. Classic Performance Approaches
The main causes of system performance loss (1 hour).
Basic methods for increasing system performance (1 hour).
Principles of horizontal and vertical scaling of systems (0.5 h).
Workshop (2 hours):
Analysis of an example of system scaling.
Converting a monolithic system to Map-Reduce.
Overview of Map-Reduce.
Converting Map-Reduce to Lambda architecture to reduce the problems of pure Map-Reduce practice.
4. Patterns for implementing high-performance systems (5 hours)
The main classes of patterns used in building high-performance systems: GRASP, Architecture patterns, Application Integration patterns.
Examples of practical implementation of templates in modern standards.
Examples of practical implementation of templates in modern integration systems development frameworks.
5. Coding of high-performance systems (2 hours)
Basic issues in coding high-performance systems.
Optimization methods for modern compilers and runtime environments.
6. Testing high-performance systems (2 hours)
Types of tests used to prove system performance.
Preparation for testing (drawing up scenarios and creating a load model).
Analysis of test results.
7. SPE methodology (1 hour)
Introduction to the SPE methodology. History, boundaries of use.
Methodology for analyzing systems using SPE.
Workshop (1 hour):
Consideration on a practical example of using the SPE methodology for:
Estimating the limits of system performance based on the current characteristics of the hardware and software;
Assessing the impact of architectural decisions on system performance;
Estimates of hardware requirements based on performance requirements, based on scaling of current system processes.