You may have recently noticed GAIA-X, an European initiative to gain sovereignty on European data. As stated by Yann, Multicloud must be the alternative.

At Scaleway, we are part of a GAIA-X working group building a catalog of European providers. This catalog aims to offer a clear choice of the CSP (Cloud Service Provider) alternatives based on criterias. The nature of these criterias is multiple: which product a provider has, which certification (eg: ISO 27001, HDS, ...) this CSP have, where the data are stored, ...

This working group involves 7 Cloud Providers: Docaposte, German Edge Cloud, Outscale, Orange Business Services, OVHcloud, T-System and Scaleway.

Let see how we've built this first demonstration of a cross-European workforce.

As OVH recently showed in their Blog post, we are using a Graph database (Neo4j) for all the relations we have between criterias and CSP. This allows us to have a grammar with verbs , very useful to filter based on our needs. For example, with this grammar, we can write requests like Provider COMPLIES_WITH 'ISO27001' AND Provider COMPLIES_WITH 'HDS' AND Provider LOCATED_IN 'France'

Once the server-generated grammar is fetched, we use it through PEG, a Javascript parser generator. PEG allows us to:

  • build a request automatically based on the criterias in the dropdowns
  • or for advanced users, we are able to add an autocomplete feature to build very complex queries

You can filter Cloud Providers easily, or with an advanced view.

The front-end was built with React. We are able to load the grammar very easily:

parser = peg.generate(data)

Once this grammar is loaded into our application, we can start to parse our request, and even get some hints if the parsed string is badly formatted:

const { parse } = useParser()
parser.parse({ string: '', onlyError: true })
{
  "message": "Expected \"Compute\", \"NOT\", \"Provider\", \"Service\", \"Storage\", or parenthesis '(' but end of input found.",
  "expected": [
    {
      "type": "literal",
      "text": "NOT",
      "ignoreCase": false
    },
    ...
    {
      "type": "literal",
      "text": "Provider",
      "ignoreCase": false
    },
    {
      "type": "literal",
      "text": "Storage",
      "ignoreCase": false
    },
    {
      "type": "literal",
      "text": "Service",
      "ignoreCase": false
    },
    ...
  ],
  ...
}

Based on what is expected, we can construct the autocomplete propositions.

When you have a valid request, we are able to make a request to our API to get the right services you need.

Cloud Providers are able to contribute relationships about their service in a .cyp file:

CREATE (scaleway:Provider {name:'Scaleway', created_in: 1999, logo: 'scaleway-512.png', website: 'https://www.scaleway.com/'})

CREATE (scaleway)-[:LOCATED_IN {}]->(FRA)
CREATE (scaleway)-[:COMPLIES_WITH]->(GDPR),
       (scaleway)-[:COMPLIES_WITH]->(ISO27001),
       (scaleway)-[:COMPLIES_WITH]->(HDS)

More criterias, products and providers will be added to this graph database. This is a flexible solution with an easy contribution.

This demonstrator application was built with this working group of 7 Cloud Providers. It will soon be released under the BSD-3 license, so anyone will be able to contribute to this search engine.

At Scaleway, we are very proud of being part of the GAIA-X initiative and to start this exciting endeavour. Long live the multicloud!