Introduction
In the previous chapter, you learned a few techniques to efficiently package and get the application ready for deployment and we looked at a number of techniques to provide an environmental configuration without changing the code. With the deployment and configuration woes behind us, the last (but not least) important step remains—ensuring that we have complete visibility, monitoring, and management control of our application, as it is running in the production environment and is exposed to the harsh environment of customers' (ab)use.
Just as airline pilots don't like to fly blind, developers don't get excited if they can't see how their beloved application, that they worked hard on, performs in production. We want to know, at any given time, what the CPU utilization is like, how much memory we are consuming, whether our connection to the database is up and available, the number of customers who use the system in any given time interval, and so on. Not only do we want to know...