The following is a guest post by Harrison Hersch, Director of Engineering for MCF Technology Solutions, a full-service Web 2.0 PaaS provider that specializes in enterprise-level solution design and development.
In the past, we have tried many different solutions to fill this need. These solutions range from highly complex and expensive solutions that require managing another server, writing custom code inside individual solutions and even some open-source alternatives. A few months ago, we found Azure Application Insights and the internal adoption and immediate value gained have been amazing. Application Insights is a tool that is meant to be utilized in production environments and offers great information in near-real time. The concept is simple. A "resource" is created in Azure, and you configure the resource to be used in one of three ways (or any combination of the three):
- On the server/web app
- Compiled in the code
- Code snippets on each user-interface page
You can find details on each configuration type and what data is available respectively here.
Here is a great use case. We have many clients who come to us for forward-facing web portals – essentially a web site that interacts with their internal database or platform. Understanding the analytics of how these tools are used would be great in and of itself, but we are able to get full life cycle information by leveraging Application Insights. That means we can see averages or individual requests and how those requests perform, where the latency is (SQL queries, API calls, etc.) and even browser errors. One of the technical challenges of any user-facing/external site is that troubleshooting and replicating issues can sometimes be difficult. Using Platform-as-a-Service (PaaS) technologies means there are four different potential areas of breakdown:
- The server where the portal is hosted
- The client/browser
- The core platform
- The server-side code
While we have always put a lot of effort into error handling and logging, it can sometimes still be difficult to identify at what step in the application stack any given error is occurring. Previously, troubleshooting issues could require our Technical Leads to collaborate with System Engineers as well as Coders to research and debug. Certain logging also only existed in environments that are restricted due to security practices (for more information on how we keep your information secure, click here). Moving to Application Insights has enabled us to elevate our technical operations. We can now provide granular access to Application Insights resources in the new Azure Portal to specific Technical Leads and Coders, giving them unparalleled insights into how applications and environments they manage are performing. All parties are then able to see specific errors, and quickly come to an action plan without needing to loop in superfluous resources. A great example here would be an integration between QuickBase and another custom application. If a client reports a perceived performance issue, Application Insights not only quickly tells us the trend of how the tool is performing day-by-day or week-by-week, but allows us to look into what part of the routine is the bottleneck. This is extremely valuable because it gives the person most qualified to diagnose the issue, the Technical Lead, easy-to-consume information that may tell us it is source system or the other system that may be experiencing performance issues. This in turn allows us to deliver rapid information back to the client with clear actionable next steps.
While nearly everything in Application Insights has been valuable for us, a few things have specifically stuck out:
- Dependencies: We do a lot of integration work. In some cases, we are hitting multiple endpoints to transform and model data. The concept of Dependencies in AI has helped us to quickly understand performance issues.
- Browser vs. Server Performance: While Application Insights offers many different performance tools, we especially gain value out of being able to tell the breakdown of a browser page load time. For example, a page took 3 seconds to load, but 1.5 seconds of that was server response time.
Application Insights from Microsoft Azure can provide valuable intelligence for a variety of solutions. We leverage this tool as a standard in all new and compatible server-side enhancements. Contact us today to learn how MCFTech can provide you the insights you need.