Share this post:
Modernizing something means it must be obsolete to begin with. That’s true of applications as much as anything else. What may be a “heritage” application to you may not seem out of date to someone else.
Looking back at heritage applications
To appreciate a modern application, one must understand what a modern application is not. Heritage applications have architectures and characteristics that exemplify the technology, market behaviors and organizational structures of their time.
Let’s set the time boundary for heritage applications at about 20 years. This was the dawn of the industrialization of the internet and enterprises were engineering their applications away from client server architectures. The World Wide Web was a boon for a new era of content management and publishing. However, it was the “web application” architecture pattern that emerged and gave birth to a new class of heritage applications.
A typical heritage application
Web applications. These were typically designed to shift workload back to a server and used lightweight clients such as web browsers. A common architecture pattern was to use an application server such as IBM WebSphere ND, JBOSS or Apache Tomcat to host a web application that accepted HTTP requests, performed some server business logic, accessed some data stores and returned a web page.
Application servers. Web applications had to run on application servers hosted in client data centers, which dictated in what language applications were written. As the complexity of applications grew, application servers started providing session databases and session management. Bare metal was the norm, but with hypervisors, virtual machines became the way to maximize hardware capacity.
Proprietary application server platforms had costly licensing schemes and took a lot of effort to build, set up and manage, so application server environments were typically shared. Operations were measured and motivated by stability and reliability of environments, which was sometimes antithetical to developers’ mission to introduce code updates.
Waterfall software delivery. The prevailing software delivery model was Waterfall, with releases taking months and, sometimes, years. This regimented methodology meant it was difficult to introduce changes, causing painful delays when business needs or market demands inevitably shifted. Waterfall delivery also lent itself to monolithic application design. A “big bang” release would include deployment of the presentation, logic and data tier layers, all at the same time.
Understanding today’s landscape
Fast forward to today. Technology and market demands are incredibly dynamic, where daily sentiment can change based on a single tweet. Enterprises must respond to these conditions, isolating functions, delivering features and monitoring and learning with fine-tuned granularity. There’s significant technology maturity and evolving thought that has been a game changer for agility.
The cloud is mature. Public clouds, private clouds and hybrid cloud architectures are common. Commoditization has moved upward. Linux is the OS of choice. Docker, Kubernetes and Cloud Foundry containers provide a new layer of abstraction at the middleware layer. Everything is a service, including infrastructure, platform, software and network. Everything is accessible through an API, even the modern app.
IBM Cloud Garage Method
Microservices. The 12-Factor App and microservices are dominant design thoughts. Smaller chunks are easier to code, test, deploy and monitor and isolate risk when a change occurs. Applications are composites of microservices that communicate with APIs. “Heavyweight” application servers have spawned a new, lighter weight sibling that contains lean, stripped down, commoditized runtimes, one example is WebSphere Liberty.
Agile software delivery. The prevailing software delivery model involves an agile, lean approach, with features delivered in short cycles. The IBM Cloud Garage Method, a set of reference architectures and practices that enable enterprises to act like a startup combining Design Thinking, agile, DevOps and lean, helps deliver working software quickly.
Development teams emerge as self-directed, multi-disciplinary, diverse squads. Development and operations come together with product owners, testers and architects in a highly collaborative venue. The squad is aligned with a microservice, which is self-contained and can operate on its own.
Introducing today’s modern app
A modern application has a very different set of characteristics than a heritage application.
Flexible. Modern applications are collections of microservices, which are light, nimble, fault tolerant and small. Microservices can run in containers deployed on a private or public cloud and usually stand alone, though they often call to other services.
Being emancipated from the traditional application server means each microservice can be written in the language that is most suitable for the workload and the programmer. Applications have self-contained, self-describing packaging. Container and cluster management software, such as Kubernetes, Docker and Cloud Foundry, provide a control plane to manage microservices.
Evolving. Stateless services are more desirable for cloud-native applications, although most enterprises cannot avoid the inevitable “stateful transaction to a data store.” Eventual consistency is preferred over immediate consistency. Service management of microservices on the cloud is more complicated with more moving parts. Cloud service management operations (CSMO) is a growing field that has spawned a new role and practice, site reliability engineering, that is focused on service characteristics and optimization of the overall software delivery life cycle (SDLC) and the application.
High quality. The continuous delivery pipeline and automation of the SDLC is an engineered effort on day one. Ideally, development and operations silos are broken down with software reliability estimations (SREs) on the delivery squads with the developers. Automation of the delivery pipeline integrates a heterogenous array of build, package, deployment and test tools. Feedback loops and pipeline analytics help the delivery squad deliver more quickly and with higher quality.
Today’s technology environment requires new thinking and a more agile approach than ever. Modern apps are designed to address these challenges and propel businesses forward, not back.
Learn more about modern apps from the IBM CTO for DevOps for IBM Hybrid Cloud.