Skip to main content

Command Palette

Search for a command to run...

Distilling modern software into simple building blocks

This article describes modern software architectures in terms of platforms (business and technology) and applications (apps)

Updated
6 min read
Distilling modern software into simple building blocks
S

Sudarshan leads the platform engineering capability within Deloitte Cloud & Engineering. He enjoys leading high-talent-density teams that architect, build and operate platforms that have an outsized impact on organisational performance indicators. He combines product management, architecture and engineering skills to build consensus across business units and organisational levels by showcasing a strong correlation between technology decisions and business drivers. Writings and opinions my own.

Key takeaways

  • Creating a shared vocabulary to describe the fundamental building blocks of modern software will help organisations better overcome the challenges of adopting cloud and container technologies.

  • Modern software can be largely categorised into technology platforms, business platforms and user applications.

  • The term “platform“ is suffering from semantic diffusion. Marketers have over-used the term and now sell everything and anything as a “platform“. The acid test for a platform is - Does it expose a set of APIs or equivalent for the broader community to consume and develop applications on?

  • Technology platforms like Kubernetes provide technical capabilities like self-healing and monitoring natively for applications that conform to prescribed best practices, e.g. stateless architectures. ROI on technology platforms is based on improved engineering productivity.

  • Business platforms surface business capabilities as APIs. They can be “headless“ (no user interface). ROI on business platforms is a percentage of the value created by the ecosystems they enable.

  • User apps (short for applications) compose together business capabilities into intuitive workflows, enabling end-users to accomplish their goals, e.g. the Quote-to-Buy journey. ROI on user apps is based on the value transacted by that particular channel.

Cloud and container technologies are ubiquitous; while the practices to optimally leverage these technologies are vastly different from conventional practices, they are being steadily standardised, e.g. distributed architectures on commodity hardware vs. centralised architectures on specialised hardware.

Over the years, the community has developed proven practices for most enterprise challenges; however, maturity is still unevenly distributed. A big reason for this gap is the lack of a shared language to describe the fundamental building blocks of modern software and how they are composed to deliver business value.

This article proposes a simple model for describing modern software landscapes, beginning with the top-level building blocks and unpacking them to reveal the fundamental primitives that power them.

Technology Platform

For applications that conform to prescribed best practices e.g. stateless architectures, technology platforms like Kubernetes natively provide capabilities like self-healing, blue-green deployments and monitoring.

ROI on technology platforms is based on improved engineering productivity

Technology platforms are common because they solve generic problems and focus on optimising quality attributes like deployability, resiliency, availability etc.

For organisations to fully realise the benefits of technology platforms, they should be supported by a comprehensive change initiative spanning business and technology.

New technology with old approaches produces sub-optimal results.

Business Platform

Business platforms surface business capabilities as APIs and business facts as event streams. They can be “headless“ (no user interface) or have optional loosely-coupled interfaces. Business platforms enable organisations to deeply embed their business capabilities into the consumers' business processes.

Stripe is an example of a successful business platform. Their payment processing APIs enable transactions worth millions of dollars.

ROI on business platforms is a percentage of the value created by the ecosystems they enable.

Business platforms are not as common as technology platforms, but they are a fast-growing category for, e.g. headless e-commerce startups like Elastic Path.

As value transacted by machine-to-machine interactions outpaces human-to-machine interactions, business platforms will gain prominence.

Platforms Washing

The term “platform“ is suffering from semantic diffusion. Marketers have over-used the term and now sell everything and anything as a “platform“.

The acid test for a platform is - Does it expose a set of APIs or equivalent for the broader community to consume and develop applications on?

Let's apply this test to Salesforce. Salesforce exposes APIs, Drag-and-Drop widgets, etc., for the enterprise community to consume and develop applications on; therefore, Salesforce is a platform from Salesforce Inc.’s perspective. However, it is not a platform from the perspective of the buying enterprise; most enterprises are simply adopting Salesforce to build applications on it.

If the enterprise used Salesforce as a System of Record and developed broadly consumable APIs around it to expose business capabilities, fostering an ecosystem around it, then the consequent solution could be termed a platform. In this example, the native Salesforce UI would essentially be administrative UI and the key capabilities would be consumed through business APIs.

