Lean Apps

Lean Apps

Build software based on customer value, rather than technological ownership

Summary

• Traditional applications, overweight "DIY", and implementation scope creates a false sense of control and change isolation; by contrast, lean apps focus on shifting as much undifferentiated work (server management, data sharing) as possible to platform providers who can deliver it more consistently and cost-effectively using cloud-native, multi-tenanted SaaS implementations.

• Lean apps decrease development time and delivery risk by reducing application surface area to four key elements: data model, integrity constraints, stateful workflows, and connectors.

• In a lean app, much of the "heavy lifting" shifts to the platform vendor: data consistency and cross-cloud replication; security and governance; fault tolerance and scaling; infrastructure procurement, deployment, and management; data modeling and API maintenance.

• Developer and ownership benefits include: more secure and predictable outcomes; automatic cross-cloud, cross-company, and cross-region data sharing; guaranteed consistency of data, modern APIs that are cloud-, web-, and mobile-ready, and data model evolution guaranteed not to break clients.

• Companies can adopt lean app methodologies incrementally, and vendors such as Vendia and Snowflake have embraced this model in their offerings already, simplifying migration and adoption.

Progress in Application Design

Software has progressed over time to remove drudgery and toil from the developer by abstracting the level of expression – like assembly language to C to C++ to Java to Python as a programming language example. But it is not just the language used to write applications: The shift from highly proprietary libraries with complex licensing schemes to shared, open source libraries has had a similarly dramatic impact on the speed and efficiency of developing software and delivering IT solutions.

With the move to the cloud, not only did the job of running a data center disappear – the “serverless” moniker is now appearing in virtually every category of service from AWS, another way in which vendors are trying to remove the undifferentiated work of deploying, scaling, securing, and managing servers and other infrastructure from the job of developing and delivering software implementations.

Watching this grand evolution raises interesting questions: • Where are today’s trendlines - increasing automation, abstraction, standardization (de facto as well as de jure), and “serverlessness” - headed? • What can they tell us about what a typical business software application will look like in the future? • What can developers, cloud companies, and the broader IT ecosystem do to achieve those future outcomes faster?

While tracking an entire industry is complex, there is a single, prevailing theme: “less is more”. Broadly speaking, progress in application design has been driven by reducing surface area and shifting complexity to the application’s environment.

Look to the Future

So much for looking in the rearview mirror – what does all this say about the future of software development? If the major trends have been focused on the continual removal of surface area, and the resulting decrease in complexity and cost of ownership, what is the eventual result?

If one imagines these trends continuing, it is also natural to ask an interesting question: What else can be taken out? What undifferentiated heavy lifting can be eliminated, leaving only the truest, most pure form of what is often referred to as “business logic”?

For an industry that has for so long defined “software” as “stuff that runs on a machine”, it can be difficult to give up on that paradigm. One approach is to focus on customer value, by asking, “What are the parts of an application that actually create end user value?”

The Elements of a Lean App

By letting go of how an application is constructed today and instead thinking about it structurally, there are several elements that embody the actual business needs of a typical application:

• A data model. Most commercial applications are, at their heart, “CRUD” in nature.

• Integrity constraints. Once the “syntax” of a data model is known, the next question is usually establishing the “semantics”, most notably what kind of data is good versus bad data.

• State transitions (aka data triggers). These are ways of managing transitions from one application state to another, whether that transition is time based or data centric.

• Connectors. Connectors are the ligaments that enable an app to connect to other applications, including data transformations and event hubs.

Example: Acme Bank

Imagine a simple example based on Acme Bank, which is expanding its application to include retail banking needs, such as ATM and teller-based deposits and withdrawals.

Start by expressing a basic data model:

• User_Account(customer:string, balance:number)

Then express access controls:

• User_Account(read:{Acme_East, Acme_West, FINRA}, write:{Acme_East, Acme_West})

Add simple integrity constraints:

• User_Account.balance >= 0 • User_Account.name IS UNIQUE

Then create an event hook to notify other systems of account updates:

• EventHub.webhook(<mainframe’s API URL>)

The infrastructure would then supply everything else needed by the application, such as cross-cloud replication, mobile- and web-ready GraphQL APIs, and full security apparatus.

Adoption Concerns

Lean apps offer significant benefits over traditional application design approaches but come with challenges as well.

Common concerns include:

• “Training wheels” that won’t scale with production usage. • The complexity of container-based solutions and Kubernetes. • Concerns about cost, especially regarding lean apps being built on serverless principles. • Lock-in with a single public cloud provider.

Are Lean Apps a New Idea?

No, they represent an evolution of existing ideas, integrating trends in serverless cloud services, open-source software, cloud-based data lakes, and others.

The Lean App Movement

The goal is to flip the IT iceberg, shifting resources from repetitive tasks to innovation. This means a focus on developing applications that minimize surface area and complexity.

The Lean App Manifesto

The lean app movement is driven by the principle of "less over more". Lean apps prioritize:

  1. Differentiated business logic.
  2. Smart APIs.
  3. Schemas over code.
  4. Automation over manual effort.
  5. Off-the-shelf data sharing and security.
  6. SaaS over IaaS; serverless over serverful.

Getting Started

Companies can transition to lean apps gradually, leveraging schema-based solutions for APIs, adopting cloud-based databases, and segregating integrity constraints from infrastructure management.

Final Thoughts

The concept of “leanness” has been around for ages and continues to evolve, enabling faster, more cost-effective, and innovative software development.