Summary
We started this chapter by understanding what performance engineering is and learning about the performance engineering life cycle. We also pointed out the differences between performance engineering and performance testing. Then, we briefly discussed the various tools that are available to help with performance engineering. We learned about the basics of performance benchmarking and what to consider while creating a benchmark. Then, we learned about various performance optimization techniques and how to apply them to Java applications, big data applications, streaming applications, and databases.
With that, we have learned how to do performance engineering for both batch-based and real-time data engineering problems. In the next chapter, we will learn how to evaluate multiple architectural solutions and how to present the recommendations.