Methods of Testing and Logging to Check Server Uptime
Common themes among the advice brought together across APMdigest’s series included using Network Emulators to simulate real-world conditions, testing latency and realistic load (or cloud testing and capacity planning), establishing baselines with performance monitoring, analyzing application logs, and testing as early in the development cycle as possible.
Network Emulators allow you to test on a duplicate of the production environment, so there’s no surprises when the application actually goes live. Another commentator offered this additional piece of advice: not only test in the same environment but test using the same profiling tool you will use in the actual production environment, and make sure it can “find meaningful correlations at scale” as “A top methods list will only show you where your time went processing your synthetic load.” (Joe Rustad, Manager, Software Development & Architecture, Dell Software)
Cloud testing and capacity planning is most effective when it is designed to simulate user transactions and includes stress testing, which not only tells you the limits of what your system can support but also what happens at the limits. One commentator particularly noted that “Organizations adopting SaaS apps like Office 365 or Google Apps often don’t realize that their internet connectivity isn’t up to the increased traffic.” (Patrick Carey, VP Product Management and Marketing, Exoprise)
Establishing baselines prior to production is helpful for being able to demonstrate what “normal” performance is to stakeholders on other teams and for having a point of reference grounded in the structured data that supports your infrastructure dependencies. This can also make it easy to detect performance issues (on both the application and the network side) at the development or staging level rather than the production level (which amounts to a cheaper resolution for a number of reasons). Arguably the most important aspect of establishing baselines is checking them regularly against real time performance in production.
Creating and analyzing application logs is what facilitates early testing, by informing what pre-production issues there are and providing a tight feedback loop to guide your (and Development’s, depending on how your teams are structured) troubleshooting efforts.