Application Modernization in The Cloud Era
A bit of history
Computer applications have existed quite literally since the advent of the computer – you need something to make that hardware do something! As the hardware would increase in capability and power – these applications could be updated/rewritten to take advantage of the additional capabilities. In the early days of computing, this gap in upgrades would be measured in years – there just wouldn’t be that many advancements in the infrastructure that would require additional work. But as we moved from the mainframe era to the client server era, the need for updates became more pronounced – but marshalling a team to march in lock step to launch a single monolithic application were so vast that it still meant that major upgrades were still measured in years or at best – quarters.
There were some glimpses of improvement in the early/mid 2000’s as application servers came into vogue and they employed the “message bus” which allowed the flow of data to be decoupled with the underlying business logic. This development gave birth to the blessed (and cursed) Service Oriented Architecture (or SOA). SOA has evolved a little over time but has been relegated to large enterprises who could deploy costly Application Servers on costly hardware. In my opinion – it was this cost that kept SOA from gaining wide popularity which in turn stifled innovation in other service areas (like database technology).
The modern cloud era
So what was the catalyst that has caused such accelerated growth not only in technology available but in development methodologies? The Hyperscale Cloud (which we will henceforth call the Cloud).
The cloud democratized technology allowing anyone with a credit card with a few dollars left on it to provision an environment that would have cost over a million dollars 5 years ago just to stand it up – and not be charged but a few cents for each transaction that flowed through it. Cloud providers are now racing to capture all the latest libraries, containers, functions, and services and make them available in every datacenter they own around the world.
So what does it mean to “modernize your application”?
It means to (in many cases) refactor your application to consume the services made available in the cloud and to refactor your development methodologies, tools, testing, and techniques. It means to move from a quarterly (at best) deployment of your application to a continuous integration and continuous deployment of aspects of your application – even many times per day.
The business benefits include:
- Agile updates, improvements, and fixes of your application
- Agile connections to new data-sources that could enhance the capability of the application
- Transactional billing for your application giving your true cost of ownership to operate the application
- Less (no) time worrying, planning for, and managing operating system management, patching, and security – that’s the job of the Cloud provider. Your IT personnel can now be focused on driving business value and direction of your applications.
- Ability to dynamically rewrite or modify any aspect of the application from the client tier, business logic, or even the database tier. Many modern applications now have the ability to distribute the data between multiple database technology – choosing the best one for the type of data it manages.
Unfortunately, modernizing your application is more than just adopting a new set of tools. By way of example a new set of tools from your favorite hardware store never built a house. To build a house you do need tools – but more importantly you need a team of talented craftsmen, sub-contractors who know how to use them and are all tightly orchestrated by a project manager and foreman following a detailed blueprint which was created by a skilled architect.
Examples of tools would include cloud specific capabilities like containers, compute instances, and serverless capabilities (not to mention a vast array of storage and networking capabilities) as well as one source frameworks and libraries. All of this gets glued together by code repositories like Github and Visual Studio Online and deployed though tools like Jenkins, Shippable, Electric Flow, or Octopus Deoloy (amount others including some specific to each cloud).
Not a destination, but a methodology
The Cloud has made possible a truly new era in computing and application development – but in order for a company to reap these rewards – the move to the Cloud must be accompanied by a refactoring/transformation of the application.
But here is the catch: you’re never going to be done. Cloud providers will continue to innovate, and businesses will take advantage of the opportunity and innovate, so you will need to evolve to compete. Application Modernization isn’t a destination but a methodology.