Meadowlark Provider Parity Analysis

As mentioned in the Meadowlark Architecture, Meadowlark was developed on Amazon Web Services (AWS),  but the principle was to only use AWS managed services that have an analogous option for other major providers. This would make it (relatively) easy to migrate from one platform to the other. On-premise options were also explored.

The Alliance, following community feedback, has strongly factored open source availability of technology components into its technology roadmap choices (e.g., the work to port the Ed-Fi ODS platform storage to PostgreSQL). This choice has played an important role in expanding availability of the platform and lowering costs. This principle is likely to play an important role if the Meadowlark project is expanded (e.g., move to MongoDB from provider-specific options).

This document reviews the services used and identifies the equivalent tools (or gaps) in Azure, Google Cloud, and on-premise.

PurposeAWS ServiceAzureGoogleOn-PremisesAdditional Notes
Load balancing and reverse proxy​API Gateway

Azure Application Gateway


Cloud Endpoints

NGiNX, among others


Serverless ApplicationAWS Lambda

Azure Functions

Google Cloud Functions

OpenFaas or Fn

The Meadowloark application is written in Typescript using the Serverless package, making it theoretically easy to reuse these components with any platform's serverless functions.

Could consider refactoring to OpenFaas or Fn for one system that is cloud-agnostic (runs in Kubernetes and Docker, respectively).

Key-value data  store and Change Data Capture

DynamoDB

with

DynamoDB Change Data Capture

CosmosDB in Cassandra API mode

with

CosmosDB Change Feed with Azure Functions

Firestore

(error) see note below about change streams

Apache Cassandra

with

Cassandra Triggers

The differences may be great enough that some tweaking of the storage model may be required.

Switching to MongoDB may be a useful alternative, as it is available on all platforms:

Another option would be to switch to Cassandra for a single database platform available on all providers

Search engineAmazon OpenSearch

Elastic on Azure

Elastic on Google Cloud Platform

Either ElasticSearch or OpenSearch can run on-premises


Google Firestore might not have a direct equivalent of Change Data Capture... at least, the searching for this does not turn up functionality that is clearly the same as with the other products. However, perhaps one of these techniques is capable of writing out to a stream: Extend... with Cloud Functions or onSnapshot.

As mentioned in the Meadowlark Architecture, the Ed-Fi Alliance chose  to develop Meadowlark on Amazon Web Services (AWS) because the development team needed to concentrate on one system while developing this proof-of-concept application. 

In developing this proof-of-concept application, the team stuck with a key principle: try to use only AWS managed services that have an analogous option for other major providers, which would make it (relatively) easy to migrate from one platform to the other. This document reviews the services used and identifies the equivalent tools (or gaps) in Azure and in Google Cloud, with a bonus add-on of documenting equivalent services available on-premises.

PurposeAWS ServiceAzureGoogleOn-PremisesAdditional Notes
Load balancing and reverse proxy​API Gateway

Azure Application Gateway


Cloud Endpoints

NGiNX, among others


Serverless ApplicationAWS Lambda

Azure Functions

Google Cloud Functions

OpenFaas or Fn

The Meadowloark application is written in Typescript using the Serverless package, making it theoretically easy to reuse these components with any platform's serverless functions.

Could consider refactoring to OpenFaas or Fn for one system that is cloud-agnostic (runs in Kubernetes and Docker, respectively).

Key-value data  store and Change Data Capture

DynamoDB

with

DynamoDB Change Data Capture

CosmosDB in Cassandra API mode

with

CosmosDB Change Feed with Azure Functions

Firestore

(error) see note below about change streams

Apache Cassandra

with

Cassandra Triggers

The differences may be great enough that some tweaking of the storage model may be required.

Switching to MongoDB may be a useful alternative, as it is available on all platforms:

Another option would be to switch to Cassandra for a single database platform available on all providers

Search engineAmazon OpenSearch

Elastic on Azure

Elastic on Google Cloud Platform

Either ElasticSearch or OpenSearch can run on-premises


Google Firestore might not have a direct equivalent of Change Data Capture... at least, the searching for this does not turn up functionality that is clearly the same as with the other products. However, perhaps one of these techniques is capable of writing out to a stream: Extend... with Cloud Functions or onSnapshot.


Install Information

To test out Meadowlark on your own:

  1. Make sure that you have an AWS subscription and a user account with permissions to create resources.
  2. Must have Node.js 16 installed locally to manage the deployment.
  3. Clone the source code repository using Git.
  4. Follow the install instructions.