Application modernization is the process of taking existing applications and modernizing their platform infrastructure, internal architecture and/or features. Most discussions of application modernization today focus on monolithic on-premise applications, generally updated and maintained using waterfall development processes, and on how these applications can be integrated into cloud architecture and publishing models, including DevOps micro-services.
How does this materialize? This process needs to be divided into several stages, each of which is just as important as the next. We are going to look at the first stage and the primary objective of application modernization: reinventing ourselves.
Making the change
To Modernize – yourself or your applications – remains a major challenge. Already we are all quite busy with our daily lives, so if we are to include a process of improvement on top of it, for many of us, it becomes an additional burden we are not quite happy about. In not such a distant time – even though it seems like a different era, I attended a meeting in beautiful Quebec City where I was first introduced to Team Foundation Services. TFS for those who remember. And something in me has changed. This is when I realized (through personal observations) what all “good” project managers have in common. In particular, those who stepped in and straightened out difficult projects.
What I noticed is that in addition to being rigorous, they also had a method. And their execution plan (whatever it was) was visible and easy to follow. And yes, they had a technical foundation strong enough to understand the tools at their disposal, which made it easier to keep control over projects. This was a moment of illumination. I understood then that there was a role in organizations to rethink those rather traditional, even rigid, ways of operating.
Of course, being able to reinvent ways of doing things is not given to everyone and it is often at the bottom of our To Do list. That’s why there are people like me and organizations like ours who are quite happy to do it. Honestly, I would do just that, nothing else!
So how does this apply to application modernization?
“Just like reinventing a process, how can you reinvent an application architecture to make it easier to manage? You have to start by understanding the constraints of a traditional application.”
Relooking the conventional structures of application modernization
Conventional applications often have a similar appearance. They are almost monolithic beasts and for all the small parts that make them up, if there is a single one that changes, nothing works anymore.
This weakness in IT remains one of the challenges associated with any application ecosystem. Why? Because we want it to be agile, robust and scalable, all at the same time. Let’s do a little scenario: If every time you want to change your clothing, you have to depend on 3 other people and you have to be dressed in the same colors, it is restrictive. And yet, in an effort to save lines of code, this has been done for a long time.
Just like reinventing a process, how can you reinvent an application architecture to make it easier to manage? You have to start by understanding the constraints of a traditional application.
Given the help for structure and to avoid mistakes that a traditional application brings us, its supporting “hardware” or infrastructure has often consigned it to take on a familiar appearance.
It’s like the day-to-day work we used to live through not so long ago. Everyone had to mobilize, morning and evening, to collaborate. We all had to live in a common space to work.
However we see it, if the advent of COVID-19 is much more than a mere inconvenience, like many other problems, it hides an opportunity. It taught us that we could distribute ourselves and remain efficient in many areas. And this is exactly the point of application decoupling: it is not applicable everywhere and all the time. But it is worth considering where it could be of benefit.
Knowing to re-evaluate those critical points
First point: Make your application more ROBUST
Having an application architecture in smaller parts, modular and autonomous, allows us to consider the application as being “distributed”. Indeed, each part of an application has been designed to exist and serve the other parts of the application without constraining them. Often we talk about micro-services, or APIs, in this context. This distribution allows us to consider redundancy and additional capacity to properly serve customers.
Second point: EFFICIENCY is a must
It is not a given that the load of one application module will be equal to that of another. If a sales module was as busy as the marketing module, we would be very happy. So having got rid of unnecessary links, we can now host our various services on flexible infrastructures, at capacities according to our specific needs for these modules/services and according to their load. In addition to providing capacity where it’s needed, it saves resources where possible.
Third point: Make sure it is SCALABLE
It should seem obvious at this point that the independence of the services offered to the different parties allows us to reconsider how we focus our efforts. Indeed, a modification to a critical piece of the application no longer requires a complete revamping and general reinstallation of the application. It can remain operational during its evolution. A critical element to remain competitive.
We mainly focused on a very specific point about the modernization of an application. But for many, it would force a rather profound reinvention of ways of doing things. This is why there are people and specialized firms like us that live to do just that. There is a whole lot of management involved in the processes and tools surrounding a reinvention. It is not necessarily difficult. But if not difficult, it could still be complex.
Let’s be clear, few markets can afford to stagnate and risk a critical breakdown due to artificially maintained homeostasis. No, if we want to remain competitive and efficient, we must know how to make the move, be resilient and invest our resources with interest.
So when the time comes to take your step to the next level, consider how you can distribute the burden of your changes. Whether it’s in your applications or processes, wanting to keep everything attached, strung, and boxed can make your life more difficult than it needs to be.
We think about you. Hoping you’ll keep us in mind.