Modernizing Enterprise Software Applications: Complex Stories to Tell (part 1 of 7)

Modernizing Enterprise Software Applications_1.jpg

Green field projects are easy to match up with off-the-shelf ideals of modern architecture: services with meaningful boundaries, cloud ready, decoupled back end from the front end, RESTful APIs for communication from front to back and between services, and external dependencies.

Enterprise applications have more complex stories to tell, often several years into progressive modernization that may have had to cope with:

•   Increasingly complex business and customer needs, 

•   Acquired products getting stitched to them under the hood, and 

•   Front ends that have gone from easy to develop and, at best utilitarian, to modern experiences informed by modern applications and mobile experiences.

An oft-cited answer is to break up large enterprise applications into microservices, and while not a universal fit, this approach has had proven value in many cases. However, the direction of modernization itself tests some of the capabilities of the organization. 

A large, legacy code base is likely to resist modernization and forward-friendliness if it:

•   Is not well documented and understood,

•   Does not provide good RESTful endpoints,

•   Is tightly coupled with the front-end,

•   Lacks good test coverage, and

•   Is not built on up-to-date frameworks/technologies.

And, perhaps most importantly, the technical and leadership team skill sets need to align, and/or be augmented with capability, to deliver the solution in a timely manner.

An organizational application should be capable of being a first-class player as a macro-service before any suitable candidates are selected for carving away into their own microservice. Net new functionality can then be written as microservices if desired, and the decision-making and risk mitigation of planning refactors will be enhanced by the certainties an up-to-date and well-supported enterprise application can provide.

Recommendations

  1. Develop an architectural blueprint informed by your business strategy and best practices that will guide the organization and become a foundational document of architecture, patterns and development processes.

  2. Consider adopting DevOps best practices to drive a culture of automation and transformation.

  3. Deploy enterprise applications on cloud platforms to improve efficiency and automate operations. 

Mark Hewitt