Digital platforms have become an entrenched part of our lives today. We use them on a daily basis for personal (Uber, Airbnb), engineering (AWS, GCP, Azure), entertainment (YouTube, Netflix), and social (Twitter, Facebook, Instagram) purposes. Each of these platforms rely on a well-defined digital design and working model to be (fully) secure, to (freely) scale, and to (out) perform. In this blog post, I’ve expressed my point of view on how a platform can be envisioned for an enterprise.
What is a platform?
A platform is a way of enabling modularized technology or business capabilities in an abstracted way to the engineering community or the business community or both. The vision of a platform should be to deliver value to its customers. For an enterprise scenario, the customers can be internal and external. As explained in Figure 1-1, for an OTT provider, these platforms (not these alone) will be required to provide rich content, good experience, and reliable service to its consumers, which require robust platform architecture and reliability. For now, let us park the discussion of 'platforms are meant for producers and consumers'. I will cover it later in this article.
Platforms in enterprises
Most of the enterprises want to keep the systems of engagement (the customer interaction layer) as close to their IT teams as possible. This is the layer where internal and external customer journeys are crafted and implemented. The product owners and the engineers working on this layer should have maximum feasibility and flexibility with their platform architecture to plug and play components, utilities, functions to craft/re-craft customer journeys.
A Platform is a solution to provide this kind of flexibility and feasibility for the business and engineering community in the enterprise. It acts as an enablement engine to them and lets them focus only on delivering business value. Please refer to Figure 1.2, to understand the state of platforms in enterprises.
When creating a platform for an enterprise, you should consider the following tenets in advance and steer the platform build journey.
- Platform vision: Having a clear vision of the purpose and value of the platform and different interim stages of attaining that vision
- Platform Architecture: Applying the right and relevant design patterns and principles for technology choices and design decisions in the platform
- Platform Enablement: Making the platform adoptable and usable by the engineering and business communities
- Platform Governance: Measuring the performance and the value of the platform for the entire engineering life cycle
- Platform Tooling and Automation Platform: Providing necessary tooling and automation to make the life of platform consumers and platform owners easy
- Platform Reliability and Operations: Improving the platform continuously by monitoring and managing it
Platform maturity levels
Enterprises cannot afford to build platforms that take months or years to make itself available for consumption. Instead, they should identify interim states for reaching the target state and map the list of values that will be delivered as part of each interim state. Each interim state can be considered as a maturity level.
For example, defining a DSL for an API/sandbox access may be one of the values that can be delivered as the target state, but a single-click boilerplate for getting started with API development will provide an immediate value. Providing proactive and self-healing capabilities for monitoring is a target state but providing observability dashboards is an immediate value. As an enterprise and platform owner, you should pave the way for planning and prioritizing the team to reach the right maturity level at the right time. From our experience, it takes at least six sprints to reach first level of maturity in building a platform.
Why do we need platforms?
Are platforms a must have for enterprises and should all projects use it? It depends. Platforms are not required for a small project. Let us consider a requirement of receiving a CSV, parsing it, transforming it, loading it to a database, and then, deleting the file. We definitely don’t need a platform for this. When the same requirement is done by 100 teams 1,000 times every day with varied constructs, different structures, complex business rules, sub-second performance requirements, a platform is very useful as it may offload 60% to 70% of repetitive work across different teams. I took a technical requirement as an example for simplicity. You can imagine the same scenario for creating a unified customer experience and providing reusable business capabilities like content management, correspondence management, etc.
Platforms for producers and consumers
Now let us talk about the platform supporting both producers and consumers. This is very much applicable at an enterprise level as well. But there’s a need to create a sustainable base before expanding the ecosystem.
If you are creating data engineering platform as a use case, at first you need to ensure you give a development environment to the engineering team, reusable functions and connectors for connectivity to internal and external systems, authentication, and authorization for all components, sufficient auditing, and log information for sensitive data access, automation tools for extract, transform and load etc. These should be the immediate values/deliverables you need to target.
Once these values are delivered and adopted, then you can allow different teams to publish different data sets for consumption by other teams by creating a data marketplace where you set the stage for producer and consumer ecosystem. (Is it that simple? You may know the answer).
Enterprises may have the following questions with regards to platforms:
- I have a COTS product. Can this be created as a platform?
- What is the difference between a business platform and a technology platform?
- What is the correct team size to start a platform journey?
- How this relates or differentiates from PaaS/SaaS providers?
- What are the governance principles to be applied?
- When there are more platforms in an enterprise, how do they prioritize their activities?
- When there are more platforms at different maturity levels, how do they manage their dependencies?
- What are the consumption models of a platform?
- What are the different operating models for a platform?
In case you have such questions, feel free to reach out to us for more details and for understanding how we implement platforms for global organizations.