Development in Virtual Environments
In particular, virtualization is advantageous for development environments because it enables isolation (sandboxing) between development environments to prevent them from impacting one another. Using virtualization technology also speeds up the process of environment configuration. It is a best practice to keep copies of each version of development environment for future enhancement.
When running AgilePoint on a Virtual Environment, and specifically, when target for production environment, it is essential to keep and follow key Virtual Environment best practices for deployment, optimization, and the ongoing monitoring and operations.
Note: The below is just a handful of key consideration and metrics. Please follow with the complete recommendation and best practices of your virtualization platform.
Plan the Deployment within your Virtual Environment
The biggest challenge in virtualization is still the sharing of resources across your infrastructure and applications. It is essential to plan VM deployment properly to assure and make sure proper and balanced resources allocation, prioritization and sharing across the different VMs, from both host resources perspectives, such as CPU and MEM as well as the underlying infrastructure, such as network, storage etc. can handle the load.
Proper Size the AgilePoint Machines for the Expected Workload
The biggest challenge in virtualization is still the sharing of resources across your infrastructure and applications. It is essential to plan VM deployment properly to assure and make sure proper and balanced resources allocation, prioritization and sharing across the different VMs, from both host resources perspectives, such as CPU and MEM as well as the underlying infrastructure, such as network, storage etc. can handle the load.
Reserve Resource Allocations for AgilePoint Server VMs
AgilePoint Server's core engine is normally active and running at all times, even if no users or external systems are currently interacting with AgilePoint. This engine is responsible for various functionality, such as handling requests to the Workflow API and for scheduling and coordinating time-dependent events (e.g. reminder emails) and many more. The core engine is optimized to consume as little of the server's resources as possible, but it will require some portion of the server's CPU cycles and system memory.
For this reason, it is important to make sure AgilePoint is reserved with compute resources, memory, and CPU.
As a sample reference:
Production server deployment.
Bases on sizing: 24GB Mem, 8 Cores
Based on System Requirements for AgilePoint Server: 8GB RAM, 2 Cores.
As a rule of thumb, the following would be the recommendations:
- When applicable – reserve all required resources based on the server sizing, i.e. 24GB Mem, *8 vCPU.
- When full reservation is not applicable: Reserve based on server minimum requirements.
- When #2 is not applicable as well: reserve minimum of 4 GB RAM and *1 core.
* Different virtualization platform may use different technics and practices for reservation, with more difference approaches for CPU, i.e. – some support reserve a vCPU, while other support reserve CPU cycles and some other options. Please follow with the specifics and best practices of your virtualization platform in place.
Monitor Ongoing Key Virtual Metrics for Healthy Performant Environment
As mentioned, proper planning of the virtual deployment, sharing, prioritizing, and balancing resources, is the key challenge with virtual environments.
For this is it critical to have ongoing monitoring and health checks for the virtual environments for key performance metrics to make sure they are within the normal ranges.
This will include the following:
- VM CPU Wait and VM CPU Ready
- Memory Swapping
- Memory Ballooning
- VM Disk Read/Write IOPS and Throughput
- Network Connectivity
- Datastore capacity usage and availability
Monitoring this metrics are essential to keep healthy, performant, and optimized virtual environment (not just for the AgilePoint VM but the for the complete virtual environment).
Note: When issues arise with one of this metrics, this may be transparent from within the AgilePoint VM, i.e. – corresponding on the specific issue, task manager may show 30% CPU or 50% MEM etc. and for that reason this needs to be monitored from the hypervisor and virtual environment perspective.
Hot Migration of VM Between Hosts
Some virtual platform support and provide the tools to hot migrate a machine from one host to another according to specific rules and triggers such as auto scale, such as VMWare vMotion or Hyper-V Live Migration etc.
Though technically, this is supported from AgilePoint, for production environments, it is important to plan ahead and decide whether to enable this or not, as depending on the environment deployment, topology, workload etc., this may impact on the environment availability for few seconds and up to few mins. This is especially true for clustered environments.
Proper planning can allow proper rules and practice setting for live migration and make environment sustainable during the live migration.
Test and lower environment such as development etc., and generally, environment which are not required for continues availability, can be ignored for this.
Note: There is no risk of data lost or corruption due to live migration. The risk is just with few seconds to minutes of availability.
Specific AgilePoint Configuration to Optimize for Virtual Environments
When running AgilePoint on a virtual environment, some AgilePoint configuration should be configured with more grace to support typical known virtual environment latencies, due to load on the host resulting on shortage with resources for the AgilePoint server.
Following are some configurations to be considered and adjust:
- InitialLeaseTime
For more information, refer to Configuring Ascentn.AgilePoint.WCFService.exe.config.
- RenewOnCallTime
For more information, refer to Configuring Ascentn.AgilePoint.WCFService.exe.config.
- Retry-policy (Ascentn.AgilePoint.WCFService.exe.retry-policy.xml)
In addition to the different configuration adjustments, for clustered environment it is also recommended to evaluate and consider externalizing the CSM out from the AgilePoint Server service into its own dedicated service and possibly on a separate machine.
As there would be different form factors and consideration involved into this tuning which will be specific to target environment, please consult your AgilePoint integrator or AgilePoint Professional services.
Conclusion
Virtual Environment are not just highly popular, but a standard practice, and provide variety of values with digital infrastructure needed for dynamic adaptation and scale, offer development teams, operation teams and the businesses as whole a cloud-oriented, innovative—and agile managed—service for the future.
Yet, as virtual is based on art of sharing and balance, it is important to follow on best practices, to make sure proper optimal sustained operation and health. Please advice your virtualization platform recommendations, best practices, and professionals to maintain a healthy and happy environment for the above mentioned consideration and metrics and many other needed.