How can I optimize the performance of my Appian application?
Discussion posts and replies are publicly visible
Some key performance optimization techniques include minimizing database queries, caching data, and leveraging Appian's asynchronous processing capabilities.
Use only the essential components and keep the interface and process model simple. Enter less data and apply filters to reduce database queries,Use Appian’s caching for frequent data access.----For large lists, use spreadsheets to reduce loading time.--- Wherever possible, use a parallel gateway in processes.---Only load components when necessary.--- Perform regular load tests and use the Appian health check tool.---- Keep up to date with Appian’s design and development guidelines.
Is this an academic question or a real use case?
You can go through multiple documentation available by Appian on this topic.
Here is one of them - docs.appian.com/.../monitoring-applications.html
There's a new article published by Appian focusing on improving performances of Interfaces, using it's best practices.
https://docs.appian.com/suite/help/24.1/interface-performance.html
There's also an designer performance view to see the detailed performance info of the expression. For Records we have Performance tab in "Monitoring".
Alternatively we use Health Checks and logs in our organization to track user focused performance enhancement.
We have Admin console's Rule Performance Page to get info for each rule. Sort by max time taken
You can also refer to the below checklist for improving the performance of appian application Application Monitoring Checklist
1. Architectural PracticesLeveraging Data Fabric & Synced Records: Using Record Types with data sync enabled is critical. It provides up to 10x faster performance for complex queries on large datasets (up to 10 million rows) by caching data in-memory.Modular Application Structure (Loosely Coupled Components): Breaking down large applications into smaller, reusable components, interfaces, and expression rules. This approach isolates changes, allowing teams to update parts of the system without risk to the whole.Separation of Data from Processes: Allowing the database to handle data-intensive tasks (sorting, filtering, aggregation) instead of performing these actions in process nodes or interfaces.Asynchronous Design for Responsiveness: Using a!asyncVariable() or loadDataAsync for loading data-heavy dashboards, allowing the UI to render instantly while background data fetches.
2. Development & Performance PracticesOptimized Queries (Removing SELECT *): Explicitly selecting only required fields using a!queryRecordType() or a!queryEntity() reduces payload size and significantly improves UI load times.Avoiding Excessive Chaining: Limiting activity chaining to only necessary user-interaction steps and limit it to 30.Chaining too many nodes can overwhelm system resources and make debugging difficult.Proactive Performance Testing: Using Appian’s Performance View and Health Check tools during development, rather than as a final check.Interface Optimization: Using a!refreshVariables() to cache data and controlling evaluation with showWhen to prevent unnecessary calculations on screen load.Leveraging Process Alternatives: For high-volume transaction processes, using "headless" patterns (processes without user interfaces) and asynchronous subprocesses prevents engine overload.
3. Governance & DevOpsAdopting DevOps Pipelines: Utilizing Git repositories for version control and Appian’s native Compare and Deploy capabilities for consistent, automated deployments across environments.Standardized Naming Conventions: Prefixing objects (e.g., APP_NAME_), using CamelCase, and removing unused rules before deployment to maintain a clean, readable, and manageable environment.Using Application-Specific Groups: Never using "All Users" or individual users for object security; assigning permissions to application-specific groups to ease governance and security management