In Search of Application Agility: What It Actually Means and How to Attain Application Agility

Contributed by Jim Scott

Editor’s Note: This is an excerpt from the book, “A Practical Guide to Microservices and Containers: Mastering the Cloud, Data, and Digital Transformation” – you can download the ebook here.

Containers offer a front-row seat to application development agility, which also explains the very rapid adoption of and enthusiasm for containers. To more fully appreciate the value of application agility, it is important to understand just how completely the application development environment is changing.

This environment has become far more complex and multifaceted in the last decade. The complexity has arisen chiefly due to the great difficulties in dealing with separate clusters or silos of data. This reality, in some organizations, has made application agility almost a misnomer. Clearly, a way is needed to seamlessly move data from one environment to another without having to customize the data for each environment. In fact, it is widely believed that, within a few years, developers leveraging containers will be able to do exactly that–move their test/dev projects into production without needing any major code rewrites to accommodate new data locations, such as on-premises or onto a cloud.

Microservices and Containers

Enterprise applications have traditionally been built with a monolithic, vertically integrated structure. All application logic was contained within a single program, which often took months or even years to develop. Detailed functional specs were required, and extensive testing and code reviews were part of the process. The resulting application may have fit the stated requirements, but there was little latitude for embellishment. Enhancing an application required the preparation of new functional specifications, extensive testing, and more code reviews. Even modest enhancement requests could consume months. The legacy applications used by airlines, banks, and credit card processors are typical of these very large, robust, but inflexible programs.

The rapidly changing business and technology landscape of today no longer tolerates this approach. Year-long development schedules create applications that are often irrelevant by the time they are complete. New technologies like bots, automated assistants, and mobile devices must be accommodated quickly. New payment mechanisms, such as Bitcoin and Ethereum, come seemingly out of nowhere to change the way customers conduct transactions. Organizations that want to expose data or services to business partners have no way to do so because those needs weren’t anticipated when the application was built.

Application agility reimagines development and deployment around a modular, loosely coupled, and dynamic architecture. Like Lego bricks, the components of the application can be moved and reassembled as needed. Communication between components is provided by a messaging plane. New or enhanced functionality is provided by revising individual components and slipstreaming them back into the network without disrupting the application as a whole. These components, or services, can also be stored in a library and shared by multiple applications. Services are called only when needed, which reduces program size and complexity while improving performance.

Application agility also changes the nature of the data that applications process. Less and less, it is data warehouse or data mart data finding its way into leading edge applications. The growth area is event-based data. Whether it’s collecting machine sensors to predict and prevent failures, or providing key offers to customers, or identifying and preventing fraud before it happens–all such [use cases(/solutions/enterprise-big-data-and-hadoop-use-cases/)] are enabled by event-based data flows and a converged platform.

Consider the example of legacy banking applications. Constructed in the age of mainframes for use with green-screen terminals by data processing professionals, these applications must now be accessible to any customer from any device. What’s more, they must be intuitive to use. It’s no surprise that many banks have spent years overhauling their application portfolios for the age of self-service banking.

Now consider one of the new breed of mobile payment apps, like Square. Its developers must cope with a constant stream of new devices, payment methods, and customer requests. The company closely monitors social media activity to measure customer satisfaction and identify bugs, which it has a few days to fix, at best. The most popular mobile apps are updated weekly in order to maintain feature parity with their competitors. In many cases, those apps must be synchronized with desktop versions that work on any platform and in any browser.

The frenetic pace of business in the age of digital transformation demands maximum application agility. Thanks to cloud computing, the barriers to entry have fallen, and the only way market leaders maintain their positions is by innovating faster than everyone else. Switching costs are low, and customers have seemingly endless choices.

As always, if you have any questions please submit those in the comments section below.

This blog post was published February 06, 2018.

50,000+ of the smartest have already joined!

Stay ahead of the bleeding edge...get the best of Big Data in your inbox.