Here are 4 pillars, 6 principles of modern apps design

Developers, architects, and DevOps engineers are no longer satisfied with the status quo when it comes to designing and building applications. They’re tired of the challenges of porting applications from one cloud to another. And they’ve experienced the intense pressure of spinning up additional compute infrastructure quickly to meet unexpected demand.

What we’ve increasingly heard from customers and community members is that they want to build ‘modern apps.’ That’s why we wanted to create a rock‑solid definition that incorporates all the crucial elements required. This can serve as a checklist and reference point for application development and design efforts going forward.

During our research, we heard over and over again that modern apps must possess crucial attributes. We’ve broken these down into four pillars: scalability, portability, resiliency, and agility.

Pillar 1: Scalability

There are two elements of scalability: expansion of compute capacity and speed of expansion. Let’s consider them in the context of ‘fast scaling’ and ‘long scaling’:

  • Fast scaling. The ability to increase an application’s capacity by 100% within five minutes. Being able to double capacity in such a short time implies that an application can quickly expand capacity to meet unforeseen increases in demand.
  • Long scaling. The ability to increase an application’s capacity 10x over a year or more, without requiring a major refactoring of code or large shifts in infrastructure requirements. A modern app that can long scale is the result of clean design with loose dependencies and loose couplings to infrastructure components.

Pillar 2: Portability

Even with today’s wide use of containers, the differences between clouds – in terms of dependencies, tooling, configuration nuances, and more – make it unrealistic for organisations to expect instant portability as they try to move to a hybrid multi‑cloud architecture. A more realistic and appropriate definition of portability should encompass:

The core functional elements, code, and logic of an application must remain the same regardless of the environment in which it is running.

  • Functional portability. The core functional elements, code, and logic of an application must remain the same regardless of the environment in which it is running. This means that your code runs cleanly inside a container without external dependencies tightly coupled to a single environment.
  • Management portability. This enables your application to be monitored, secured, and observed in the same way—with the same tooling and same sets of reporting capabilities—no matter the environment.

Pillar 3: Resiliency

Resiliency in general is about ensuring high availability with strict SLAs regarding downtime or more general reliability that leaves room for longer downtimes or time periods when an application is not required to be online and accepts eventual consistency and service delivery as sufficient.

  • User‑facing resiliency. Application users, either machine or human, must never notice a performance issue or problem caused by a fault or failure of either a modern app itself or any service or infrastructure it depends on. Failures inevitably cascade, impacting even automated services and highly dependent microservices.
  • Failover resiliency. A modern app is able to restore within five minutes any critical service to 100 percent of what is necessary to handle average workloads. Designers should think about failing over to unaffected compute resources as a key part of application design and one that is implicit in self‑healing, and environmentally aware.

The core functional elements, code, and logic of an application must remain the same regardless of the environment in which it is running.

Pillar 4: Agility

Application dev teams benefit from agility by quickly and easily accessing the resources they need to test and push new features. DevOps teams benefit from agility through simplified and automated checking and deployment of code and infrastructure.

  • Code agility. The application itself must be designed to constantly absorb new code. In most cases, this means an application is composed of microservices and linked via APIs to enforce loose coupling and reduce intra‑application code dependencies and rigidity.
  • Infrastructure agility. The ability to spin infrastructure up or down to satisfy the needs of all customers including application development teams, security teams, and DevOps teams.

The six principles of modern apps

Bestseller No. 1
Mybaby Automatic Soap Dispenser, 1.1 Pound
  • Works With All Liquid Hand Soaps
  • Plays 20 Second Song That Teaches Children How To...
  • Motion Sensor Technology Provides Sanitary,...
  • Magnetically Attached Drip Tray Removes Easily For...
  • Self-cleaning Function Prevents Clogs And Mess
