As worldwide spending on public cloud services and infrastructure continues to increase each year - forecasted by IDC to reach $160 billion in 2018, up 23.2% compared to 2017 - Windows is rapidly losing significance as a major platform for application development. The reality is we are moving away from a PC-centric world, in which our entire existence was kept within the confines of our desktop, to living in a user-centric world where we want to access applications and do business from anywhere, at any time, and from any device.
The challenge for those producing desktop applications (often referred to as legacy applications), especially those that are Windows-based, is how to transform them to meet the needs of today’s users, without significant expense or operational disruption. In addition, companies want to retain their use of the substantial investments they’ve made in those existing systems, which are often deeply integrated into their organization’s processes.
How to turn desktop applications into cloud applications
After you determine which type of cloud environment is best for your project (private, public, or hybrid), the next step is to pick the best strategy for implementing your cloud migration. At a high-level, your migration options fall into two distinct categories:
- Re-hosting, sometimes known as the “lift-and-shift” model, covers options such as containerization or virtual machines (VMs) and refers to replicating an on-premises application in the cloud without changing its architecture or design.
- Rewriting, also associated with refactoring or re-architecting, refers to scrapping your application’s architecture and design, in favor of building it again from the ground up with a cloud-ready API architecture.
Let’s take a closer look at making the transition from desktop to cloud. Read along, jump to the section that interests you most, or email it to a colleague who needs to know:
- Why independent software vendors must move to the cloud
- Where and how to deploy your application
- How to turn existing desktop applications into cloud applications
- The role of APIs in the evolution from desktop to cloud
Why independent software vendors must move to the cloud
Software’s present and future are located in the cloud. If you’re an independent software vendor (ISV) whose business isn’t already cloud-ready, you’re behind. And not just one year behind, or two years behind. You’re nearly a decade behind where you should be in your digital transformation.
We’re here to help you catch up. To offer you a frictionless path from desktop apps and physical servers to the cloud. That path starts here, where we’ll explain why more and more businesses are moving their databases and software deployment to the cloud. After all, cloud didn’t become the way of the world for no reason; it carries significant advantages that pulled forward-facing software organizations there.
Cloud pushes IT costs down (and pushes scalability up)
Servers are a money pit. Purchasing them, spinning them up, securing them, maintaining them. All those activities carry a significant price tag. Regardless of whether you’re a small, medium, or large ISV, server-related costs are likely a large portion of your IT overhead.
On the other hand, if all you had to pay for was server space itself, and not the physical object, the room it sits in, and the associated maintenance, you would spend significantly less money. The folks at SherWeb.com found that switching from physical servers to cloud-based servers can cut server-related costs by 79% per month (from a monthly cost of $1,476.31 to just $313.90, in SherWeb’s example). That’s over $1,000 a month, ready to be utilized elsewhere. While these cost savings will vary based on which cloud provider you select, the consensus is that switching from on-premise infrastructure to the cloud’s Infrastructure-as-a-Service (IaaS) model will save you a load of money (and maintenance-related headaches) in the long run.
Eliminate the guesswork of server spending
Additionally, switching to cloud-based servers eliminates a lot of guesswork from your future IT spending. In the past, purchasing more server space was an ordeal. It required forecasting how many resources you needed now and in the future and attempting to time your IT infrastructure purchases accordingly. If you forecasted inaccurately, you were left holding the bag on expensive, unused servers. This model held proportionately drastic consequences for you as an ISV, because small-to-medium sized companies often couldn’t afford to eat the cost of sitting on dormant servers. Instead, you were forced to hold out as long as possible before investing in additional IT infrastructure.
With cloud-based infrastructure, spinning up new servers is almost as easy as clicking a button. And spinning those servers back down is just as simple. If your company expects a period of particularly heavy usage, you can temporarily purchase more server space or faster servers from your cloud provider. After the period of heavy usage passes, you can let those resources go. If your customer base increases permanently, you can easily expand your server base to match, without sourcing and physically installing new servers. And as you spin resources up and down, you’ll be able to see exactly what you’re spending, providing you with a clearer sense of return on investment.
Cloud IaaS’s flexibility allows you to scale your data center to the exact size and speed of access that you and your customers need, at a fraction of the cost of physical server infrastructure. As you make less speculative server purchases and failed IT investments, you can invest the resources you save into developing and maintaining your business instead of your infrastructure.
Cloud makes global deployment, access, and sales easy
When you move your infrastructure to the cloud, you allow your business and your customers to take advantage of global data access and internet-based software delivery.
Both your customers and your internal staff will be impressed by their new, easy access to your data. But that’s just the start of what a shift to cloud infrastructure provides. With your data easily accessible from the web, you can begin creating internal and external-facing APIs and microservices that allow you to integrate your existing business logic into new applications or third-party resources.
The shift to cloud infrastructure is the first step toward being able to offer cloud-based software products using the Software-as-a-Service (SaaS) model. When you migrate and deploy your product via the cloud, you provide your customers with secure, reliable data and software access, while also increasing your business’s ability to patch or update your product in response to customer demands. For customers with particularly sensitive data, you can offer them a hybrid cloud solution, which provides both the accessibility advantages of cloud-infrastructure and the security of keeping sensitive data on-site.
But offering your product through the cloud won’t just benefit and help you retain your existing customers. It will also open your business up to entirely new markets.
Offering cloud-based software increases your market share
For software vendors, investing in the cloud is nearly equivalent to investing in sales and customer retention because it allows you to sell globally - without spending a fortune to hire a large team. This is what industry leaders mean when they refer to cloud computing leveling the playing field for small to mid-sized companies. By providing a cheap, SaaS-style offering over the cloud, you create a great jumping-on point for new customers. From there, you can sell these new customers on your pre-existing software and services.
A move to the cloud also sends an important signal to your existing customers. It tells them your business will continue to evolve to match the market, and that an investment in your software is sustainable. You can also monetize the new cloud-based services and products you provide, creating new revenue streams from your existing customer base.
According to Gartner, worldwide SaaS growth is increasing even faster than their initial forecasts, with a total expected revenue of $73.6 billion in 2018. By combining different feature sets and price points, you can gain new customers across the globe using your own cloud-based software.
Cloud aligns you with industry standards
Until recently, physically installed, desktop-based software was the way of the world. If you sold or used software, that software was deployed and accessed from Windows-based desktop systems. But now, businesses (including your own) expect software to function outside Windows and outside desktop computers.
If you’re in the business of selling software, your product must be accessible online through the cloud, because that’s where up-and-coming businesses expect to find and use their solutions. Google Apps, Microsoft Office 365, Salesforce, Quickbooks Online, Xero... all these business solutions are available directly over the internet, thanks to the cloud. If your company’s software requires physical delivery and infrastructure, you’re at a disadvantage when competing against these types of products.
Cloud-based software and infrastructure is cheap, flexible, and scalable. It functions not only from desktops, but from web browsers and mobile devices, delivering new levels of convenience and access for increasingly busy customers. Remember, the businesses you sell to are considering, or have already made, the same switch to cloud you’re considering. If you’re going to keep selling to them, you’re going to have to meet them where they are. And the move to the cloud encompasses not just your database, but also your software offerings. After all, even the company most invested in Windows’s success is preparing for the cloud-based future.
Microsoft wants you to move to the cloud
The company that Windows built has moved to a “Mobile First, Cloud First” strategy: Microsoft is guiding customers towards Azure, their own cloud-based database and software platform. And increasingly, Microsoft executives and board members are giving interviews in which they position Azure, cloud, and hybrid cloud as the company and its customers’ future. Even Microsoft has recognized that physical databases and desktop-only software are a thing of the past, proving that the cloud is here to stay.
Where and how to deploy your application
Considering all the benefits that come as a result of moving to the cloud, it’s easy to see why any ISV should be ready to make the move. Except for one thing: How do you go about tackling this kind of project?
The first thing you need to consider is your deployment model. Migrating from on-premise to a true cloud deployment is a complex process, and for many ISVs it can take years to complete this kind of project. Furthermore, the move isn’t usually a one-step process; most ISVs will complete their cloud migration in phases.
Looking at deployment from a high level, there are three options for any kind of application:
On-premise deployment
If you’ve been in business for more than a few years, chances are you have an application that was, or still is, deployed on desktops. You may also know this option as a private cloud deployment.
On-premise deployments are popular because they provide the highest levels of management visibility, security, and physical data proximity for both client and key business data.
Cloud deployment
If your application was built more recently (or you’re getting ready to start building one now) it is likely deployed via the cloud, giving users the ability to access the software over the internet instead of downloading a desktop application. This option is also known as a public cloud deployment.
Public cloud is popular because it allows you the flexibility to add or drop resources quickly and as often as needed. Plus, public cloud gives organizations the ability to utilize IT and other services through a pay-per-use structure.
As a side note, you’ll often hear cloud deployments referred to as SaaS applications, although SaaS technically refers to a licensing model instead of a delivery type. This inaccurate description is likely related to the booming popularity of cloud-deployed applications, such as SalesForce and Slack, who also use the SaaS subscription model.
Hybrid cloud deployment
Hybrid environments are the middle ground between pure desktop and pure cloud deployments.
As an ISV, you know that in many cases a desktop application may not be able to run in a cloud environment, due to dependencies on on-premise infrastructure. That means the application must be rewritten (in part or in full) before it can be migrated to the cloud.
That’s where a hybrid solution can help: you can establish a presence in the cloud space, while also ensuring you don’t need to start over and build a new application from scratch. You’ll be able to retain your existing customers and slowly transition them to the cloud, while at the same time, appealing to potential new customers looking for a native cloud application and the flexibility it offers.
Starting with a hybrid solution is likely the smartest migration path for existing ISVs, because hybrid deployments ease a couple of customers’ key concerns about the cloud. First, it’s likely your customers have made significant investments in their data centers over the years, and they may not be ready to completely replace their on-premise infrastructure. Second, some of your customers will not trust the cloud to house all their data, especially the really sensitive stuff. In these scenarios, a hybrid cloud is the best solution because it combines your customer’s existing on-premise application (and its security) with new cloud-based solutions.
How to turn existing desktop applications into cloud applications
Before we look at your options for turning a desktop application into a cloud application, let’s first make sure we’re all thinking about the same kind of project. The topics of cloud migration and (legacy) application modernization are very broad, and often mean different things to different people.
That’s why a quick search engine query delivers a lot of advice and plenty of possible methods for accomplishing your project - but in truth, some of those methods won’t work, depending on what you’re trying to achieve. For the purposes of our discussion, keep in mind that we’re not talking about trying to find a replacement for your application. Instead, we’re going to look at how you can improve the application you’ve already invested in and make it relevant for the future.
How to pick the best migration process for your organization
After you’ve determined what type of cloud environment is best for your project, the next step is picking the best strategy for implementing your cloud migration. At a high level, your options fall into two distinct categories:
Lift & Shift - re-hosting in the cloud
This strategy is often thought of as the “easy” way to migrate an application because it avoids the expense of rewriting it. Lift-and-shift refers to the replication of an on-premise application within the cloud, without changing the app’s architecture or design. Because applications that are lifted and shifted to the cloud cannot take full advantage of cloud native features, it’s not always the best migration approach.
Lift & shift can be a good option for off the shelf applications that cannot be modified, but it should not be used for resource-intensive applications (for example, those that have a heavy dependency on network connections) such as big data analysis tools. Lift & shift takes a lot less time than some of your other options, but in addition to missing out on cloud native features. A downside is that this option also moves any problems or limitations that currently exist in your application right along to the cloud with you.
Virtual Machines, or VMs
Virtualization, or the use of virtual machines, works by installing your application environment on specialized software (known as a hypervisor) that imitates hardware. In other words, a virtual machine is actually a program that acts like a virtual computer, running your current operating system (the “host” operating system) and also providing virtual hardware to “guest” operating systems.
The benefit of virtual machines is that you can have a single physical computer running potentially dozens of different operating systems at the same time, and then run applications within those virtual machines. However, the downside of VMs is that they must remain active and drain resources in standby mode at all times, or they must spend several minutes booting up before they are useful.
Containerization, also known as repackaging
A container refers to an entire runtime environment bundled up in one package: your application plus all its dependencies, libraries and other binaries, along with the configuration files needed to run it. In other words, containers work by stripping down the OS to the bare minimum needed to run.
Instead of shipping a full operating system and your software, containers allow you to pack your code and its dependencies into a bundle that can run anywhere. Plus, since containers are usually small, you can pack a large number of containers onto a single computer. Containers are not a new technology, but rather an improvement on VMs, because they can disappear completely when they are not being used.
Sounds like a winning option, right? Yes and no: containers can be a good option for enterprise companies and for stateless applications. However, for an ISV, containers are not always the best option because they were designed as a solution for deploying server applications that do not include a graphical user interface (GUI). It’s also important to note that containers can negatively impact your app’s performance, due to overlay networking between the container and the host system.
Rewriting, also associated with refactoring or re-architecting
Rewriting offers a broad spectrum of possibilities, because rewrites can range from small tweaks to an application’s logic to a full app overhaul to anything in between. The advantage of a rewrite is you can redesign your application to enable resource scaling - one of the main benefits of a cloud environment. The downside is rewrites tend to become both time and budget-intensive, regardless of your initial scope.
There’s also the option of a hybrid rewrite (sometimes called partitioning), in which developers examine the application in order to identify which elements or workloads are best suited for the cloud and which are better left to run on-premise. A hybrid rewrite can be a good option if the cost savings from running partitions in the cloud outweighs the cost of rewriting the entire application.
Going beyond a “simple” rewrite, refactoring or re-architecting refers to a full rewrite of an application’s architecture and design prior to a cloud move. Where ISVs are concerned, refactoring or re-architecting are typically the best solutions for migrating critical Windows-based software that is not already API-driven. And while re-architecting is an expensive option, you’ve likely already realized you need to to replace your client/server solutions in order to be relevant for the future. The time and effort you put in now could be essential to keeping your business competitive.
The role of APIs in the evolution from desktop to cloud
An API, or application programming interface, is a set of routines, protocols, and tools that allow two applications to talk to each other. Think of them as software messengers, or like a bridge that connects applications.
APIs allow you to modernize legacy applications that cannot be moved to the cloud (for example, because they depend on specialized software) by using an API wrapper that is developed around your existing application. Simply put, APIs are a big deal because they give you the ability to integrate a legacy or desktop application with more modern frontends, with zero investment in new infrastructure.
From a development perspective, APIs are key because they make it easy to evolve your application alongside advancing technology. Let’s take a look at how you can use APIs to modernize your application:
Develop API-based architecture from scratch
This option entails a full rewrite, meaning you scrap your entire application and start building again from the ground up. While a rewrite provides the opportunity to completely redo and customize your application, keep in mind that all programmers are not experienced with API development, so you may need additional hires to get the project done.
Before scrapping anything, you also have to ensure all your customers are ready to move to the cloud - and if you’re like most ISVs in the market today, there’s a good chance you have some customers who are ready for cloud, while others have no intention of moving away from the security of on-premise.
Convert existing code to APIs
Instead of discarding your entire application and starting over, you also have the option to repurpose it by leveraging your existing codebase. By exposing your application’s existing functions as secure web APIs, you can quickly launch a cloud application, while also continuing to serve customers running on Windows if necessary. Converting your existing application into APIs is the easiest, fastest, and cheapest modernization option, because programmers don’t need to be experienced in API development in order to create web APIs. Programmers of any skill level can write functions in the programming language and structure they know, and then, use API development tools like Thriftly to expose APIs securely.
Microservices
APIs can help you transform your application from a monolithic behemoth into a series of microservices, which allows you to streamline development and serve your app as a suite of modular services, rather than one large, interdependent program. Each service runs its own process that supports a specific business goal.
Some applications are easier to build and maintain when they are broken down into smaller pieces that work together but can be developed and operated independently, instead of traditional monolithic applications where everything is developed together. While microservices are easy to deploy and can be scaled quickly, some of the disadvantages to keep in mind are that you may experience latency during heavy use, and depending on the application at hand, microservices may prove to be too granular.
How to modernize your desktop application for the cloud
As you consider the options for getting your monolithic legacy application to the cloud, remember to weigh your choices carefully. While some of your options may seem easier or cheaper upfront, they may not be the best choice when it comes to making your application flexible and relevant long-term.
Typically, rewriting an application in order to build an API-based architecture is an enormous project that requires special skills from your team and takes a significant amount of time and money to complete. But, you don’t have to start completely from scratch. See how Thriftly.io makes it easy to transform the code you already have into an API architecture: