Kit Wai Chan - Fotolia
As Microsoft shops struggle to modernize legacy apps that weren't designed for distributed cloud environments, they must also rethink the infrastructure where these apps are deployed.
Most enterprises have at least one application that's so old, no one on the current IT team recalls how it was written, nor understands the finer intricacies of its management. Now, these companies must weigh the risks and costs to refactor these apps for a cloud-first, continuously developed world.
"It's always an investment to replace something which does exactly what you need, but it's just old software," said Thomas Maurer, cloud architect for Switzerland-based itnetX, a consulting firm that works with large enterprise clients in Europe. "Traditional, classic enterprise apps cannot just be migrated into the DevOps world in a nice way -- they may have dependencies on legacy code, or they're not designed to scale out."
Windows DevOps tools have improved, and IT shops are finding ways to link them together. But many client-server apps in the Windows world, particularly rich-client apps, don't lend themselves well to continuous development or rapid provisioning, said Chris Riley, DevOps analyst at Fixate IO, a content strategy consulting firm based in Livermore, Calif., and a TechTarget contributor. Riley has developed Windows applications, such as SharePoint.
Some standard client-server applications must be compiled before they are tested. Dependencies and prerequisites also bog down legacy Windows apps; installing older versions of SQL Server or SharePoint takes days. Some legacy Windows environments also function best when apps are installed locally on the developer's machine, whereas web and mobile applications typically integrate with REST APIs and avoid binary codes on a local machine, Riley said.
Without the ability to spin up development and test environments easily, organizations tend to reuse one test bed.
"This severely limits when you can do your testing, because you don't want to pollute that environment, or make a mistake and rebuild it," Riley said. "Whereas in DevOps, it should be easy to make a mistake -- you actually want to do that and move forward."
Windows DevOps tools give legacy apps a makeover
If organizations decide to refactor legacy apps to run in a more cloud-native fashion, they can first use tools and services from Microsoft partners to help make those apps more efficient to test and deploy.
"Skytap and CloudShare provide on-demand environments for these tools," Riley said. "So, you can spin up a new database environment in 15 minutes instead of days, and then delete it, then spin it up again."
The two companies take different approaches to hosting legacy apps on flexible cloud infrastructure. For example, Skytap Cloud supports more, older versions of Windows than Microsoft does, so customers can modernize apps at their own pace. CloudShare's on-demand versions of Windows apps, meanwhile, are "somewhere between hard [and] impossible to run on the commodity clouds like Amazon [Web Services]," said Muly Gottlieb, the company's vice president of R&D.
CloudShare, a 10-year-old privately funded Israeli SaaS company, lets users set policies and spin up and down dev and test environments with complex traditional apps, such as SharePoint and SQL Server. The service can accommodate customers that aren't a good fit for Azure Cloud services, such as VMware shops that support legacy Microsoft apps.
Legacy apps set up in CloudShare's environment can circumvent problems around fast and ephemeral provisioning and provide workable dev and test services in Windows DevOps shops.
"In the past, developers would all share five or 10 master labs, which is bad for velocity, and lab scarcity is a productivity-killer," Gottlieb said. With this approach, code is not always reproducible, and environments spun up from snapshots aren't always consistent.
Electric Cloud has a similar offering in the Windows DevOps tools arena, called ElectricAccelerator, which automatically parses legacy apps into distributed form and speeds up dev and test. Startups such as IncrediBuild and Thriftly also look to optimize dev and test for legacy Windows apps. Third-party services, such as Zapier, attach REST APIs to legacy applications and bring them a step closer to the Windows DevOps world.
Good ol' trusty VMs can give Windows apps a leg up
For on-premises IT organizations, advanced automation features within virtual machines also provide a steppingstone to modernize with containers and microservices.
"There are ways to build this agility, and it's going back to taking another look at how we use virtual machines," Riley said. "Companies can treat VMs exactly how they were supposed to be treated, which is more like containers."
Chris RileyDevOps analyst, Fixate IO
Enterprises can use a VM template with heavy applications to spin up and delete environments for virtualized legacy apps. It's not as fast as containers, but there's much more agility than what users may have had previously, Riley said. VM templates can call for Microsoft Visual Studio to be automatically installed at startup and linked to a source repository, so developers could pull down a branch, write code, test it, commit and destroy the environment -- and then do it all over again in a new VM.
VM-based automation works well with rich-client apps, where heavy dependencies and prerequisites make it tricky to test functions with Windows DevOps tools, said Anthony Terra III, manager of software architecture and development at a law firm in the Philadelphia area.
"The only difference is that you need to run that rich-client application in a shell or a separate VM," Terra said. "Normally, we have that VM already built, deploy the code to the VM and run it that way."
Terra's company also uses a Microsoft database tool called a Data-tier Application Component Package (DACPAC) to smooth the delivery of updates to SQL Server VMs.
"You have the ability to create, change and delete tables, but it never actually interacts with the database," Terra said of DACPAC. "It creates a change set file, which can be run against any database that has the same structure."
When code is deployed to dev, test or quality-assurance infrastructures, the Windows Microsoft DevOps tool Team Foundation Server calls on DACPAC's change set file and applies the changes to the database environment. Terra's firm has added some safety guards: If a change could cause data loss, for example, the build fails.
The firm plans a move to containers in the coming year, but for now, VMs can slot in with Windows DevOps pipeline tools for a more consistent process.
"You're not having people build VMs anymore because a tool is building them," Terra said. "There is some fear in adopting something like that, but I think it's misplaced, because it's not like there's less work because of it -- the work you're doing is just more focused on what's around it."
Use configuration management in Windows DevOps shops
Linux containers make their way onto Windows OSes
Skills to hone for next-gen Windows administration
Windows containers change management strategy for DevOps shops