Use partitioning and system integration to build effective platform architecture. Platform architectures should be simple, resilient, maintainable, and evolvable.
Platform Ecosystems: Aligning Architecture, Governance, and Strategy by Amrit Tiwana
Amrit Tiwana discusses platform attributes as well as design patterns and risks in Platform Ecosystems: Aligning Architecture, Governance, and Strategy. He uses cities as a metaphor for well functioning platform architectures and describes how complexity erodes platform viability and increases costs.
architecture is a platform’s DNA that preordains visible organizing logics and irreversibly imprints its evolutionary trajectory. A platform’s properties are inherited by apps in their own architectures, but imperfectly.
Attributes of successful platforms
Good architectures and cities shared four properties: simplicity, resilience, maintainability, and evolvability. Simplicity allows an architecture to be understood by a single person at least at a high level. Resiliency prevents a single application or subsystem from compromising the integrity of the entire ecosystem. Maintainability enables changes to the platform to be made without damaging the applications that rely upon it. Evolvability is the ability of a platform to do things in the future which were not envisioned when it was first designed.
Complexity kills platforms
The enemy of good architectural design is complexity. Complexity leads to “incomprehensibility and gridlock” for platform owners and participants. Costs increase for platform owners as they seek to manage their way out of an incomprehensible architecture while application developers struggle to deliver value on a fragile and unstable foundation.
Applications have internal microarchitectures which distribute logic and effort between four layers of functionality: presentation logic, application logic, data access logic, and data storage. Each platform ecosystem provides a different configuration of these elements.
Architecture, however, lurks in the blind spot of most strategy thinking, largely because it is perceived as the outcome of a technical decision-making process.
Partitioning is the first approach to separate the ecosystem into relatively independent pieces. A large ecosystem becomes unmanageable when it becomes too large for a person to cognitively encompass. Breaking down the platform and applications into more easily digestible subsystems supports effective growth and development. Separating the concerns of the platform from its applications enables the owner and developers to innovate along separate trajectories and ideally creates a “survival of the fittest” environment.
System integration is the method by which the development activities of platform owners and developers is orchestrated. Application developers are confronted with two costs when developing their products and services: application and integration costs. It is in the best interests of both platform owner and platform developers to have low integration costs. An effective integration approach allows application developers to focus on application level innovation rather than the tedious work of integrating into a complex behemoth.
Modularization…refers to the extent to which the interdependence among…subsystems is intentionally reduced by design.
A counterpoint to modular design is monolithic design. A monolithic design must be produced as a whole by a single organization. A modular design by contrast distributes the production of its parts to several types of parties. With a well designed platform architecture, the participants need only understand the interfaces the platform presents. Many diverse organizations can therefore participate and add value, thus reducing for the platform owner.
Decoupling and standardization of interfaces are the two mechanisms upon which modularization is established. Decoupling refers to the extent to which components within the platform are dependent on each other. Strong coupling within the platform and individual applications with loose coupling between the two decreases fragility and risk of one component rendering the entire platform inoperative. Standard platform interfaces expose the right level of information to applications to provide them the power of the platform without necessitating a full understanding of its inner workings.