12 Investigating apps’ behaviors in large systems

 

This chapter covers

  • Investigating app communication issues
  • Using log-monitoring tools in your system
  • Taking advantage of deployment tools

In this chapter, we go beyond the border of a single app and discuss how to investigate situations caused by apps working together in systems. Today, many systems are composed of multiple apps that communicate with one another. Large business systems leverage various apps, and they are often implemented with different technologies and on different platforms. In many cases, the maturity of these apps also varies from new services to old and messy scripts.

Debugging, profiling, and logs aren’t always enough. Sometimes you need to find bigger clues. An app can work well independently but not correctly integrate with other apps or the environment it’s deployed into.

We’ll start in section 12.1 with ways to investigate communication between the services of a system. In section 12.2, we’ll focus our attention on the relevance of implementing monitoring for apps in a system and how to use the information a monitoring tool provides. We’ll end this chapter’s discussion in section 12.3, where we’ll discuss how to take advantage of deployment tools.

12.1 Investigating communication between services

12.1.1 Using HTTP server probes to observe HTTP requests

12.1.2 Using HTTP client probes to observe HTTP requests the app sends

12.1.3 Investigating low-level events on sockets

12.2 The relevance of integrated log monitoring

12.3 Using deployment tools in investigations

12.3.1 Using fault injection to mimic hard-to-replicate issues

12.3.2 Using mirroring to facilitate testing and error detection

Summary