How to get the best performance out of Salesforce and other SaaS apps
In order to understand and get full visibility into SaaS applications and how they are performing, you need to do the following:
1. Measure the actual end-user experience. If you could perform synthetic transactions, logging into a SaaS service like a real user and using the application like a real user, this would allow you to directly measure how long it takes to perform common actions. You could look at how long it takes to, for example, activate a Salesforce account today versus what the application was able to do yesterday. You may find that the service is functioning properly but running slower than users may expect. You could detect if any part of the application is not working at all or if it's not working up to the expectations of the user or the SLA. To do this accurately, you would need to do it from your own location over your own network, making it as realistic a representation of the actual user experience as possible.
2. Identify what is competing for resources on your network. Today, every employee has one or more devices capable of streaming high definition images and audio, most of which will automatically connect to the company wireless network. Now that companies have many of their critical apps connecting to the Internet, those critical apps can be competing for resources with the recreational apps. A single Google Hangout videoconference consumes more bandwidth than 20 sales people on Salesforce, and usually the network is going to treat them exactly the same.
Since everything is web-based now, you need to identify how many applications are in use on your network and how many people are running them. An increase in network traffic is going to reduce bandwidth and further erode SaaS performance. By understanding where your resources are being consumed, you can determine if there are any apps that shouldn't be allowed to consume capacity.
One thing you can do is set up a separate wireless network for the mobile devices employees are using and prevent them from going on the regular network through the use of MAC address filtering. By doing that, you can dedicate bandwidth to each network separately, gaining control over how much capacity is available to different devices.
3. Find and fix network problems. If you're not getting what you paid for from your ISP, or your network isn't configured properly, or your wireless isn't working as expected, that can have an effect on every application. Network issues tend to be localized differently than application issues, and they tend to be sporadic -- 90% of the delivery path of a SaaS app is beyond your firewall. By monitoring the network all the way back to its hosting site, you can understand if the underlying infrastructure is up to the task of delivering a quality application experience to.
4. Ensure high quality network bandwidth and equipment. Getting more bandwidth isn't going to necessarily make you SaaS apps run faster or perform better, but higher quality bandwidth might. Web applications are TCP-based with guaranteed delivery and even small amounts of packet loss will have an incredible impact on web application performance. When a web application has 3-5% of packet loss, also represented by the retransmit rate in flow-based applications, the overall user experience of that application will be terrible.
The solution is to make sure you're not experiencing packet loss and retransmits on your current Internet connections and to ensure your network equipment, as well as your ISP's, is working properly. The reason many companies upgrade from residential to business class or other dedicated circuits is to ensure tighter tolerances, better equipment and less chance for packet loss for their web and SaaS apps.
5. Choose the right SaaS instance for your users. Salesforce, for example, operates 27 production "instances" globally, with 21 of them in North America. The location of your office in relation to the location of your Salesforce instance and all your Salesforce plug-ins factor into performance and central to many of the issues Salesforce users see.
Reducing the physical distance and the number of network hops to Salesforce can have a huge impact on performance. Of course, no one is going to notice a 20 or 30 milliseconds delay, but when those 20 or 30 milliseconds are tacked on to each of the 75 objects on a Salesforce web page, and users are spending several hours in this mission critical SaaS app, they really add up. Most other SaaS services do not have the option to choose where your account is provisioned, but you should take advantage of this option with Salesforce and choose the instance that is closest geographically to your users, as this will give the best performance.
6. Enable intelligent caching. Web applications tend to have lots of Javascript and Cascading Style Sheets to provide a rich user experience that is comparable to what people experience with a desktop application. As a result, you're going to have 3, 4 or 5MB Javascript files that can take time to download, especially when you have packet loss. One page with multiple plugins can have a total page size of 5 MB. Since it rarely changes, if you can enable caching on your network and create a cache derivative of it stored locally, you'll be enabling larger file downloads and creating a much better experience for your users when loading Salesforce.
7. Assess your Salesforce plug-in usage. The average Salesforce customer has seven plug-ins, each of which can dramatically help or hurt the overall end user experience. The majority of your total data transfer could actually be from these third-party plug-ins, which work with Salesforce to provide lead sourcing, marketing, sales and accounting capabilities. Therefore, you want to explore how much bandwidth your plug-ins are using, and from where these plug-ins are being served. The performance impact of these plugins should be a consideration when choosing between the available plugins, not just the features they have available.
These are seven fundamental areas that you and your IT team can monitor to resolve Salesforce and many other SaaS performance issues. Even if you're getting everything right with respect to how you're running SaaS, you need to make sure the entire underlying infrastructure is capable of delivering a quality experience. By focusing on the full experience, you'll triage problems quicker and solve them when it counts, regardless of what SaaS application you're working on.
Armstrong is Director of Product Management at AppNeta, a Full Stack Application Performance Management (APM) technology leader providing integrated performance visibility that spans the application code, through the network, to the end user.