What's really required to make application modernization work
- By Matthew Zager
- Dec 09, 2015
Government agencies with aging application inventories must modernize in order to improve agility and efficiency, but application modernization goes well beyond rewriting code. It involves adopting several organizational processes that can play key roles in helping agencies achieve their agility and efficiency goals.
Here are eight principles agency developers should embrace as they undertake application modernization efforts:
1. Focus on developing new capabilities
Support innovation efforts by prioritizing the development of new capabilities. Avoid redesigning or recoding an application without implementing new features. Exceptions can be made for software that is no longer supported, fails to meet requirements or has become too costly. In general, however, focus on adding new capabilities that will propel the agency forward.
2. Consider prior investments
Replacing software components can be a costly undertaking. Evaluate the cost of old and new components relative to their respective features and consider any potential cost or schedule impacts to re-establishing integration with other systems.
3. Recognize there will be future change
When implementing software changes, understand why the old software is being replaced. This insight can help in developing new components that are more adaptable to changes in requirements for internal functions and external interfaces.
4. Do not promulgate vendor-specific APIs
Implement standard application programming interfaces rather than enabling applications to use a vendor API directly. Hiding the vendor-specific details can allow for easier replacement. Think of a mobile phone that works on only one carrier’s network, preventing users from easily switching between cellular providers. Just as it’s best to choose an unlocked phone for greater portability, it’s better to select APIs that work across vendors for maximum customer choice.
5. Use microservices rather than a “big bang” approach
Massive changes tend to be more disruptive to users and make it harder to determine the root cause of issues. Incremental changes are preferable, as they enable “quick wins,” a controlled introduction to end users and more agility when confronted with potential project reprioritization. So consider a microservices architecture where appropriate. These are collections of small services that communicate using lightweight mechanisms and can be deployed, scaled, upgraded or replaced independently. They make application management far simpler and less disruptive.
6. Support multiple API versions concurrently
Some of the most difficult aspects of modern interconnected application architectures are support for heterogenous environments and change management. To address these issues, use technologies that enable access through different programming languages, transport over different protocols and have the ability to encode data using different formats. This broadens the value to external users and helps prepare the agency for inevitable changes to internal software.
7. Modernize development processes to improve software quality
Introduce agile development practices such as Continuous Integration and Delivery and strengthen collaboration within an agency by promoting a DevOps culture. Both of these approaches can help increase flexibility and collaboration and allow for more rapid response to changing needs.
8. Use integration middleware for application modernization
Integration middleware connects applications, data and devices to create efficient and agile information systems. It also allows for rapid refactoring to ease the introduction of new capabilities while preserving prior investment, loose coupling to reduce vendor dependency and agile configuration to accommodate future change. Use well known Enterprise Integration Patterns, a collection of prebuilt technology connectors to the most popular protocols and APIs to more efficiently and reliably deliver solutions to meet emerging agency requirements.
Consider a military logistics application that must be modernized to handle an upgrade to a dependent enterprise resource planning system and new requirements to support asset tracking with radio frequency ID technology. Integration middleware and a dynamic router pattern can be used to easily manage the switchover to the new system. Similarly, out-of-the-box connectors for messaging protocols commonly used by RFID vendors can help save in development efforts. All of this can result in cost savings, faster introduction of new capabilities and more time for developers to focus on additional requirements.
While it’s unrealistic to expect government agencies to abandon all current baselines and existing supporting systems, they must still prepare for application modernization. Understanding the eight organizational principles is key to making a successful transition from legacy systems to a more modern, agile and cost-effective IT environment.
Matthew Zager is senior solutions architect at Red Hat.