This repository is no longer actively maintained.
Thank you to everyone who contributed to this project.
Making Platform as a Service offerings comparable - Ecosystem profiles for portability matching.
A no-standards approach for application portability.
Currently over 100 PaaS vendor profiles. Profiles are encoded as JSON files.
The web interface can be viewed at PaaSfinder.org
Any errors? Important missing properties? Suggestions? Contribute.
I encourage everyone to submit corrections or additions in order to keep the profiles accurate and up-to-date. In any case, please add evidence for the information so I can verify your changes.
I am also interested in direct cooperation with vendors in order to keep the profiles at first hand and spot-on. Contact me, if you are interested to supply a vendor verified profile.
Contribute either via pull request, create an issue or send me an email. We love contributions from everyone! See our contribution guidelines for details.
- General Properties
- Pricing
- Quality of Service
- Hosting
- Scaling
- Runtimes
- Middleware
- Frameworks
- Services
- Infrastructures
The code below shows a sample profile.
{
"name": "SomePaas",
"revision": "2014-04-24",
"vendor_verified": "2013-07-02",
"url": "http://someurl.com",
"status": "production",
"status_since": "2012-07-15",
"type": "Generic",
"platform": "Cloud Foundry",
"hosting": {
"public": true, "virtual_private": true, "private": false
},
"pricings": [
{ "model": "fixed", "period": "monthly" }
],
"qos": {
"uptime": 99.8,
"compliance": [
"SSAE 16 Type II", "ISAE 3402 Type II"
]
},
"scaling": {
"vertical": true, "horizontal": true, "auto": false
},
"runtimes": [
{ "language": "java", "versions": [ "1.7", "1.6" ] }
],
"middlewares": [
{ "name": "tomcat", "runtime": "java", "versions": [ "6.0.35" ] }
],
"frameworks": [
{ "name": "rails", "runtime": "ruby", "versions": [ "4.0.0" ] },
{ "name": "django", "runtime": "python", "versions": [ "1.5.1" ] }
],
"services": {
"native": [
{ "name": "mongodb", "description": "", "type": "datastore", "versions": [ "1.8" ] }
],
"addon": [
{ "name": "mongolab", "url": "https://mongolab.com/", "description": "", "type": "datastore" }
]
},
"extensible": false,
"infrastructures": [
{
"continent": "NA",
"country": "US",
"region": "Virginia",
"provider": "AWS"
}
]
}
The official name of the PaaS offering.
ISO 8601 Date
or DateTime
of the profile's last update.
This may be set to the ISO 8601 Date
when the profile was officially created or audited by the vendor.
The URL leading to the PaaS' webpage.
The current status of the offering. This may be one of the following lifecycle stages:
alpha
= Work in progress or early test version
beta
= In private or public beta testing
production
= Live and generally available
eol
= Discontinued or integrated into another offering (End of life)
ISO 8601 Date
of the last status transition.
Positioning of the PaaS in between IaaS and SaaS. Currently allowed categories:
SaaS-centric, Generic, IaaS-centric
Please see this paper for more information about the suggested service types.
If you are a provider using a core platform like Cloud Foundry or OpenShift, please specify this within the platform
attribute via the platform's name from the linked profile.
Customers are then able to find your offering when looking for providers of the core platform.
An array of all available billing options.
The pricing model of the PaaS. Currently allowed values:
free, fixed, metered, hybrid
The billing period. Currently allowed values:
daily, monthly, annually
Can be omitted if the pricing model is free
.
The guaranteed monthly uptime by the provider.
Currently a simple string array of compliance standards that are fulfilled by the PaaS.
An object that describes the different provided hosting styles of the PaaS.
Values can be public
for a shared (multi-tenant) publicly hosted service, virtual_private
for a virtual private cloud deployment (single-tenant), and private
for a service that can be deployed on premises.
An object including three boolean properties for characterizing the scaling capabilities:
vertical
= Can you scale the instance sizes, e.g. memory?
horizontal
= Can you scale the number of instances?
auto
= Is the PaaS capable of scaling any of the above properties automatically?
The runtimes an application can be written in. Defined as an array of objects.
"runtimes": [
{ "language": "java", "versions": [ "1.7", "1.6" ] },
{ "language": "ruby", "versions": [ "1.9.3", "2.0.0" ] }
]
This section must only include languages that are officially supported by the vendors. Languages added via community buildpacks must not be added. Extensibility is modeled by the property extensible. In order to allow exact matching, the language keys are restricted. Currently allowed keys are:
apex, clojure, cobol, dotnet, erlang, go, groovy, haskell, java, lua, node, perl, php, python, ruby, scala
Note: Due to common parlance the Node framework is listed as language being the de facto standard for server-side scripting with JavaScript.
A string array containing the supported runtime versions. Wildcards *
may be used for branches or even marking all major versions as supported (e.g. *.*
).
An array of preinstalled or fully supported middleware stacks.
"middlewares": [
{ "name": "tomcat", "runtime": "java", "versions": [ "6", "7" ] },
{ "name": "nginx", "versions": [ "1.6" ] }
]
Should be the official name in lowercase. Currently not restricted.
(Optional) The associated runtime of the middleware product.
A string array containing the supported middleware versions.
An array of officially and fully supported frameworks.
"frameworks": [
{ "name": "rails", "runtime": "ruby", "versions": [ "4.0.0" ] },
{ "name": "django", "runtime": "python", "versions": [ "1.5.1" ] }
]
Should be the official name in lowercase. Currently not restricted.
The associated runtime of the framework. Must be defined under runtimes.
A string array containing the supported framework versions.
"services": {
"native": [
{ "name": "mongodb", "type": "datastore", "description": "", "versions": [ "1.8" ] }
],
"addon": [
{ "name": "mongolab", "url": "https://mongolab.com/", "description": "", "type": "datastore" }
]
}
Native services or core services are provided and hosted by the PaaS vendor as integral part of the offering. Most often this will be performance critical core services like data stores.
Add-on services are provided by external vendors and may or may not be hosted in the same infrastructure as the PaaS. However, we only categorize services as add-ons if they can be provisioned directly from the PaaS and will be billed as additional part of the platform fee.
A category the service does fit in. Currently allowed keys are: tbd Maybe make it an array of types.
datastore, search, worker, analytics, payment, media, messaging, other, devops
This boolean describes if the PaaS can be extended by the customer to use additional runtime languages other than described by the profile and officially supported by the provider. Typical technological concepts to realize this are Heroku's buildpacks and OpenShift cartridges.
The infrastructures an application can be deployed to. Defined as an array of objects.
"infrastructures": [
{
"continent": "EU",
"country": "IE",
"region": "Dublin",
"provider": "AWS"
}
]
The continent must be encoded with the following continent codes:
AF = Africa, AS = Asia, EU = Europe, NA = North America, OC = Oceania, SA = South America
The country codes must conform to the two-letter codes defined in ISO 3166-1.
The property region can be used to further specify the location of the datacenter. This field is free-form and may specify a region or even better the city the datacenter is located in.
This optional field may specify the name of the external IaaS provider used by the PaaS vendor, e.g. Amazon Web Services.