Realty Check: 4 stages to Application modernisation, or ‘Digital Transformation’ and why Enterprise Architects are important
KTA: Stop reading the Gartner Group. You will be happier, less confused, wealthier, and your buzzword-BS radioactive meter will drop significantly.
Going Cloudy does not need to be a dive into the deep end. Modernising applications will usually go through a set of stages, starting with Cloud re-platforming, then optimisation on the new Cloud platform, followed by refactoring, perhaps re-architecting and with some client facing digital applications which are monetised, perhaps a rebuild using Cloud-Native techniques.
Many applications do not need ‘Cloud Native’, do not require complex rebuilds because they are static, not client facing and the monolith serves the business and process, just fine. Of course, the application, logic, code, database code and associated frameworks need to be kept up to date, along with the web-server and database versions. But it is ridiculous to impose ‘Cloud Native’ on applications that don’t need it.
Keep your Perspective
There is no ‘single’ right or wrong path, approach or model in deploying applications to the Cloudy. A lot will depend on time, budget, resources, urgency, type of applications, industry, and compliance requirements. Virtual Machines are valid, as are containerisation of existing applications and moving both over to the Cloud. Cloud-Native or ‘Digital Transformation’ may also be required if your business, competition, and client demands necessitate such an approach, with inherent scalability, new features, or constantly changing requirements demanding new versions premised on Agile and integrated, automated development, testing, deployment and operational support.
Most applications do not however, need to be Cloud-Native. That is simply a myth. The business-IT-client use cases do not demand it. You are not Netflix, nor Amazon. And yes that Cloud presentation on ‘push button’ something or other was amazing, but it was probably falsified and the real system had a budget of $10 mn which is $ 9mn more than you have.
In reality larger firms will be using many different approaches and Cloud platforms depending on the use case and context. Virtual Machines on both Windows and Linux (best to standardised on a particular OS for each), Containers, and Cloud-Native new builds will all co-exist, along with different database varieties – SQL, MySQL, server-less Databases, Mainframes and NoSQL.
Architectures will become more complex, not less, and issues around data, data security, data management, data charges, networking, network security and environmental management will become (indeed are already for many firms), key pain points to remediate. This complexity makes it clear that skilled Enterprise Architects working within a Domain and with Subject Matter Experts, will increase in importance. Iterative Designs, Pilots and assessments, premised on Agile are of increasing relevance, as the IT stack shifts to a complicated virtualised and on-demand set of models. Hybrid architectures and multi-cloud (including sprawl) deployments are a fact for large enterprises.
In the context of Digital Transformation, which is only one aspect of Cloud Computing, there are four stages to gain a competitive edge.
Simplify with containers
Putting existing applications into containers orchestrated by Kubernetes or similar. These containers can be self-managed eg. Docker, or ECS on AWS, or platform managed such as Fargate. This is the first step to simplifying application deployment and management. Containers encapsulate the application with minimal or no changes to the application itself, enabling consistent testing and deployment that reduces costs and simplifies operations.
Extend with APIs
Extend existing applications with APIs which securely expose their full capabilities to developers allows for de-composed architectures, separating producers and consumers and giving you the flexibility to change parts of your system without having to rewrite the entire stack. The applications therefore become reusable across clouds to easily access and build new capabilities. Beyond APIs, this approach relies on an agile integration strategy that supports the volume of connections and variety of architectures required.
Decompose with microservices
Use microservices to break down monolithic applications into deployable components, where each component performs a single function. Businesses can then further enhance development agility and efficiency by putting each microservice in its own container. Using Kubernetes, companies can then manage and deliver the microservices of existing applications.
Refactor with new microservices
Refactoring involves building new microservices. In some instances, it may be easier to develop new applications utilizing cloud-native development practices instead of working with a current monolith. This provides teams with the ability to deliver innovation to users, encourage creative thinking and allow developers to experiment in a low-risk fashion.
The above is a sensible approach which over time may lead to a Cloud-Native refactoring approach. Firms need to have criteria checklists and a realistic appraisal of applications – what are they, who do they serve, what is the elasticity of usage, what type of firm is it, what is the market, how much is the system being monetised, what resources and skills per cloud platform does it possess, budget, time, security, compliance and other constraints. Many applications simply don’t need to be Cloud-Native. Maybe 20% of applications are candidates.