Emerging Patterns for Application & Product Modernization

OK, I admit I have a pretty cool job. I run NVISIA's technology centers and get to explore the architecture and technology used by our software product innovation teams across a wide variety of clients. Lately, I have noticed a couple of architectural patterns emerge in the product modernization world.

 While the frontend of these modernized products/application are usually built with responsive Javascript browser apps (typically single page apps with Angular 2) or, when needed, native mobile apps, the backend is where things are bit more diverse.  The backend tends to take on two forms: 1) API Gateways (often cloud based PaaS solutions such as Apigee and wso2 or Mulesoft for both cloud/on-prem solutions) and 2) Microservice Architectures deployed with Docker containers. ...and of course hybrids of both where the API gateway routes calls to services running in docker containers.

The API gateway backend provides a nice way to wrap, manage, orchestrate, secure and externally expose services to frontend Javascript or mobile apps. This tends to be a popular choice when most of the work is integration related and not deep system refactoring. These API toolsets provide sophisticated integration glue for a variety of system and data data interfaces. While the hardcore software development folks prefer richer application development platforms like .Net and Java (for Microservice development), they do appreciate the convenience of ETL-like transformations and protocol adapters provided by the API gateway and cloud ESB type products.

The refactoring crowd appears to be leaning toward Microservices and Docker containers for decomposing monolithic applications into clusters of independently deployable services. ...and Docker makes these independently deployable cluster much easier to build, manage and deploy. The recent Docker 1.13 engine improvements to docker swarm, stack-based docker-compose and a cool http routing mesh for service discovery and load balancing in Docker Datacenter (UCP) have made clustered deployments of these service clusters much easier. While there are other stacks using tools like Mesos, Marathon and Kubernetes to build and orchestrate clustered services with Docker containers, Docker is making it a lot easier to do with a single platform - most of what you need is baked right into the Docker 1.13 engine.

Even though these two approaches have been around for a long time in variuous forms, they appear to be gaining steam because of better tooling/platform support. Subsequently, these patterns are now within the grasp of more mainstream IT shops and present new options for evolving legacy products and systems.

Topics: Architecture & Design, Software Development, Modernization, DevOps

Written by Mark Panthofer

Mark Panthofer is the Vice President overseeing NVISIA's Technology Centers in Chicago and Milwaukee. He started his career with NVISIA in 1996 and spent most of his career in the field as a leader in NVISIA's service delivery organization. After more than 20 years as a computer engineer, he enjoys exploring and applying the latest software technologies as the leader of NVISIA's Technology Center. Mark is also an Accredited Docker Consultant and Instructor.

Leave a Comment