We’re often asked for our standard or recommended system configurations. There’s no single answer to this question: Logi Info applications can provide so many capabilities – in both .NET and Java environments – that the best configuration for you might be very different from any standard we set. That said, there are best practices for hosting web applications that apply, and you’ll also want to consider some metrics specific to Logi.
1. Plan Early and Plan Big
Infrastructure bottlenecks are best avoided through planning ahead.
Aim to scale out, especially if you’re expecting your user base to grow rapidly. Logi applications can be deployed in clustered environments. Take advantage of this flexibility and consider how your infrastructure can expand not only to support your app but also its data sources.
Give Logi apps dedicated space where possible. As mentioned in our previous post, this might seem a no-brainer, but it can easily be overlooked. VM hosting is a popular way to approach this.
Understand your workload. When we’re guiding customers through the planning stages of their infrastructure, or troubleshooting performance problems, we look at several factors first. Some of these apply to web applications in general, and some to Logi applications specifically:
- Total number of users
- Maximum concurrent users
- Average report size
- Average report data volumes
- Data connections per report
These numbers – even if they’re just assumptions initially – can guide an estimate of the systems you’ll need, from the number of cores per server to the minimum RAM required.
Also consider the workload of an individual user. Do most of your customers log in just to request a single, simple dashboard? Do you have a group who’ll always run a complex report by a particular time of day or week? Examining what’s being run and when can tell you how to time ETL operations and balance demands on the same systems from other applications.
2. Make Time (and Room) for Testing
Set up a QA environment. This isn’t always common practice, especially in smaller organizations or those where a formal software development environment isn’t a standard requirement, but it can save you enormous cost down the road. Plan for a staging or QA server for your Logi deployment, one that ideally mirrors your production systems and gives you a safe space in which to test your plans or troubleshoot and fix issues. Without this, you’re more likely to find out about infrastructure-related performance problems from your users first.
Test your app under load. One person logging in to your application may not find bottlenecks in your infrastructure that 10 users requesting the same dashboard at the same time will. If your testing team isn’t seeing the same slow report rendering times your users are reporting, it could indicate an issue that occurs only under load.
Load testing, like capacity planning, is a topic worth exploring in depth on its own. For Logi deployments, test against the same metrics used to define your infrastructure – number of users, average report size, and so on. It’s a good practice to design more than one test, such as for each user profile (users in a specific role may place heavier demands on your app) or by specific report.
Look for tapped resources when troubleshooting. This is a surprisingly common culprit behind performance issues that aren’t originating in the app or in the database. Some examples:
- Low disk space (often on database servers)
- Other applications sharing (and straining) the same systems
3. Monitor Early and Often
Once in production, monitor server and application traffic to spot problems early and isolate specific performance bottlenecks. Your organization may have procedures already in place for this; if not, as with load testing tools, there’s a wide variety of performance monitoring tools for web servers on the market.
Track your workload metrics. How many new users are signing on each month? Are data volumes growing? With an eye on these numbers, you’ll know when to plan for scaling system resources.
Log application activity. Logi Info’s event logging feature, especially its BuildReport and RunSQL events, can help you identify performance issues that might be slowly building behind the scenes.
Consider the impact of adding features to your application. Growth can be defined as more users and more data, but also new features and enhancements for your app. Maybe your users want you to add the ability to export data to PDF. What impact will a thousand PDF files generated during peak times have on storage on your web server? Will you need to add capacity?
These tips should set you on the right path for creating a solid foundation for your deployment. Whether you’ve done capacity planning before or are new to systems architecture, you should now have a grasp on what questions to ask and what steps to take before rolling out your app.