In late June, after nearly a year of public comment and revision, the Office of Management and Budget released the final version of the government’s Cloud Smart strategy. The policy will likely guide how agencies approach and adopt the cloud for years to come, and it emphasizes the need for them to rationalize their application portfolios as they modernize their IT infrastructure.
This will involve reducing their application portfolios by both “assessing the need for and usage of applications” and “discarding obsolete, redundant, or overly resource-intensive applications.” Agencies will then be free to focus on improving service delivery by optimizing their remaining apps.
For agencies to get the most potential out of cloud architectures, they should do more than simply move existing applications to the cloud. A recent blog post from the General Services Administration on cloud migration notes that “ruthless application rationalization” is something agencies must follow.
“In order to efficiently and effectively move applications to the cloud, your agency must know what applications are deployed in your own IT environment and how those applications are leveraged and connected to identify which applications are candidates for migration to the cloud,” the blog post says. “The concept of simply ‘lifting and shifting’ your applications and environment to the cloud will not allow your agency to obtain the efficiencies of the cloud and to leverage the full capabilities and benefits of the cloud in respect to increased performance and security.”
To get the most out of a migration, agencies should refactor their apps, meaning they should make changes to the code or architecture of apps so they can run smoothly in a distributed cloud environment.
Best Practices for Refactoring Apps for the Cloud
Refactoring applications can yield many benefits for agencies. Amod Bavare, a managing director at Accenture, notes in a blog post that refactoring enables an organization “to break down a specific business process into smaller chunks and support those chunks with new-generation, cloud-native applications that enable IT to quickly deploy new functionality” that the organization and its users need.
“A partial refactoring modifies only specific portions of the application to take advantage of the cloud platform, whereas a complete refactoring changes most of the application,” Cloud Technology Partners, a Hewlett Packard Enterprise company, reports in a blog post.
CTP notes for poorly designed business-critical applications, “there is significant risk lift-and-shifting them to the cloud. Without refactoring these applications will consume cloud resources inefficiently, thus generating a much higher public cloud bill, and may even create performance and stability problems.”
A partial refactoring modifies only part of the app and is a faster way to migrate an app to the cloud, but it may cost more for the agency to operate the app in the cloud, and it will only take advantage of some cloud features. Meanwhile, under a complete refactoring, apps generally offer higher performance and can be optimized to operate at lower costs, but the process is longer and more expensive.
If an agency cannot get an ROI from refactoring, it should not do so. However, after working with trusted third parties to examine their IT environments and application portfolios, agencies may conclude that they can make a solid ROI on refactoring.
There are several ways to go about refactoring, but they all assist “in designing and developing microservices that utilize cloud-native APIs,” according to SearchCloudComputing.
In addition to complete or partial refactoring, agencies may choose to undertake a containerization refactoring, in which apps are shifted into containers with minimal changes.
“The applications exist within the containers, which enables users to incorporate cloud-native features and improve portability,” SearchCloudComputing reports. “Enterprises have found this option is more work than expected because of the learning curve that comes with adapting to these new tools. With that said, costs and refactoring times continue to go down due to the popularity of containers and their growing ecosystems.”
Agencies can also pursue a serverless application refactoring. Such a move would require new tools and skills on an IT team, since an agency would be changing its development and operations platforms. While serverless architectures provide agencies with fully managed services, agencies should beware since “serverless platforms support most languages, but they don't support everything” and “unlike containers, serverless platforms don't provide portability, so lock-in is a major downside to this approach,” according to SearchCloudComputing.
There are multiple paths to refactoring apps for the cloud, and agencies should explore the ones that make the most sense for them. However, refactoring may ultimately be the way to go — because lift and shift won’t cut it anymore.