Over the past few years, there has been a significant shift in the business model for independent software vendors (ISVs). Traditionally, buying software involved a high, one-time purchase cost for a solution that the customer then installed on their local computer or data center. Incremental software updates were typically included in the initial purchase price, but when major releases were announced, the customer would either pay an upgrade cost or stay with the existing product. This was the norm for purchasing everything from Microsoft Office to products offered by smaller, niche software houses.
Times have changed, and now the subscription model has become the norm, with software as a service (SaaS) products satisfying customer needs. The driving force behind this change has been the cloud, where customers are now accustomed to paying monthly for software access.
By moving their hosting to the cloud, software providers’ costs can be invoiced monthly too. This allows ISVs to not only directly map a customer’s monthly charges to their utilization, but also eliminates the costs associated with provisioning additional data center servers and storage to meet a customer’s increased demand. As a result, ISVs who have moved to the public cloud can offer lower-cost, hosted solutions. And this also opens the door to smaller customers who do not possess the internal infrastructure needed to run the software.
ISVs who decide to fully embrace the cloud are after all the advantages that can be realized by moving both their software development teams and software products to the cloud, including:
- Lower cost, hosted offerings for customers
- Improved application performance and customer satisfaction
- Enhanced application agility, scalability and maintainability
- Secure, developer-ready cloud environments to accelerate innovation
- Increased developer productivity through the use of cloud-native architectures and services
Applications that ISVs move to the cloud often require modernization to fully leverage what the cloud has to offer and achieve their business goals. Modern application architectures employ microservices, serverless computing, containerization, multitenancy, cloud-native services and other cloud features. Applications require refactoring, often with significant architectural changes, to make use of these capabilities.
Modernizing an application to take advantage of the appropriate cloud-native architectures and services is complex, and requires expertise in cloud technologies, processes and tools. Each application requires a detailed assessment and a determination of the appropriate refactoring to meet business needs. Decisions have to be made on critical refactoring vs. enhancements that can be included later. Unless an ISV has already performed multiple cloud application modernizations, there may be a steep learning curve and possible missteps before achieving a successful result. Often, ISVs do not know where to begin.
The blueprint for a successful application modernization effort includes the following key steps:
Assess application cloud readiness, and design cloud architecture to support modernization
You can use both manual and automated code analysis to assess an application’s cloud readiness. Key determining factors include, for example, hard coded connections, remote method invocations and thread management. In addition, you should review the application architecture to assess the applicability of decomposing business logic into cloud frameworks, such as microservices and serverless, and the suitability of incorporating cloud-native services to meet business, performance and scalability requirements. You will also need a thorough evaluation of nonfunctional requirements to drive the design of an appropriate cloud infrastructure to support the modernized application. When designing the infrastructure, consider best practices, such as common shared services for logging, monitoring and security. The infrastructure design should also include the frameworks and tools needed by the development team to accelerate innovation and facilitate agile processes.
Reimagine the user experience in ways that are customer centric and market relevant
While ISVs understand the technical benefits of refactoring their application codebase, many do not consider one of the key factors driving customer loyalty – the user experience. To drive the most creative solutions, experience design development should employ empathy workshops to uncover what customers really want, and design sessions that quickly turn ideas into interactive prototypes. These workshops and design sessions should include real customers who can provide iterative feedback as prototypes are developed and refined. Using these techniques ensures that the modernization effort encompasses not only the technology, but also the customer experience. Take this opportunity to delight your customers. If you do not, your competition will.
Quickly validate technical decisions and end-to-end functionality through a proof of concept (PoC)
Often an ISV’s stakeholders want a high degree of comfort that their software product will perform in the cloud as expected. There may also be technical decisions to evaluate and validate. A PoC is a cost-effective way to quickly demonstrate end-to-end functionality, validate emerging technologies and/or prove value to stakeholders, investors and even customers. A PoC is also a good way to create and validate the foundational infrastructure and technical components required for the refactoring sprints. Time to market is critical. Build out only the minimal cloud infrastructure needed to support the PoC, and develop only the PoC elements that are critical to moving the decision forward.
Define the minimum viable product (MVP) and development roadmap
Modernization requirements, driven by the application assessment results, architecture design and experience design, should be translated into high-level user stories that will be decomposed into project backlog during the refactoring sprints. The user stories can then be prioritized to define the MVP to accelerate time to market. Keep in mind that not all modernization requirements have to be implemented during the initial refactoring. Choose those requirements for the MVP that will provide the best return on investment and will address the most critical business needs. The goal of defining the MVP is to get the cloud-based software product into the hands of customers as quickly as possible. The remaining user stories become part of a phased plan that serves as a roadmap for how longer-term business goals can be achieved.
Build out new, or optimize existing cloud infrastructure to support the modernized application
During the architecture assessment, you will need to build a new cloud environment, or modify an existing one, to support the modernized application. Wherever possible, infrastructure as code (IaC) should be developed to define the infrastructure. This will enable automated, repeatable ease of provisioning. Start with the development environment, so the refactoring sprints can begin, then build out the test, user acceptance testing (UAT) and production environments as development progresses. To speed development cycles, deploy a continuous integration/continuous delivery (CI/CD) toolchain that includes the integration of automated testing and code promotion, along with any cloud frameworks and tools the development team may need.
Modernize the application using an agile MVP approach
Once you define the MVP and build the development environment, refactoring can begin. Use an agile, sprint-based approach that allows rapid response to changes in requirements and priorities, facilitates continuous delivery of working features to stakeholders for feedback and acceptance and drives time to market. Continually validate the user experience with real customers to ensure the end product will keep them engaged. Optimize the infrastructure through updates to the IaC, and maintain the CI/CD scripting and automated testing pipeline throughout the development lifecycle.
Make automated testing an integral part of your modernization strategy
Move testing as far left in the process as possible. Leverage automated testing in your CI/CD tool chain to maintain feature parity before and after the modernization process. Testing should include unit, functional, destructive and load testing, as well as applications, configurations and infrastructure testing, to build confidence as you work through the release process.
Modernizing for the Future: a Use Case
Five years ago, Kronos, a leading provider of workforce management solutions, decided to disrupt the way they delivered to their customers, before an entrepreneurial startup could beat them to it. Utilizing Google Cloud Platform, Kronos designed a modern, cloud-based application, offering breakthrough employee experience and unprecedented levels of operational insight. Embedded analytics and personalized visualizations provide real-time visibility into compliance and employee well-being. Artificial intelligence and machine learning provide best-fit recommendations and guided decision making. And the technology infrastructure provides powerful platform extensibility with open APIs to easily adapt to changing business needs. By reimagining every facet of their business – from professional services to customer support, to finance and marketing and everything in between — Kronos was able to support its Workforce Dimension application and exceed customer acquisition goals by 50%.
For ISVs, there is tremendous value wrapped up in existing applications: they power the business. Modernizing those applications while maintaining that value increases business agility and improves application scalability, resiliency and usability. By following the modernization blueprint, ISVs can get started on a successful modernization initiative, and see results against their business goals as quickly as possible. Following this blueprint will provide significant business value:
- An enhanced user experience that will delight customers
- Secure, scalable, automated cloud environments with the frameworks and tools development teams need to accelerate innovation
- A modernized application, refactored using cloud-native architectures and services to both realize cloud benefits and increase developer productivity
- A roadmap for continued modernization to achieve longer-term business goals