In the modern all-digital business environment, applications play not only a critical role for driving the internal business processes but are also increasingly key to generating all new digital revenue sources or driving traditional revenues using digital channels. This has led to 100 million applications being created during the last 40 years (according to IDC) with the same amount of applications estimated to be created during the next 5 years alone.
Clearly, not all applications of these applications have been built in light of the current requirements nor using the cloud technologies that drive much of the current digital businesses. These traditional companies becoming increasingly digital are now facing new software related challenges impacting their core businesses that they had not faced in the past.
Such challenges are for example:
- The increasing demand for digital services combined with legacy “monolithic” applications leading to inability to maintain a 24/7 availability and scale to peak loads
- Tight coupling with enterprise applications operated “Mode 1” combined with overly complex monolithic architectures leading to inability to respond to external pressure to develop new features (in some cases driven by regulatory changes such as GDPR) at the pace expected by internal or external customers
- Difficulties or increasing costs in recruiting experts to develop and maintain applications based on legacy technologies on legacy platforms
- Re-hosting of legacy applications as-is to public cloud platforms leading to suboptimal operating costs, e.g. due to legacy software licensing models being incompatible with cloud platforms.
Luckily the public cloud provides a rich set of PaaS services that go beyond the virtual infrastructure provided by traditional data centres. These services, such as managed queues, databased and serverless compute, drive new development paradigms such as serverless or cloud-native application development, which have a track record not only in making the operations of the applications more flexible and cost-effective (up to 90% savings) but increased developer productivity (up to double). These advantages are driving high adoption. According to IDC, two thirds of new enterprise applications will be developed cloud native by 2021. Cloud technologies enable not only new application development but also make modernisation initiatives of legacy applications more viable and attractive.
Approaches to application modernisation
A multitude of strategy alternatives can be used to tackle the business challenges of applications. A typical modernisation initiative consists of different strategies that are applied to the different components of an application.
The simplest approach for modernisation consists of replacing some of the generic services of the application with managed cloud services to gain cost savings and/or improve scalability. For example,
- replacing your relational database with a managed cloud database such as Amazon Relational Database Service.
- replacing a message queue with a managed service such as Amazon Simple Queue Service
- replacing custom built user management with PaaS / SaaS based solutions such as Amazon Cognito
This approach typically requires minimal changes to the application source code and enables to get an improved and cloud-optimised version of your application in production in minimal time. In 6R terms, this is what is typically referred to as “Re-platforming”.
One approach used is the introduction of an API façade based on cloud native technologies such as AWS Lambda and Amazon API Gateway and decoupling of the legacy application from the user interface layer. Some business logic related to the application may be introduced to this API layer but it is a good practice to keep that fairly simple. This approach enables the following:
- Development of user experience independently of the legacy application development to drive better customer engagement
- Development (e.g. modernisation) of backend independently and transparently from the user interface
- Leveraging the data and processes of the legacy application for other application needs via the API
The most complex approach is a full rewrite of an application or component (in 6R terms “Refactoring”). This approach consists of re-architecting the application or component to fully leverage the capabilities of the public cloud and rewrite most of the application code, possibly in a different programming language than originally used. Typical architectural patterns that are applied during a full rewrite are:
- Stateless execution to enable horizontal scaling and improve fault tolerance
- Microservice based approach to minimise unit of deployment and enable agile development in small teams
- Serverless (e.g. based on AWS Lambda) wherever suitable to focus development on business logic and enable out-of-the-box scalability
In addition to the technology and architectural changes, it is key to have also modern software development tools and practices in place to get most of the benefits out of the modernisation initiative.
In real life modernisation initiatives, it is typical that the strategy is a combination of the above and modernisation is run in a phased approach by modernising component by component. This enables faster time-to-production with the initial architecture and ability to leverage the modernised architecture sooner than an “all-at-once” approach. The downside of a phased approach is the added cost of running both the legacy and modern applications in parallel but that is often justified by the positive impact on other strategic business metrics than operating cost. An example scenario for a phased modernisation is the following:
- Building an API façade to make the data and processes of the original application easily accessible.
- Modernising the user interface/consumer layer to leverage the API layer, providing decoupling of backend and consumer logic and enabling parallel and independent development.
- Step-by-step modernisation of the original backend and development of new capabilities behind the API layer.
With the multitude of approaches available, embarking on the modernisation journey for an application or portfolio applications requires clear objectives and understanding of the capabilities. Our recommendation is to start with an application assessment which consists of the following:
- Setting the key business objectives and priorities for the initiative (improve scalability, improve development capabilities, save costs, …)
- Understanding the current application architecture and identify which components are conflicting with the objectives or represent the highest opportunities for improvement
- Understanding the current state of software development practices and tools
- Setting a shared ambition state for the application architecture and software development tools/practices
The above are key to ensure that the objective and business rationale for the modernisation is clear and driving the actual modernisation work aligned with the set objectives.
Nordcloud helps customers with the full modernisation journey from assessment to managing the modernised applications in public cloud environments.
P.S. Nordcloud will be attending the AWS Summit in Stockholm on May 22nd, 2019. Come visit us at booth P2 and discuss more about our experiences in improving digital business capabilities with application modernisation. Sign up at https://aws.amazon.com/events/summits/stockholm/