The goal of the course is to outline key concepts, principles, and approaches that are used to design highly loaded systems where performance, scalability, and availability are first-class quality attributes.
By the end of this course, candidates will have acquired in-depth knowledge about how to describe business requirements, how to design a highly loaded system, and how to create a proper test plan.
Key concepts covered in this course
- Different metrics used to quantify performance, scalability, and availability, such as response time, percentiles, latency, steady-state availability, resource utilization, etc.
- How to properly formulate and collect business requirements pertaining to a high load system, which must include at least a stimulus and a measurable response for a particular workload and under a specific working mode.
- Architectural styles that might be used while designing a high load system, with their pros and cons (e.g. microservices, event-driven, command query responsibility segregation, serverless, lambda).
- Architectural tactics to achieve performance (e.g. caching, batching, lazy loading, throttling, optimistic locking, back pressure, etc.), scalability (e.g. data push, data pull, distributed and parallel processing, etc.) and availability (e.g. replication, redundancy, disaster recovery, circuit breaker, bulkheads, etc.)
- Advanced development techniques such as thread affinity, NUMA, large pages, false sharing, Data-Oriented Design, C-states, RamFS/TmpFS, memory access patterns, lock-free algorithms, etc.
- How to elaborate a test plan with a focus on stress, endurance, and load testing
- High load system concept (performance, scalability, and availability)
- High load system requirements: identifying non-functional requirements for high-load systems
- High load system architecture design pertaining to high performance, highly scalable and high available tactics and anti-patterns
- High load system development
- High load system testing
- Examples of high load systems (e.g. Linkedin use case, Uber use case, etc.)
- 16 hours
- software developers
- technical leaders
- software/solution architects
- business analysts with a technical background or passionate about technology
- test engineers with a technical background or passionate about technology
Examples of Recent Feedback
“The trainer was very well prepared. He answered all of our questions, even if they were not really the subject of the training.”
“Very interesting course. The trainer presented with many examples based on his experience.”
“Ionut is a very knowledgeable and experienced trainer”
“I liked more the advanced part about how to tune an application, outside of the programming language, to get a better performance”
“Excellent course content helping me to understand a lot of things, from a very high level and abstract to a very deep and technical perspective”
“For a QA some of the concepts were a bit advanced, but nevertheless I recommend this course if you want to get in touch with real technical topics. The trainer clearly explained to them, even for less technical people”
“Interesting and informative course, presented by a trainer who knows a lot of stuff. I got a lot of ideas and techniques that I can use to build more efficient applications in my daily job”
At the moment this course is available only for companies, teams, or groups of students. The individual subscription (i.e. single person) is not an option at the moment.