What is Platform 3.0?
It is the new development methodology, technologies and best practices that have evolved since the revolution caused by the growth of mobile, cloud, social, bigdata, open source and APIs. This article explains what Platform 3.0 is, what it is composed of, why those things are part of the platform.
I’m not the only one talking about a new platform. You can find others promoting the idea we are migrating to a new software world. I have some references to them at the end of the article.
The source of Platform 3.0
I have written about the virtuous circle as basis for Platform 3.0, providing the motivation for why you should adopt a large part of the circle to succeed. It is not any particular technology of the “day” that will gain your success, i.e. Cassandra.
The circle introduces a disruptive improvement in real business opportunity:
1. More and better interaction with customers and partners leading to higher customer satisfaction and transactions
2. faster time to market
3. More insight into your customers
4. lower capital costs
5. lower transaction or variable cost
History of Enterprise Platforms
Let’s start with a small intro to the past Enterprise Software platforms 1.0 and 2.0.
The yin-yang that has been seen over and over again in the tech industry is between centralized vs distributed computing. In the early days of computing and up to the mainframe era there was a lot of support for centralization of data and processing due to the cost and power of the mainframe. IBM dominated this era and still has many customers for its mainframe centralized technology platform. While those of us raised in the distributed era may pay short shrift to this platform the fact that most large companies today still have large parts of platform 1.0 running in their infrastructure performing critical business functions testifies to the enormous lasting value created. This was the era that hardware dominated computing.
During the late 80s and through 2010 we saw the growth of the distributed platform. The distributed platform was started by the development and promulgation of low cost computers, the invention of TCP/IP and the internet. The widespread adoption of networking technology, rapid improvement in performance of the lower and lower cost servers allowed the industry to move to a distributed architecture that enabled moving compute and data across many computers. This became the dominant new paradigm and architecture and allowed scalability to the millions of users. The tools that distributed architectures required were middleware technologies like messaging from TIBCO, JAVA J2EE, JMS, Application Servers, Web servers and numerous other technologies. The open source movement grew during this era but a lot of questions about licensing, the legality of open source, how to support open source limited the wide scale success of this movement during this era. This era really saw the growth of the enterprise software companies. When I started TIBCO the astonishing thing to realize is that VCs refused to fund us because there were no successful examples of software only companies.
Several simultaneous things happened that define Platform 3.0:
1. In the mid-2000s Apple came up with the smart phone and the app store. I have an interesting article on the success of the App Store paradigm and the implications for computing, IT and CIOs.
2. Simultaneously, Google, Yahoo, Facebook, Netflix, and other Internet companies started new open source projects to enable them to scale to billions of customers. I have an article how they created a new paradigm of how they collaborated using open source. Here
3. At the same time Amazon realized that it could sell infrastructure as well as books, toys and toiletries. 🙂 They were driven to this because they had chosen a different approach than Ebay in how to extend their value. Amazon embraced the problem of facilitating its partners to rent infrastructure. Internally Amazon was structured differently. Ebay had a problem in early days where they were put out of business for 2 days in a row. They solved that major outage by choosing to centralize their technology and keeping strict control. Amazon had a looser philosophy and saw the opportunity to rent infrastructure sooner. This is a surprising development to come from Amazon but it happened. I think this is fascinating how this happened. Jeff Bezos was obviously a critical factor in Amazon creating the cloud. To have a simple explanation of cloud technology read this article.
4. Facebook and some other social companies succeeded wildly beyond what anybody imagined. The social movement was clearly an important new paradigm that changed the way companies saw they could learn about their customers and markets and interact with them.
The emergence and growth of these simultaneous activities can only be explained by the virtuous circle. Without open source the companies may have had trouble growing to billions of users so easily. The existence of billions of users of these services created massive new demand for APIs, infrastructure and social. These things all played together to create a new set of technologies and paradigms for building applications.
Platform 2.0 doesn’t really help you build applications for this new paradigm. Platform 2.0 doesn’t include rapid deployment technologies, API management capabilities, social capabilities. Platform 2.0 encouraged the development of reusable services but it largely it failed at this. The idea of distributed software by itself didn’t solve the problem of reuse, scaling applications, solving the problem of how to gain adoption of the services it created. A large missing piece of Platform 2.0 was the social aspect required for true re-use to occur.
Platform 3.0 incorporates these above technologies and combines it with Platform 2.0. You can build a Platform 3.0 infrastructure from building blocks in open source yourself or work with vendors to acquire pieces or some combination.
It is my belief that Platform 3.0 heralds in the era of cloud computing, i.e. SaaS, PaaS, IaaS. The hardware and software that many companies acquired during Platform 1.0 and Platform 2.0 is now set to be replaced by incremental services in the cloud. This makes sense because these services then are scalable to the billions and are more cost effective initially and in the long term put the management and expertise for technology into the hands of those most expert in delivering it leaving most companies to be able to concentrate on their core business competencies.
Critical Components of Platform 3.0
This is what I believe what the minimum a platform 3.0 must include and some of your options in getting there.
1. Open Source
This is because it is composed of many open source projects and depends on those projects. One of the primary benefits of Platform 3.0 is agility which open source is a critical component to achieve.
This doesn’t mean you must make your software open source. However, ideally everyone in your organization has access to the source code of the entire company so any group or project can improve and contribute back improvements to any part of your applications, services or platform. Check out “inner source” article to understand how to do this. You don’t need to be an open source company but you should take advantage of open source methodology to maximize the benefit from Platform 3.0. You need to incorporate values of agility, transparency, rapid iterations. Your platform should include tools to help you with the culture of open source development.
2. RESTful APIs throughout and API Management throughout facilitating an API-Centric programming model
RESTful APIs and the idea of social advertised APIs that can be managed, versioned, iterated rapidly, usage tracked, quality of service controlled scaled arbitrarily is a key aspect of Platform 3.0 as described in the virtuous circle.
APIs or services are key to the agility in Platform 3.0 by enabling the rapid composition of applications by reusing APIs. Also, being able to understand how those APIs are used, to improve them easily requires an API management platform. There are numerous API management platforms available in open source:
Your API Management platform should include:
a. a social store for APIs that provides a community with the ability to see transparently all there is to know about services, to see how to use the API, who has used the API and their experiences, tips, etc…
b. tiers of service and management of tenants and users across tiers
c. tracking usage of the services by giving you bigdata stream that you can perform analytics on
d. a way to manage the services, load balancing of usage of the services, proxying services
You may also want to include capability to secure your APIs, provide OAUTH2 low level entitlement controls on the data. You want to be able to as easily manage internal APIs used only within your organization as well as APIs you export to the outside world.
When you have this capability you have the ability to rapidly leverage APIs both inside and outside your organization and build API-Centric applications which gives you more agility as well.
3. Social capabilities (transparency, store, streaming usage, analytics, visualization, real-time actionable business processes) around any asset in the platform: mobile app, web application and APIs and even IoTs.
A key aspect of Platform 3.0 is Social because Social is a key element of the business advantage of the new paradigm. Reaching customers through mobile, IoT devices, web apps or APIs is key and learning from those customers, understanding how to improve your service well as offer them things based on your improved understanding. Platform 3.0 should make it easy to build APIs and Applications of any type that incorporates social aspects.
A key element of this part is the Enterprise Store. This is where you can offer information about your services and products, encourage community and leverage that community. The community could be initially simply within your own organization but ultimately it is expected you would offer APIs, Mobile Apps, Web apps, IoT devices externally as well. You will want to “social” enable these so that you can collect information and analyze it.
Platform 3.0 should automatically enable you to instrument applications, APIs, web Apps etc to produce social usage data and facilitate leveraging that data through visualizations as well as actionable business processes.
If you are building your own social application consider using a social API such as http://opensocial.org/.
Most of the time you aren’t necessarily building your own social app but leveraging the usage of your web applications, APIs, mobile apps or other software or hardware such as IoTs. API Management automatically tracks the social usage of the APIs and the applications which use the APIs. That is a key component.
Most of the successful cloud companies are leveraging MULTIPLE big data technologies. Each of these technologies and the RDB database technologies have a place depending on the type of data and how it is used.
Once you have social big data information you need to be able to process, analyze and create actionable business processes to automate the intelligence you’ve gained. There are several components you need to consider in your Platform to facilitate this. Hive and Pentaho are considered the leading open source bigdata analysis and visualization platforms at this time. Numerous others are available.
Frequently the actionable part requires a real time ability to react to social activity. The current accepted architecture to implement an actionable bigdata streaming and analysis architecure is called: The Lambda Architecture. The tools that can do this are the aforementioned big data components and some real-time stream event processing capability such as: WSO2 CEP and Apache Storm.
These components give you the ability to easily create applications and services that collect bigdata on social usage of your enterprise assets, give you the ablity to do analysis of this data, visualization and to create actionable business processes off of this data.
4. Cloud PaaS – Fast deployment and scaling
A key aspect of Platform 3.0 is the ability to build software cheaply and fast, deploy it instantly and if successful rapidly iterate and grow the users up to virtually an infinite number with costs growing linearly as usage and revenues grow. This requires the cloud, PaaS, DevOps technologies to be in Platform 3.0.
As the virtuous circle started gaining traction and speed one thing was apparent right away. Being able to use cloud resources was a key element of success. The cloud reduced the startup cost and risk of building anything and the scalability meant virtually infinite resources could be deployed to meet demand. These resources would only be used if they were needed and therefore presumably the revenue or assets to support the usage would be there as well. As usage grew the advantage of sharing resources would reduce costs even further.
In order to take advantage of this early adopters of the cloud started building DevOps tools such as Puppet and Chef to make deployment across cloud architectures easier and less labor intensive. They also sped up dramatically the process of deployment. Companies came into existence such as Heroku who provided development environments on demand allowing companies to start work with hardly any startup cost and grow their usage as needed. I believe that the DevOps Puppet and Chef approach is a halfway step as it doesn’t deal with key aspects of reducing costs of development, deployment and operation.
How you incorporate Cloud and PaaS into your Platform 3.0 is complex. There are a lot of things to think about in making this decision as it affects your future dependencies and cost structure. I have an article to help you decompose the kinds of features and things you need in deciding on an enteprise PaaS.
5. Multi-tenancy, Componentisation, Containerization, Reuse, Resource Sharing
A critical element of Platform 3.0 is the idea of reuse embodied in open source and APIs as well as the resource sharing that comes from PaaS. In order to take advantage of this you must support a number of architectural patterns:
A) Software must be written to be multi-tenant
Designing your software to be multi-tenant is simply good architectural practice. It means separating “user” and “enterprise” data from “application” data so that this information can be delivered to the component as the PaaS architecture decides is the most efficient. You should make sure that logs of activities in your application relevant to users or customers is similarly segregated to provide easy ways to provide social data analysis.
B) Software should be designed to be components
Componentisation is simply good architecture advocated for a long time. There are several aspects of making something a component. Limiting the functionality of any service or software piece to a single purpose so that functionality can be reused easily. Trying to limit the usage of other components so that using the component doesn’t require brining in too many other components which then obviates the purpose of componentisation. It is also about reusing other components to do things in a consistent way throughout your architecture. It can include going as far as making your components OSGi compatible bundles. This is not necessary but one problem that can emerge with components is that they have dependencies on other components that can break if those other components change. OSGi makes it clear what dependencies different components have and what versions of those components this component will work with. It allows components to really operate as components safely. You should seriously consider using a container technology like OSGi that facilitates building reusable components. There are other ways to accomplish this but it is a solid way to build a component architecture. OSGi also allows the ability to stop and start individual components and replace them while your software is still operating allowing a zero-downtime application. Componentisation also means being able to spin up multiple instances of each component to meet demand. Being able to scale just the component rather than the whole application is vastly more efficient way to scale usage.
C) Software should be designed to be encapsulated in containers
Ultimately in Platform 3.0 components will be encapsulated in a container to provide isolation and virtualization. These make it easy for a PaaS to automatically scale and reuse components. Most software environments you get today will be supported automatically by many container technologies. When selecting your software environments to do development and the tools you use you need to make sure they can be containerized in the container technology you choose efficiently. There are several open source containerization standards and technologies. Selecting one or more is desirable. An important advanced future consideration is “Templating” which is discussed later and is related to containers and synthesizing applications from multiple containers.
D) Software should be published in a social Store to facilitate transparency, improvements, feedback, tracking of usage
A key aspect of the value and advantage of Platform 3.0 is reuse and increasing innovation. Platform 2.0 largely failed at getting widespread reuse happening. A key aspect of that is transparency and social nature of the assets you build. Developing everything else, using all the right tools but limiting it to a select team that are the only people who know how to use it defeats the whole advantage of Platform 3.0 therefore a key point is how to socialize the assets and tools you are using and building. This could be simply within your own organization or it could include a wider array of external partners, entrepreneurs, developers. It is your choice how open or social you want to be but you should consider how to gain maximum visibility of any pieces you can. An Enterprise Asset (API, App, Application) store is the paradigm that is most being promulgated today.
Today you can get social components like this as part of a mobile platform for mobile applications and API social capabilities from an API management platform. Another innovative approach is to use a combined asset store such as the WSO2 Enterprise Store which lets you advertise any type of asset even code fragments or pieces that are not strictly a component. The Store gives everyone in your organization the ability to see what are the building blocks of your company software infrastructure. This allows each individual the ability to contribute to the improvement of those assets in the way they can.
If your organization adopts these practices then you will be able to rapidly develop, deploy, iterate and scale your applications. You will see greater reuse, faster innovation and you will join the virtuous circle and see the benefits that other organizations are seeing.
6. Standard Messaging SOA components
The SOA world was created for a reason that is still very valid. In the messaging world which is still very much a part of Platform 3.0 we built standard software “applications” or “components” that provided significant value in reducing the complexity and agility building enterprise software. These components can now be thought of as providing basic functionality for the various axis of software applications you build. Please consult my article on the completeness of a platform to understand what are the minimum set of components
a. Enterprise Service Bus for mediation and integration of anything, connectors and adapters to almost everything including IoT protocols
b. Message Broker for storage, reliable delivery, publish/subscribe of messages
c. BAM for collecting data from multiple logs and sources to create key metrics and store streams of data to databases or bigdata
e. Complex Event Processor (CEP) engine for analyzing sequences of events and producing new events
f. Business Process Server to support both human and machine processes
g. Data services to support creating services around data in relational databases and bigdata databases
h. Business Rules to be used anywhere in the platform
i. Governance Registry to support configuration
j. Load Balancing anywhere in the platform
l. User Engagement Services for visualizing data anywhere in the platform
7. Application templating
Platforms 3.0 allows you build components, APIs, Web Applications, Mobile applications, IoT applications. These are the pieces you use to build more of these things. This creates layers of technology.
Applications typically are composed of other applications, APIs and components. For instance, building an Account Creation application might involve using a business process server, enterprise service bus, APIs to data services to acquire information about customers, a Business Rules process to manage special rules for different classes of customers. The result is that the account creation app is really a web app, APIs to be used by several mobile applications that allow users to create accounts.
When deploying these pieces to production a PaaS doesn’t necessarily understand how the various pieces of the application fit together. Various description languages are proposed for describing the structure of applications as combinations of components. These description languages allow PaaS to automate the deployment of mote complex applications composed of multiple pieces and the management in failure modes, scaling the application more efficiently.
I will write a blog about this topic because it involves a lot of very interesting topics and this is a very recent evolution of the PaaS framework.
8. Backend services for IoT, Mobile
A complete Platform 3.0 environment should give developers developing mobile applications and IoTs basic services to help them build quality Mobile Apps and IoTs. The types of services these kinds of applications find useful are:
1) Proxy to enterprise databases and enterprise data
2) a simple storage mechanism for application storage
3) connections to social services such as Facebook, LinkedIn
4) connections to payment services
5) connections to identity stores
6) advertising services
9. Support for development in the cloud
It is clear that over time more and more development will be done directly in the cloud without the need of a local desktop computer.
10. Lifecycle Tools
Platform 3.0 should be built using what is emerging as standard lifecycle management tools for the cloud:
Platform 3.0 in my opinion is a real thing. It is a true revolutionary change from the distributed architectural pattern of the last 30+ years even though it subsumes many of the ideas of Platform 2.0. I think the evidence of this will be apparent as the emphasis on API-centric service based development becomes more and more the dominant way people build and deliver applications and services. Ultimately this model makes computing so easy and transparent that almost anybody can create applications and new services easily by composing existing services and adding some business logic.
It is important to realize that ultimately Platform 3.0 will be cloud based. You will get most or all of your pieces of Platform 3.0 as services in the cloud. In the short term this is not possible. It will take another 5 years or more for the markets to mature for services and the component technologies to be available and enough competitors to make the “all-services” based enterprise possible. So, today your only option is to acquire most of Platform 3.0 from open source and run it on a cloud infrastructure either public or private and stitch the pieces together as your own services.
The real advantage for Platform 3.0 is that it is a radical change in cost to develop, deploy and operate software. It provides mechanisms to promote reuse and adoption and most important constant innovation and agility. Without this any enterprise will rapidly fall behind others in their ability to provide services to their customers and partners.
The good news is that Platform 3.0 is cheap and it can be brought on in incremental steps. You don’t have to swallow the whole thing in one bite. You may not get all the advantages but Platform 3.0 is component oriented so it can be consumed in pieces.