IntroductionIn 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.
Approaches to application modernisationA 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
- 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
- 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
- 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.
Getting thereWith 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
Get in Touch.
Let’s discuss how we can help with your cloud journey. Our experts are standing by to talk about your migration, modernisation, development and skills challenges.