Bestseller No. 2
Asterom Walking Cane - Handmade Wolf Cane - Cool Walking Canes for Men and Women - Wooden, Carved, Unique - Walking Sticks for Men & Seniors (36 Inch)
  • STYLISH CANE FROM THE RED CARPET TO YOUR HOME! Our...
  • 100% SATISFACTION GUARANTEED! Buy with confidence,...
  • EXCEPTIONAL COMFORT DUE TO ERGONOMIC HANDLE. The...
  • CHOOSE THE CORRECT LENGTH TO AVOID SPINE PAIN....
  • WIDE QUAD CANE TIP COMPATIBLE. Need extra...

To satisfy the four pillars of modern apps, most modern apps employ architectures following many of these six principles:

[link VIDEO]

  1. Be platform agnostic. This means an application is built to run without any consideration of the platforms or environments where it is likely to run containers have become the de facto standard for platform‑agnostic runtimes.
  2. Prioritise open source software. Because modern apps require teams to be able to look under the hood of the code in order to design for portability and scalability, using OSS wherever possible is crucial to maintaining the modern apps ethos.
  3. Define everything (possible) by code. Modern apps must move at faster-than-human speed. Automation and programmatic definition of every aspect of modern app requirements and attributes is now table stakes.
  4. Design with automated CI/CD as a native/default state. Modern apps are designed to take into account the eventual requirement of CI/CD automation, for code pushes, infrastructure deployment, and even security requirements.
  5. Practice secure development. This means testing all code as early as possible in the development process using software composition analysis (SCA), static application security testing (SAST), dynamic code analysis (DCA), and formatting checkers. For DevOps teams, this also means following security best practices.
  6. Widely distribute storage and infrastructure. Replicating storage and compute across multiple zones or clouds or hybrid deployments can ensure greater resiliency and scalability.

Modern apps are both a checklist and a state of mind

Like Schrödinger’s cat, striving towards modern apps means simultaneously existing in two states.

There is the real world of the current cloud and hybrid environments, and the time and budgetary constraints under which we develop and deliver applications. And there’s the ideal world of fully automated, highly secure, completely agnostic, instantly scalable, perfect modern apps.

Modern apps must move at faster-than-human speed.

The reality is, of course, messy. You may be running a monolithic app that isn’t in containers, can’t double capacity in five minutes, and can’t easily be shifted to other environments without refactoring code. But that doesn’t mean the pillars and principles of modern apps laid out here won’t help you or guide you to a better state. In addition, we anticipate that as the world of technology changes and expands, we’ll have to modify our definition.

New
Rose Quartz Agate | Serving Tray with Brass Handles | Circular (Gold - Finish), Diameter(12 inch)
  • The natural look of agate stone creates a unique...
  • The edges of each piece are electroplated (NOT...
  • Handles are solid brass.
  • Available in 12", 14" and 16" diameter
  • Can do silver, rose gold, or gold plating for...
New
AANTHROPOLOGY By Rhea White Crystal Agate Cheese Platter/Tray | Circular (Gold - Finish), Diameter(12 inches)
  • The natural look of agate stone creates a unique...
  • The edges of each piece are electroplated (NOT...
  • Handles are solid brass.
  • Available in 12", 14" and 16" diameter
  • Can do silver, rose gold, or gold plating for...
New
Magenta Agate Aventurine Set of 4 Large Coasters/Sign Boards (Rose Gold - Finish)
  • Sold as a set of 4 pieces
  • 4" x 4"
  • 10 - 12 mm thick
  • Natural stone will vary in size, color, and...
  • Each piece has 4 rubber pads to avoid scratching...

Already there are software models that don’t fit neatly into the definition: serverless computing, increasingly sophisticated low‑code/no‑code application platforms and AI‑driven security applications, CDNs with edge‑node compute capacity, and more. That’s why this definition is designed to stretch and grow along with the always‑expanding body of better technology. In its current state, we hope it can guide your quest to build applications in the best possible way for your users, developers, and all other stakeholders.

This article was originally published on our sister site, ITP.net

For all the latest business news from the UAE and Gulf countries, follow us on Twitter and Linkedin, like us on Facebook and subscribe to our YouTube page, which is updated daily.

Original Post>