The time really has come to virtualize your VFP application. We are not talking about migration or conversion or bringing in a 3rd party tool to replace it. Rather, we suggest virtualizing it and giving your perfectly fine-tuned VFP application additional years of very productive life, within a much more modern setting and UI. This may well be your best option! Read this paper – we will go through all the major issues to keep in mind in considering such a process, and along the way, you may find it is indeed your best option.
The benefits are considerable, and the downsides are very limited, as we describe in detail in this paper. It is definitely a low cost and secure option both upfront and on a continuing basis. We also provide a how-to-do guide for virtualizing a VFP application using one of the best cloud services out there – AWS AppStream 2.0.
To start off we describe what we mean by application virtualization, showing different examples of virtual environments. Clearly, the overall virtualization market is booming (even more so since the onset of the C-19 pandemic), and we show some industry statistics that confirm that. The market is growing rapidly because most industry players now recognize the significant benefits of application and desktop virtualization, and as the major players continue to improve their cloud environments, we expect benefits will only grow.
There are a number of prominent applications and desktop virtualization services available including: Amazon’s AppStream 2.0 and Workspace; Azure’s RemoteApp and Windows Virtual Desktop; Cybelesoft’s Thinfinity Virtual UI; and FoxinCloud as well as other available services. With specific focus on VFP apps., we show the pros and cons of each of these options. In considering virtualizing a VFP application, there are several major issues you need to consider and address. We discuss these, along with describing a long list of the common issues involved in setting up a virtual VFP application.
The final section provides a guide to VFP virtualization for the specific use case of AWS AppStream 2.0. We provide a step-by-step guide to application setup, including the important process steps of QA, application file sharing and database mapping, and printer and backup services.
If you have not already done so, now may be the time to virtualize your VFP application!
Why Application Virtualization / Environment
Today COVID-19 is forcing organizations to move their local desktop application(s) to cloud/virtual servers at an accelerating rate. The imperative often heard is “Virtualization is a Necessity”. It helps businesses with scalability, security and management of their applications and global IT infrastructure, and in addition businesses save significant costs by consolidating their infrastructure needs, both currently and more importantly in the future.
What is Virtualization?
Before discussing the different categories of virtualization in detail, it is useful to define the term in the general sense. Wikipedia uses the following definition: “In computing, virtualization is a broad term that refers to the abstraction of computer resources. Virtualization hides the physical characteristics of computing resources from users, be they applications, or end users. This includes making a single physical resource (such as a server, an operating system, an application, or storage device) appear to function as multiple virtual resources; it can also include making multiple physical resources (such as storage devices or servers) appear as a single virtual resource…”
Types of Virtualization
Below we distinguish 6 different types of virtualization and provide short summaries about each.
- Server Virtualization
Server virtualizations, also called hypervisors, are classified as one of two types:
- Type 1 – This type of hypervisor is also known as native or bare-metal. They run directly on the hardware with a guest operating system running on top of them. Examples include VMware ESX, Citrix XenServer, and Microsoft’s Hyper-V.
- Type 2 – This type of hypervisor runs on top of an existing operating system with guests running at a third level above hardware. Examples include VMware Workstation and SWSoft’s Parallels Desktop.
- Desktop & Application Virtualization
Virtualization is not only a server domain technology. It is being put to a number of uses on the client side at both the desktop and application levels. Such virtualization can be broken out into four categories:
- Local Application Virtualization/Streaming
- Hosted Application Virtualization
- Hosted Desktop Virtualization
- Local Desktop Virtualization
The benefits of desktop virtualization include:
- High Availability – Downtime can be minimized with replication and fault-tolerant hosted configurations.
- Extended Refresh Cycles – Larger capacity servers as well as limited demands on the client PCs can extend their lifespan.
- Multiple Desktops – Users can access multiple desktops suited for various tasks from the same client PC.
- Network Virtualization
Network virtualization is similar to server virtualization, except instead of a single server, in this case we are encompassing an entire network of computing elements. In general, benefits of network virtualization include:
- Customization of Access – Administrators can quickly customize access and network options such as bandwidth throttling and quality of service.
- Consolidation – Physical networks can be combined into one virtual network for overall simplification of management.
- Storage Virtualization
Implementation of Storage Virtualization includes several different technology options: Host-Based with Special Device Drivers; Array Controllers; Network Switches; Stand Alone Network Appliances. The general benefits of storage virtualization include:
- Migration – Data can be easily migrated between storage locations without interrupting live access to the virtual partition, at least with most of the above-mentioned technologies.
- Utilization – Similar to server virtualization, utilization of storage devices can be balanced and optimized to address over and under-utilization.
- Management – Many diverse hosts can leverage storage on a single physical device that can be centrally managed.
- Service / Application Infrastructure Virtualization
Implementations of service/application virtualization include the following 3 options:
- Virtualized Distribution
- Virtualized Processing
- Dynamic Resource Discovery
Here the benefits are analogous to those shown earlier under desktop and application virtualization, namely: high availability and optimized resource utilization.
- Summary of Virtualization Options
In summary, it should now be apparent that virtualization is no longer just a server-based concept. The technique can be applied across a broad range of computing options including virtualization of entire machines on both the server and desktop side; applications as well as desktops; storage components; whole networks; and even application infrastructure in its entirety. Moreover, virtualization technology is continuing to evolve and get better in many different and important ways, so the impetus to virtualize will only make more sense as time goes on.
2020 State of Virtualization Technology
The market adoption of virtualization continues to increase across a diverse range of markets and industries. In particular, there is an accelerating adoption rate by those industry segments that have yet to embrace virtualization. The recent entry of Microsoft into the bare-metal hypervisor space with Hyper-V is a sign of the technology’s overall maturity.
The current state of company utilization of each of the different types of virtualization is shown in the bar-chart below, along with projections of increased utilization over the next 2 years. Not unexpectedly, the server virtualization adoption rate among corporations is nearly 100%, while for application virtualization, the current adoption rate is 39% and expected to increase markedly (43%) over the next two years to 56%.
The adoption rates for all 6 types of virtualizations shown below are averages over both enterprises and small businesses. For application virtualization and desktop virtualization there are significant differences in utilization rates between these two sectors. As shown in the chart, average application virtualization adoption is expected to grow from 39% today to 56%, while average desktop virtualization goes from 32% today to 44%.
For enterprises, adoption rates are significantly higher. Enterprise adoption rates for application virtualization are expected to go to 75% in 2 years and desktop virtualization to 69%, much higher than the averages shown in the chart. For small businesses, adoption rates of application virtualization are expected to go to 39% and desktop virtualization to 34%, which are well below the average percentages.
Available Cloud Services
We summarize below some of the major cloud service solutions that can be used for virtualizing your VFP application. The solution that best fits for any specific VFP application will depend on factors related to application-specific requirements and infrastructure availability, as we get into further below.
Amazon AppStream 2.0
Amazon AppStream 2.0 is a fully managed non-persistent application and desktop streaming service. It allows you to centrally manage your desktop application and securely delivers it to any computer via simple browser.
Most important from cost management and control standpoint, the service can scale to any number of users across the globe without the company acquiring additional hardware. The service also provides centralized data and network security. Streaming sessions automatically adjust to network conditions. There are no printer drivers required.
One major area of concern is with external/special hardware integration. If the VFP application has such integrations that could be a challenge to achieve with AppStream 2.0.
Remote Desktop – Desktop-as-a-Service (DaaS) (Amazon Workspace and Azure Virtual Desktop)
In this approach you set up your VFP application as a local environment. You can centralize security without adding extra code to the application, and you can also centralize application deployments. DaaS leads to reduced costs, since there is no need to purchase expensive laptops, rather you pay as you use. In addition, there is no need for a laptop backup, which is another cost saver. Users can access the application from anywhere with any device or operating system.
As with AppStream 2.0, there is a less challenge with DaaS if the VFP application has integrations with special/external hardware. It could be a challenge, but it can be overcome by good configuration to make those work in a DaaS approach.
Other Service Providers
Two other important virtualization service providers to note here are Cybelesoft and FoxinCloud. Both are well known to participants of the South West Fox conferences.
Cybelesoft’s Thinfinity Virtual UI has its own application layer for VFP deployment, so this is a custom solution. The VFP application must be recompiled using Thinfinity’s VirtualUI libraries.
FoxInCloud has its own application layer with VFP support. You are required to use their Adaptation Assistant Kit (FAA) with your VFP application.
Uplifting your VFP Application
Given longevity in service, most VFP applications currently in use and being considered as candidates for virtualization or migration have significant complexity, including for example being built up from various VFP code vintages, unused code, external 3rd party components, and different database arrangements. We distinguish below between the most significant factors and a list of common issues that need to be considered. We recommend you create a full understanding of all these issues before engaging in the virtualization process.
Three Most Significant Factors about the VFP application
The three most significant guiding factors about your VFP application that need to be understood clearly and addressed in considering virtualization are:
- The Visual FoxPro application is 32 bit and of course, will remain so in the cloud environment. So everything we do in setting it up in AppStream 2.0 must be consistent with this 32 bit underlying architecture support.
- We need to be fully familiar with the desktop based application (Windows Form) that the VFP application is currently resident on, and use that knowledge in setting the app up on AWS AppStream and deliver on web browser.
- We need to know if the VFP app is currently using a File-system-based Database (DBF), or if parts or all of the database have been converted over to another relational database, and if so, which one. Otherwise, centralized file server must be setup.
Other Major Common Issues
Here is a listof other major common issues and concerns that you will need to confront in setting up the virtual VFP application:
- Centralized Database
- Multi-User Session Management
- Temporary Tables (cursor)
- External Hardware Integration (Drivers)
- Centralized Printer with Pre-Print Paper
- Integration with local applications (which cannot move to the cloud) – Mainframe, back office applications, etc.
- Performance – Especially for large size executables
- Data Concurrency
Guide to VFP Virtualization Using AWS AppStream 2.0
Here we provide a brief guide to the steps that need to be considered, and the actions to take, to virtualize your VFP application by deploying it on the Amazon AppStream 2.0 platform.
First off you need to prepare the VFP application, which will include taking care of the following 4 issues:
- Remove Hardcoded DBF File Paths
- Move DBF File Paths to Configuration file (INI)
- If Single User Access – Copy Executable and DBF in the same folder
- If Multiuser Access – Copy Executable and DBF into Map Drive Folder and give R/W Access to the Users or Group
What follows below is a step by step setup of a VFP Application on AppStream 2.0, please refer to the PowerPoint presentation.
|Process Step||Considerations & Actions|
|Some Pre-Requisites||Need Amazon AWS account. Need at least Associate Level Knowledge of AWS Cloud Platform. Need knowledge of Microsoft’s Active Directory network, group policies and configuration. Need full understanding of the VFP code and database (as discussed in Section V above).|
|Create AWS Account||Log in to the AWS Console |
|Create an AppStream Image|
Choose AppStream 2.0 Do this by choosing the option ImagesàImage Builder
|Launch image Builder||Create a running image by choosing the appropriate machine type based on your application requirements. |
For example, we choose stream.standard medium as the example for this walk-through.
Once Image is ready, connect to it using the tab “Connect”.
|Login to windows desktop||Before we proceed with creating a custom image, we need to get the other underlying network infrastructure setup at this point.|
|Create underlying network infrastructure||The following AWS services also need to be created: Amazon FSx |
AWS Managed Microsoft AD
|Set up Amazon FSx for Windows File Server||This enables a persistent shared storage for the streaming AppStream Image.|
|Create a 32GB file system||This is the least size we can have on an FSx share. |
Once done, you may access it using the DNS name which is available for you right when you click on the name of your file system.
You can also mention the active directory domain while creating the FSx share.
|Create AWS Managed Microsoft AD||This is required for authentication of AppStream Fleets to the shared storage and to communicate with other required infrastructure which the application requires depending on its complexity. |
Click next and choose your Directory name, password, etc., and choose the same VPC which you’ve used for creating AppStream, FSx and other supporting services.
Create AWS Single Sign On (SSO) and IAM Identity Provider to create a single sign on entity and URL which will be later used to sign on to the streaming instances/stacks
|Create AppStream Fleets||Once all of the above is in place, AppStream Fleets are to be created using the domain joined image we created from our Image Builder. |
Elastic scaling for streaming fleets can be defined on the scaling policies tab available on the Fleet menu.
Create Stack Manage the streaming fleet and also to act as a federated identity from AWS SSO.
|Use CloudWatch||Use CloudWatch https://console.aws.amazon.com/cloudwatch/ to track down any unlikely events that may come across. |
The streaming application will be accessible using the AWS SSO application URL where you can securely authenticate and access your streaming resources.
|Launch the Application!|
Use following links to review more details for step-by-step guide:
We hope this paper has been useful in addressing some basic issues involved in virtualization of a VFP Application and has provided a rationale for doing it now. The major points of the paper were the following:
- Why now is the time to move your VFP application to the cloud?
- A description of some of the available application/desktop virtualizations cloud services.
- How to plan your VFP application virtualization?
- Step by step guide to VFP virtualization using one specific cloud service: AWS AppSteam 2.0
- Price Evaluation structures of popular solutions based on AWS and Azure.
There are many other ways to go than AWS AppStream 2.0, but many of the issues to consider will be the same. We now have experience with AWS AppStream 2.0 and consider it an excellent option, one that will take advantage of all the new AWS features to be added in the future. Contact us if you have specific questions, we will be glad to discuss with you.
By G.N. Shah, Ronald Mueller | November 4th, 2020 | Migration