On January 14, Microsoft officially ended support for Windows Server 2008 and 2008 R2. That means no more fixes or patches even if vulnerabilities are found, although there have been exceptions in the past with really severe issues.
That means it is time to migrate your apps, commercial and custom, and the process won’t be trivial. Server 2008 comes from a time when CPUs had two to four cores, where 64-bit computing was still very early, and the cloud was pretty much still a dream.
Suffice it to say that taking a single-tenant, single-thread app and bringing it to the cloud won’t be trivial, and in some cases, neither feasible or even possible. Nonetheless, it is possible to migrate to Windows Server 2019, the latest version of the OS, or Server 2016 as Microsoft still offers it, and Microsoft has done its best to make the transition smooth.
Analyst Tim Crawford of research and advisory firm AVOA told me for my Network World blog that there were two types of Server 2008 holdouts: either a) their custom apps use functions specific to WS2008, or b) those that use a version of an application that is only compatible with WS2008.
And Dave Kawula, an independent consultant specializing in Windows Server and Microsoft MVP, backs that up, saying he sees a lot of very old code. “You like to think everyone is on the latest from Microsoft but that’s not the case. Most of the organizations I encounter are four to six years behind where Microsoft is at,” he said.
The long road
If you choose to migrate the app from Server 2008 to 2016/2019, that may get very complicated. Even Microsoft said you will have to take the intermediate step of migrating the app and its data to Server 2012 as an interim step because 2016/2019 have migration tools and steps from a 2012 server but not 2008.
Microsoft said a typical migration process involves spinning up a new virtual machine (VM) with Windows Server 2016/2019, migrating the old app to the new VM and testing it for compatibility. Microsoft said its teams have worked to ensure that the compatibility of server roles and features in older operating systems will work in all newer versions, so it does not believe there will be significant issues.
Kawula calls this a double hop migration, where you migrate an app to 2012 to do patches there, then perform a second upgrade, but not on the same hardware. “You run it on Hyper-V or VMware. Once that thing is virtualized we have a lot more options with it,” he said.
Server 2008 had the first real attempt at Hyper-V virtualization and Kawula describes it as “very painless. They’ve done a very good job with the tech they have between the old and new virtualization systems.”
Windows Server 2008 was based on the Vista code base, while 2016/2019 are based on the Windows 10 codebase. But the real pain was migrating from Server 2003 to 2008 because Server 2003 was based on Windows XP and the step between XP and Vista user mode and kernel mode changes were much more drastic, according to Philip Elder, co-owner of MPECS, a consultancy that specializes in high availability solutions and Microsoft MVP.
“When we take into account the changes from Vista to Windows 7, Windows 8 and Windows 10, the changes have been iterative so the base structure for good coding was in place in Vista then carried forward in each new edition,” he said.
Microsoft said Server 2008 customers should keep in mind the following guidelines for the on-premises servers requiring installation of Windows Server 2012 R2:
- In-place upgrades should remain in the same build type (e.g. 32-bit to 32-bit or 64-bit to 64-bit architectures).
- Users can switch upgraded server core installations to Server with Full Desktop on Windows Server 2012 R2 only. Windows Server 2016 and later do not support switching from server core to Full Desktop, so we recommend making that switch before upgrading to Windows Server 2016.
- In-place upgrades are only supported in the same language.
The hardest types of Windows Server application to migrate are 32-bit applications with a 32-bit kernel mode driver, according to Microsoft. Windows/Windows Server 32-bit versions requires 32-bit drivers and Windows/Windows Server 64-bit versions requires 64-bit drivers. You cannot mix and match 32-bit drivers with 64-bit operating systems and vice versa.
Furthermore, starting with Windows Server 2008 R2 and later, Windows Server has been 64-bit only. Thus, if you have a legacy 32-bit app that with a 32-bit kernel mode driver, you are going to need to a 64-bit version. However, what if the legacy 32-bit app does not require a 32-bit driver? Then, it will likely “just work.”
Cloudy skies ahead
Many companies are looking to move as many workloads to the cloud while keeping some applications and data on-premises. The criteria for what stays on-prem is usually based on data sensitivity but also use. A heavily-used application might end up costing more to run in the cloud due to metering.
Microsoft said cloud migration is first and foremost an organizational change management exercise – be it people (roles/responsibilities), process (application development and operational workflows), or technology (using cloud-based tools and capabilities). So before you start on the apps there needs to be a strategy with a clear vision and executive support.
Microsoft advises customers to prioritize workloads based on business risk and technical complexity – some customers choose to start with the easiest while others pick the most challenging. A company should establish a cloud migration center of excellence to create a cross-functional team of IT infrastructure & operations, database administrators, architects, security/compliance, networking, storage, application development, and line-of-business groups to set governance standards, automation policies and workload priority, among other things.
Companies should execute cloud migrations in waves. Microsoft recommends an iterative, wave-oriented approach to deeper technical assessments and migration. This does imply taking a conservative approach during the initial migration waves, but as application owners get their bearings with cloud migrations, they get better at the process and can often accelerate the process.
One of the problems with app migration is identity, said Kawula. Are you going to be able to manage on-premises identities in the cloud? He maintains that 99% of the time if it works in your data center, it will run in the cloud. If not there is always the option of running the app in a VM but not make it cloud-aware.
But Elder is a little more cautious, noting Microsoft’s messaging has changed from all in the cloud to hybrid. “The realization on Microsoft’s side is there is just too many apps that will not work in a cloud setting. So they need to give folks time to figure out how to get that into the cloud. I believe hybrid is the best way forward for many organizations,” he said.
Didier Van Hoye, a technical architect and technology strategist as well as MVP said IT shops have the option of moving Server 2008 apps to Server 2019 in Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) or containerized offerings, but a migration is necessary to fully utilize the cloud.
“You can lift and shift that into the cloud, but that is not making the best use of the capabilities of the cloud,” he said. “Elasticity has to be designed into the app, and it will be VMs, not containers [that do it].Then you can modernize the app to run on more modern OS versions, but it is still in a VM. benefit they might get is that they can adjust memory, CPU, storage easier and faster than they are used, but that depends on how well their virtualization on-premises was or if that was still hardware.”
Tricky navigation ahead
While the consensus is that many if not most old apps should make a relatively smooth translation to the cloud, there are some areas that will trip people up.
In Kawula’s experience, he finds homegrown Oracle apps are particularly challenging to migrate. “They are written using PowerBuilder and organizations are trying to modernize it with .Net, and that makes it difficult. PowerBuilder is still out there. That’s one of the issues everyone has,” he said.
Elder also said older databases and their apps can be tricky since they may need Active Directory user IDs for internal access permissions. He added that a .Net app requires a specific version of the .Net framework, and whenever there is a new version of .Net the app needs to be tested against that version. So in those cases, companies are limited to the .Net version an app vendor has approved.
Another issue both note is attempting to containerize apps. Containers are simply scaled down versions of the operating system and while Server 2019 was designed with containers in mind, apps coded for Windows Server 2008 definitely were not.
“It’s physically impossible to take Server 2008 code and make it containerized. Trying to stuff it into a 300MB OS is just not going to happen,” said Elder.
“You have got to rewrite the app for deployment in containers,” said Kawula. “The way containers function is like mini webservers that are disposable. If an app is written so it can be deployed and not manually installed, then it will play a lot nicer with containers. So with mini-rewrites, you should be able to get there. Again, it depends on the app.”
Van Hoye said old apps also are problematic because of data persistence in them. Data persistence is used in stateful apps, which saves data about each client session and uses that data the next time the client makes a request. Containers are stateless and do not save data.
“Apps that are stateless are better candidates in general vs. stateful apps with a GUI and hardware dependencies,” he said. “I’m not saying it cannot be done but it becomes more involved and might not cover everything. The app might need refactoring/re-architecting.”
Microsoft offers a comparison of the hybrid, security, infrastructure and application platform features of Windows Server 2019 to previous versions here. It also offers a table of server applications that support Window Server 2016 and one that covers Windows Server 2019.
It’s never too late to get started on a migration, especially since Server 2012 will reach its end of life on Oct. 10, 2023.