Framework vs. Platform
When we talk to customers, journalists and other people in the commerce industry, we sometimes get the feeling that there seems to be confusion regarding the terminology we use. Talking about a standard shop system is pretty straightforward, but what exactly is a framework and a platform and where are the differences? Like in so many similar cases, there are no clear-cut, universally accepted definitions that would withstand academic scrutiny. But for the sake of clarity, let’s try an explanation:
A framework could be compared to a skeleton which needs to get some „flesh“ attached to it. This programmatic flesh is usually provided by a specific application that links to and uses parts of the skeleton. So the actual work, ie. filling the holes and connecting the dots, is done by the application.
In programming, frameworks allow programmers to concentrate on the actual tasks they are faced with rather than to waste their time reinventing the wheel. Usually, frameworks are shipped with a set of predefined functions and classes. When using Spring (Java) or Symfony (PHP) for example, programmers do not need to think about things such as persistence, routing and session management too much because the work is done by standardized framework components.
The way to work with such a framework is usually to download the complete source-code, install it in a specific environment – eg. a LAMP stack in the case of PHP frameworks – and start writing the individual code. When the application is ready for production, it needs to be deployed to a hosting environment.
Examples for frameworks in the commerce industry are SAP hybris (Java) and Spryker (PHP).
A platform, on the other hand, provides both the hardware and the software tools needed to run an application – be it a standalone program or one which has been built on top of a framework. Mostly, it comes in the flavor of Platform-as-a-Service (PaaS), meaning that the code-base of the platform software itself is not distributed or licensed. Rather, it is part of a hosted solution running in a cloud which can be accessed via APIs or GUIs.
Typically, platforms are built as scalable multi-tenancy systems, providing access to many users at the same time, thus using economies of scale to be able to offer services with an affordable price tag. Developers can then use platforms such as force.com or Google App Engine to build and run their own applications. In many cases, these applications are more light-weight than standalone programs because most of the business logic is contained in the platform.
Working with a platform typically results in a two-part structure: on the one side, there is the specific application which contains all the project-specific code and which is hosted on its own. On the other side, there is the platform running in the cloud, which receives data from, calculates and returns data to the application according to the platform algorithms. Developers might either decide to shape the communication between both sides by using either direct API calls or an SDK (see below) to do all the heavy lifting.
Examples for platforms in the e-commerce space are Mozu and commercetools.
In order to make working with a platform more effective, platform providers typically offer one or more Software Development Kits (SDKs) for developers, written in various programming languages. In our context, these SDKs usually consist of a set of classes, utilities for debugging and sample code to make building a platform application easier.
As with frameworks (see above), developers download these SDKs to their system and start working locally. In contrast to frameworks, however, an SDK has no use on its own but is only helpful when writing applications for one particular software or platform. In other words, an SDK is only a tool to write an application, whereas a framework becomes part of an application.
Hopefully, this little excursion has helped you to get a bit more clarity about the terms which so often pop up in commerce blogs and discussions. Feel free to drop us a line if you’d like to comment on or add something to this post.
Also on this blog: more input regarding the differences between SaaS, PaaS and IaaS.
(Image by Nick Merritt, CC BY 2.0)