In this article we provide a summary of software application platforms and discuss the differences between IaaS, PaaS, low-code and no-code app platforms.
A theme which recurs in many discussions is understanding how software platforms are different, and what each of them is best for. It can be confusing to a business user, or an equity investor, to decipher between these categories, hence why they often contact us. In this post, we are giving a basic overview on the main types of software application platforms as of 2019.
High vs. low level platforms
App platforms are often built vertically, on top of each other. You can think of the rawest platform, infrastructure as a service (IaaS), as atoms, and higher level platforms, as molecules made of atoms. In other words, low level platforms have the least amount of abstraction and focus on resources. Above these, higher level platforms add more abstraction building on top of these resources.
Low level platforms tend to give:
- More flexibility to developers by letting them configure each resource exactly the way they want them to be. This involves a higher amount of work to code and maintain.
- A resource-centric view of technology: compute power, network bandwidth, data storage, etc.
In contrast, high level platforms tend to offer:
- Quicker time to app development and deploy. By automating and aggregating some of the infrastructure components, high level app platforms provide pre-configured stacks.
- An application-centric view of technology: your dashboard will display more functions and application building blocks, or the app list, first. Resources come second.
Infrastructure as a Service (IaaS)
IaaS provides the lowest level platform to build software. It is the most flexible as a result, and often delivers the lowest price per resource unit. The total cost needs to factor in the time to develop and maintain the infrastructure (developer operations, abbreviated DevOps).
For some organizations, IaaS is ideal as it allows building software from scratch with the maximum amount of power, the lowest compute costs, and to take advantage of every new feature and customization available.
Platform as a Service (PaaS)
One level above IaaS, PaaS provides an application-centric view of technology by pre-configuring software stacks, for example operating system and programming language software packages. The packaging allows developers to largely save the DevOps burden, and focus on their application code.
Low code application platform (declarative)
Another step above PaaS, low-code application platforms are sometimes called rapid application development (RAD) tools. They target a different population of app builders. While IaaS and PaaS cater to programmers, low-code platforms aim to create “citizen developers”, or “business developers” who have skills in workflow and some programming knowledge, but are looking for a workflow tool.
Low-code app development focuses on workflows, which makes it a great fit for business applications which contain steps, and do not necessitate heavy custom coding. It is still possible to add code and scripts to this layer, as most declarative platforms in the low-code space favor extensibility.
No code application platform (point and click)
The highest level of abstraction in application development comes from no-code platforms. Through point and clicks, and dragging of pre-built visual elements, a citizen developer can create an application without writing a single line of code.
This segment expands the addressable market for app creators considerably. Now, anyone with an idea can create a software application. Projects which do not need significant customization can be up and running in a matter of days, with apps which can run on desktop and mobile devices responsively. All the automation is built in.
The selection of an application platform has to take into account the team of developers which will be using it. Not every platform supports every programming language to the same extent. Likewise, certain programming languages tend to yield applications with different profiles. For example, PHP applications are often stateful because many were built before multi-tenant clouds: application variables are stored on the file system. Newer applications and progressive languages often prefer a stateless approach, which separates application variables and related files from the container in which they run. This is ideal for modern cloud platforms.
Another factor to consider in choosing a platform, is whether it requires developers to learn a proprietary language, or if standard languages are sufficient. There may be benefits in learning a new platform-specific, proprietary language, but there are also training costs to consider.
Platform ecosystem and synergies
Every software platform attempts to provide more value to its users by adding points of extensibility. These points can exist in several forms:
- Application programming interfaces (API): APIs in platforms allow to program certain actions to and from your application, interacting with third party components. For example, an application can use marketing automation tools which run on a completely different stack, as long as the APIs to enable this exist.
- Platform companies may have their own suite of business applications, with synergies for end users. For example, a developer could benefit when building a sales application, if it does it on a platform with related business apps for users to do more on the same technology stack later on. It can also help partners co-sell complementary software.
With this overview of software platforms, business decision makers and developers can study different tools and pick the one best suited to their goals.