De-mystifying Platform Product and Engineering
What is a Platform? What are Platform Goals? What is the core value provided by a platform?
Platform is a structure that allows multiple products to be built within the same technical framework. It is a system that enables both producers (providers who provide features, value, content and capabilities) and consumers (users or interfaces who consume or utilize value, content and capabilities) to interact and exchange value. Platform allows flexibility for multiple products that enable value exchange, to, extend, adopt, and scale to new geographies & new segments & new interfaces with minimum investment. Platforms are a set of systems that deliver benefits through interfaces — both Graphical/Voice user interfaces and APIs.” e.g., Matching Platform, Onboarding, Reporting platforms where a set of APIs & UX enable users to interact with each other for specific value exchange.
The goal of the platform is to maximize value for all producers and consumers agnostic of products, applications and business models.
Platforms create little value themselves without producers and consumers. Platform’s value is determined by how seamlessly and quickly producers can integrate with it and how easily consumers can integrate & retrieve value and how the Platform ensures security, privacy, availability, reliability, performance and compliance to both producers and consumers. The business value of the Platform is created by producers and consumers via the facilitation of their interactions.
Platforms represent a fundamental change in the design of businesses with a shift into ecosystems thinking from a single system thinking by increasing connectedness, decentralized production of features, content and capabilities, and sophisticated orchestration driven by rules, policies and artificial intelligence.
What is a Product?
A product solves one high-level, specific problem for a specific customer. E.g., Product can be usable piece of software, application or service or collection of features and capabilities.
When to choose Platform Approach?
A business can start with a single Product approach and evolve into Platform when it evolves its value creation and ventures into generating multiple revenue streams via multiple product offerings. Starting with a single product ensures that the business can capture customers with a single value proposition and can then expand into multiple providers creating a shared value proposition.
Platform Engineering approach ensures that multiple products can be launched quickly to consumers by reducing duplication and redundancy by re-using building blocks and orchestrating logic flows across shared & common modules. An example is Amazon.com, where retail products, digital products, subscriptions are all available on the same marketplace where the consumer uses the same user id/password authenticates into one marketplace and accesses multiple products from different vendors. Authentication, authorization, audit, monitoring, security/compliance checks are the common code modules and common user interfaces that are are shared across different products, are the primary medium of value exchange.
Choose a Platform approach when there are multiple products that are providing a shared value to the consumer either via a shared interaction interface or via a set of shared common components.
What are the typical principles of a Platform?
- Ecosystem Value is the Business Value. Platform serves ecosystem value.
- Everything in Platform is modular, exchangeable, interoperable, replaceable, composable and extendable.
- Design enables innovation and extensibility. It enables Aggregators and Platforms to be built on top of the foundational Platform to generate newer experiences and features.
- De-centralized controls enable customization, personalization and contextualization.
- Cost matters (cost of storage, cost of compute, cost to serve, cost to maintain, cost to integrate, cost to onboard)
- Promise security, privacy, reliability, availability (SLAs), audit-ability, throughput, observability (SLIs) and accessibility
- Time and ease matter (time to integration, time to see value, effort to integration, effort to realize value)
What are components of a Platform?
Producers & Consumers
- Producers provide similar, augmented or different capabilities that can be seamlessly stitched together in a consolidated interface to the consumer.
- Consumers can opt for a subset or all the capabilities and can upgrade and downgrade seamlessly without any re-integration.
Architecture
- Platform architecture enables multiple producers with different underlying architectures, data models and data stores, to plug in using standard interfaces.
- Platform architecture enables multiple consumers, different omni channel experiences both web and mobile via APIs, SDKs, Graphical/Voice User Interfaces to plug into the architecture using standard interfaces that are abstracted out of complexities of producers. Standard interfaces of Consumers are generic agnostic of the data model and schemas of Producers.
- Architecture encapsulates commonly used logic like authentication/authorization, encryption, which is abstracted out from producers and consumers.
- Allows for modular and clear separation and isolation of concerns between provider’s presentation, provider’s data models, data sources and orchestration/smart-routing logic.
- Allows for scalability, personalization, reliability, fault-tolerance, and localized experiences by supporting distribution of data and code.
- Supports experimentation auditing and observability for producers and consumers.
- Supports parallel/de-bottleneck development, deployment and troubleshooting by multiple producers.
Orchestration/Interaction Abstraction
- Abstraction ensures that producers and consumers are unaware of each other’s interface and each of them can change and be added and removed with minimal to no impact to each other. Multiple producers can plug in their business logic that is invoked both synchronously or asynchronously via pub/sub message queues.
- Orchestration handles match-making of the consumer’s intent with producers by smart-routing while provisioning a system of record for the interaction and avoiding data duplication and keeping data secure and auditable. Consumers upgrade and downgrade their intent to access capabilities and features, via permissions, without any changes to their or producer’s integration.
- A Single source of truth for audit and allows for retries and replays and detection of failures.
Community Management
Consumer (Customers)
- Help manuals, integration manuals, developer documentation & best practice guidelines available to consumers with product feature and capability lists, release notes and SLAs.
- Test environments for consumers to test their interactions.
- Public GitHub repositories of sample integration code for APIs, SDKs, White-label experiences that is maintained via stringent governance mechanisms.
- Notifications and communication channels to update consumers on outages and to collect feedback.
Producer (Providers of capabilities)
- Integration playbooks, coding guidelines and reference implementations for provider’s to develop, test, deploy, audit, monitor and troubleshoot their integrations into the Platform.
- Clear documentation on the SLAs for the providers for their integrations into platform for pre-defined retries, replays, response times, traffic, and monitoring/alerting.
- Test environments for functional, stress, load, performance, saturate testing for producers with end-to-end testing frameworks and automation.
How do you measure Platform’s success?
Platform’s success is the value generated by the consumer and provider interactions that can be monetizeable into direct revenue streams. It is essential for the platform to also deprecate/terminate providers that don’t provide value and terminate access to consumers that don’t contribute to the direct/in-direct revenue streams.
What are typical KPIs of a Platform?
- Integration: Providers can setup, code, test and integrate with ease within X duration by following integration playbooks with minimal number of steps and support. Consumers can discover and access value from platform within N duration.
- SLAs & SLOs: Availability, reliability, security, privacy, audit-ability, data integrity, data protection, data redundancy, data accuracy, recall, precision, accessibility promises to providers and consumers.
- Operational Efficiency: Consumer’s time & effort for doing x activity using a platform capability, functional stability without errors, consumer adoption of capabilities, producer, platform and consumer cost to integrate & cost to serve.
How is Platform engineering different from product engineering?
Platform engineering is more complicated than regular application engineering as it needs to handle a myriad of interactions between producers and consumers seamlessly while maintaining the promised SLAs to both parties.
Specific areas platform engineering needs to focus on that are not prevalent with product engineering are:
- Producer and consumer community management with help guides, reference code implementations, integration manuals, design & coding guidelines, test environment management, sample tests, feedback loops, release communications, downtime notifications, audit/observability troubleshooting guides to aid with producer and consumer integration, setup and onboarding.
- Producer and consumer standard interfaces and data transformers to allow for interoperability with different tech stacks.
- Producer and consumer orchestration, isolation, traceability and audit of interactions while maintaining SLAs for both parties.
- De-bottlenecked continuous deployment and testing pipelines for multiple producers and consumers to integrate concurrently into the platform with minimal downtime. Ensure backward and forward compatibility with Platform, Producer and Consumer upgrades and downgrades.
- Concurrency, atomicity, isolation, security, privacy, replication, and scaling and backward and forward compatibility based on specific usage patterns of consumers and producers.
- Down-time isolation, failover, and usage of design patterns that ensure concurrency, availability, reliability, performance and security. Examples like: Command and query responsibility segregation pattern (CRQS), Asynchronous Request-Reply pattern, Bulkhead pattern, cache strategy, Throttling & Retries & Circuit Breaker, Sharding/Partioning and geo-distribution of data
- Measure and track cost to serve (cost to compute, cost to store etc.) for specific consumer and producers and provide capabilities to terminate and deprecate producers and consumers.