- Omnichannel. Modern applications are designed to work across tablets, smartphones, phablets, heads-up displays, automobiles — and, yes, desktops and laptops.
They are designed to anticipate new client demands and new methods of interaction, including voice, touch, mouse, and eye tracking.
Modern apps may start with a consistent cross-channel experience but they quickly move beyond that to a cross-channel and a channel-optimised interface.
- Elastic. Successful modern applications are designed to spin up or spin down as needed. They take advantage of cloud economics. They comprehensively use open source software because it adds licensing flexibility to scale-out architectural flexibility.
- API-oriented. Modern applications compose and expose APIs everywhere. They build on open web techniques and use REST, XML, and JSON to make it easy for all types of devices and clients to easily consume data. Any visible service or piece of data has a “headless” API counterpart so that alternative views can be provided. In many cases, the APIs that a modern application exposes form the basis for a public, third-party developer community that enables mash-ups, plug-ins, and innovation on a core set of data and services that drive a company’s business.
- Responsive. Modern applications are built to deal with the realites of a public network topology that is increasingly out of IT's control. Application state management is pushed to the edge of the application. Asynchronous service design enables scale-out infrastructure to deliver information to clients in a stateless manner. Alternative system design patterns like broker and pipes and filters become better alternatives than a model-view-controller approach. In-memory databases are used to aggregate information from multiple service endpoints and cache it as close to the carrier networks as possible, in public cloud infrastructure, often alongside CDNs.
- Organic. No, modern applications aren’t singularities (yet). But modern applications tend to evolve more like a biological organism than a big-bang product release. Individual pieces of the application change all the time. A new feature on the client is deployed here, and a new algorithm that makes a service more efficient is deployed there. Modern applications are complex machines; they span systems of operation, systems of record, and systems of engagement (see Figure 1). Changing out all of the components in a single release would be incredibly risky. Dev-ops practices and continuous deployment capability are critical adaptations for organizations that want to build modern applications.
- Contextual. One of the biggest opportunities developers have when they make the mobile shift is the increase in contextual data at their disposal. There’s the immediate device context and data from sensors, but there’s also the extended context of a modern application, which includes machine-to-machine (M2M) data, and complex events. There’s also historical context, and the possibility of using all three to predict what a customer wants, before they know they want it.
Also in slideshows :