Return on “Platform Investment” almost always equals “Return on New Capabilities.”

User Apps

User apps (short for applications) compose business capabilities into intuitive workflows.

Intuitive user apps boost employee productivity, delight users and create brand loyalty. While the classical user interfaces are still dominant, voice apps like Alexa, Google Assistant, chatbots and AR/VR interfaces are fast gaining ground.

ROI on user apps is based on the value transacted by that particular channel.

User apps are the digital touchpoints for businesses with their employees and customers, and organisations will ultimately be judged by the quality of their user apps.

Summary

Dimensions

Technology Platform

Business Platform

User Apps

Primary Value

Technology capability “as a service”

“Headless” Business Capabilities

Intuitive customer/employee journeys

Designed For

Pro developers

Business users, technology enthusiasts

Domain experts, end customers

Primary access

Command Line Interface (CLI), Domain Specific Languages (DSL), e.g. Terraform, AWS CDK, Azure Biceps

Programmatic interface (API, SDK)

User Interface, Voice, Chat

Examples

MuleSoft Runtime Fabric, RedHat OpenShift

Stripe, Twilio

Single Page Applications, Voice Apps, Chatbots

Common pitfalls

New tech, old approaches. Lack of self-service, wide blast radius, manual approval gates, and inability to experiment

APIs are ubiquitous but are not articulated in business capability terms

Prioritising aesthetics over function, inconsistency between channels, and lack of user interaction metrics

Unpacking the building blocks

The most fundamental units powering the top-level blocks are primitives. They define the boundaries within which platforms and apps operate. In many respects, primitives are akin to the laws of physics that govern the natural world.

Every once in a while, brilliant engineers develop new primitives (redefining the boundaries), which brings in a wave of innovation. For example, e.g. Paul Menage and Rohit Seth coded cgroupswhich, amongst other innovations, powered the container revolution.

Primitives are akin to the laws of physics governing nature. When new primitives are engineered, they usher in a wave of innovation, creating a competitive advantage for the business and tremendous value for the community.

Within business platforms, innovative primitives are closely guarded, e.g. new trading algorithms and actuarial algorithms - these algorithms are embedded into business platforms and provide their organisations with a sustained competitive edge.

Skilled engineers develop innovative primitives and redefine the boundaries within which software operates.

Skills Viewpoint on Platforms and User Apps

The skills required to build primitives across the different platforms and User Apps are varied with some overlap, developing expertise in one competency and building an appreciation across the others is a great starting point.

The model strives to cover the most important 20% that is relevant for 80%+ use cases. While exceptions are expected, the model serves as a starting point to match needs with team skill sets.

Category/SkillsTechnology PlatformsBusiness PlatformsUser Apps
MajorsSystem and Infrastructure concepts. e.g. OS processes, networking, and hardware choice implications.Application programming and concepts, e.g. general-purpose programming language, DDD, API designUser interface-centric programming language, e.g. JavaScript, Android, Swift
MinorsApplication architecture concepts, e.g. domain-driven design (DDD).System and Infrastructure concepts.API design

References

Kubernetes Is Not Your Platform, It's Just the Foundation

A

Thank you Surdashan. The article "Distilling modern software into simple building blocks" provides a comprehensive and insightful perspective on modern software landscapes. It effectively breaks down the complex landscape into understandable building blocks: Technology Platforms, Business Platforms, User Apps, and Primitives.

The concept of Technology Platforms as a service designed for pro developers is intriguing. The mention of common pitfalls such as old approaches to new tech and lack of self-service resonates with many of the challenges faced in the industry.

The Business Platform, especially the idea of surfacing business capabilities as APIs and event streams, is a forward-thinking approach. It's interesting how it predicts the rise of machine-to-machine interactions outpacing human-to-machine interactions.

User Apps are aptly described as composing business capabilities into intuitive workflows. The emphasis on prioritising function over aesthetics is a valuable insight.

The concept of Primitives as the most fundamental units powering the top-level blocks is thought-provoking. Comparing them to the laws of physics that govern the natural world brings a fresh perspective.

Overall, the article does an excellent job of simplifying complex concepts and providing a clear roadmap for understanding and navigating modern software landscapes. It's a must-read for anyone involved in software development or interested in learning about the current trends in technology.

3