In the late 1990/early 2000, before the bubble burst, platforms were a big thing – for many startups, platforms or infrastructure software was at the core of their business models. A couple of years later, when things got sour, it was not about platforms, but about “specific solutions” – you didn't speak much about your platforms, even though they were still behind the scenes making things happen. Today the platform is returning, but as a combination of vertical solutions and their related services on the web – this is software solutions as services.
Two things define the essence of Web 2.0: 1) social network software, and 2) services on the web. And the common denominator between these two is collaboration.
At the center of social networks software are human relationships and interactions that are facilitated through web portals, providing easy access and sharing to/with others – the ability collaborate with others. “Social networks” is the power behind the successes of virtual communities such as MySpace, Facebook and others. “Social networks” is also at the center of how services on the web are being produced and consumed, as seen by the current number of Mashups, and the new ones that come into existence almost on a daily basis.
Services on the web is the foundation, the engine, the platform that fuels today's (and the future) web – this is software developed as services. And these services are the new platform…
If you develop an application today, even a mobility application, very likely it will have some components or functionality on the web. Design your application with services in mind, services that are exposed and consumed by your own products, and consumed by others who aggregate your services with other services to build their core products, and in turn expose their services for others to use. This philosophy is the result of the social networking that is part of software development on the new web – it is about collaboration, as this is best represented by Mashups:
Mashup: API X + API Y = mashup Z
Expose your services on the web using some well-understood mechanisms such as REST, SOAP, XML-RPC, RSS, or simply using your own HTTP-based protocol. Try to favor REST, SOAP or feeds. Always keep it simple, but well designed, abstracted, decoupled, published, and documented.
The return of the platform is pretty cool indeed. You can put together a serious scalable application – let's say for a demo of your prototype, by using some core components that are available right now on the web, some for free and some for a fee. Example of core services that you can use now include simple queuing, simple storage, maps, searching, content sharing, and other APIs, from companies that include Amazon, Google and Yahoo!, and from the large number of Mashups – see The Programmable Web.
As a side note, think SLAs, and the importance of understanding the repercussions of the dependencies on external platforms, and of others relying on your platform or services.
ceo
[Image: www.openplatform.co.uk]