From 35d9dbb8a53a8d9ba4c6d0b7b3d0187298311700 Mon Sep 17 00:00:00 2001 From: destifo Date: Sun, 28 Apr 2024 14:55:46 +0300 Subject: [PATCH 1/7] wip(docs): add table and artifact upload protocol arch --- .ghjk/lock.json | 22 +------------------- website/docs/concepts/architecture/index.mdx | 15 +++++++++++++ website/docs/concepts/comparisons/index.mdx | 13 ++++++++++++ 3 files changed, 29 insertions(+), 21 deletions(-) diff --git a/.ghjk/lock.json b/.ghjk/lock.json index fe467c386c..e3b1b4cfd4 100644 --- a/.ghjk/lock.json +++ b/.ghjk/lock.json @@ -1,6 +1,6 @@ { "version": "0", - "platform": "x86_64-linux", + "platform": "aarch64-darwin", "moduleEntries": { "ports": { "version": "0", @@ -432,7 +432,6 @@ "a12d1020fe585e5ea75d9a2035bdcbde8dd90044", "4d1916871a40b6ac730709f7721f740df192c84d", "4df902463d60efc5b8e760ea4899f6ab6df0f16e", - "88f6aa5ddb513712623d31a17096ea26286064da", "185be72d02330f9b3dfa3d0791274feb958e119d", "5549508f1f5eddf9cb2465f07cf0c7603dc0c849", "5c041a4209ae50657ea5acacc26683688f2913a9", @@ -847,25 +846,6 @@ }, "packageName": "node-gyp" }, - "88f6aa5ddb513712623d31a17096ea26286064da": { - "version": "v2.4.0", - "port": { - "ty": "denoWorker@v1", - "name": "mold_ghrel", - "platforms": [ - "aarch64-linux", - "x86_64-linux" - ], - "version": "0.1.0", - "deps": [ - { - "name": "tar_aa" - } - ], - "moduleSpecifier": "https://raw.githubusercontent.com/metatypedev/ghjk/423d38e/ports/mold.ts" - }, - "replaceLd": false - }, "185be72d02330f9b3dfa3d0791274feb958e119d": { "version": "3.8.18", "port": { diff --git a/website/docs/concepts/architecture/index.mdx b/website/docs/concepts/architecture/index.mdx index be3397c81c..d2435da2fb 100644 --- a/website/docs/concepts/architecture/index.mdx +++ b/website/docs/concepts/architecture/index.mdx @@ -3,3 +3,18 @@ sidebar_position: 3 --- # Architecture + + +## Metatype's Artifact Tracking Protocol + +While developing and building an application using `Metatype`, different types of artifacts can be used in different parts of the application. An Artifact is an external file that your application uses as a dependency to do some task. For instance, while working with [PythonRuntime](/docs/reference/runtimes/python), we import an external `python` script `artifacts/hasher.py` which has some hashing functionality. The script which we imported will be marked as an `Artifact` and run inside the `PythonRuntime`. There can be numerous artifacts which can be used by different [Runtimes](/docs/reference/runtimes) inside Metatype. + +`Metatype` tracks these artifacts into two modes. +- `Single Replica` mode: which stores the artifacts inside the [Typegate](/docs/reference/typegate) node to which the [Typegraph](/docs/reference/typegraph) was deployed to. The artifacts will be persisited to the local file system of the typegate. +- `Sync` mode: which stores the artifacts in a cloud store. `S3` storage and `Redis` are a dependency in this mode. This will be useful when there are multiple typgate instances are running and they need to synchornize and share artifacts. + +
+ +![](../../../../docs/workflows/artifact_upload_protocol.drawio.svg) + +
diff --git a/website/docs/concepts/comparisons/index.mdx b/website/docs/concepts/comparisons/index.mdx index 226c752cbf..2bd6a04c46 100644 --- a/website/docs/concepts/comparisons/index.mdx +++ b/website/docs/concepts/comparisons/index.mdx @@ -86,3 +86,16 @@ Great tools when it comes at scheduling long-running jobs. However, they are not 1. When you want to implement modular APIs and backends with instantaneous responses 2. When you want to interact with workflow engines and control over the operations they perform, including pooling and retries 3. When you look for a serverless deployment solution and want to focus on your business logic + + +Parameters to compare: Interoperability and Extensibility, Building complex APIs, Performance, Workflow engines + +| Solutions | Interoperability and Extensibility | Building complex APIs | Performance | Workflow engines | +|------------------------------------|------------------------|-------------|------------------|------------------------------------| +| Metatype | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Firebase | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Strapi | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | +| Hasura | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | +| WanderGraph | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | +| NextJs | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Temporal | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | From 7ed7c28f87bb475da0c395727048647e630ef048 Mon Sep 17 00:00:00 2001 From: destifo Date: Tue, 30 Apr 2024 08:59:09 +0300 Subject: [PATCH 2/7] feat(docs): add draft comparison table --- website/docs/concepts/architecture/index.mdx | 2 +- website/docs/concepts/comparisons/index.mdx | 28 +++++++++++++------- website/shared/projects/first-project.mdx | 4 +-- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/website/docs/concepts/architecture/index.mdx b/website/docs/concepts/architecture/index.mdx index d2435da2fb..d6694305c3 100644 --- a/website/docs/concepts/architecture/index.mdx +++ b/website/docs/concepts/architecture/index.mdx @@ -5,7 +5,7 @@ sidebar_position: 3 # Architecture -## Metatype's Artifact Tracking Protocol +## Artifact Tracking Protocol While developing and building an application using `Metatype`, different types of artifacts can be used in different parts of the application. An Artifact is an external file that your application uses as a dependency to do some task. For instance, while working with [PythonRuntime](/docs/reference/runtimes/python), we import an external `python` script `artifacts/hasher.py` which has some hashing functionality. The script which we imported will be marked as an `Artifact` and run inside the `PythonRuntime`. There can be numerous artifacts which can be used by different [Runtimes](/docs/reference/runtimes) inside Metatype. diff --git a/website/docs/concepts/comparisons/index.mdx b/website/docs/concepts/comparisons/index.mdx index 2bd6a04c46..51ace73170 100644 --- a/website/docs/concepts/comparisons/index.mdx +++ b/website/docs/concepts/comparisons/index.mdx @@ -88,14 +88,22 @@ Great tools when it comes at scheduling long-running jobs. However, they are not 3. When you look for a serverless deployment solution and want to focus on your business logic -Parameters to compare: Interoperability and Extensibility, Building complex APIs, Performance, Workflow engines - -| Solutions | Interoperability and Extensibility | Building complex APIs | Performance | Workflow engines | +| | Metatype | Development Platforms | Headless CMS | Low code platform | |------------------------------------|------------------------|-------------|------------------|------------------------------------| -| Metatype | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Firebase | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| Strapi | :heavy_check_mark: | :x: | :heavy_check_mark: | :x: | -| Hasura | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| WanderGraph | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| NextJs | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| Temporal | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Interoperability and Integrability | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Custom Code Support | Moderate | Moderate | :x: | :heavy_check_mark: | +| External Module Integration through Function Calls | :x: | :x: | :x: | :heavy_check_mark: | +| Scalability | High | High | Moderate | High | +| Building Complex APIs | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | +| Workflow Automation | Moderate | Moderate | High | High | +| Collaboration Tools | Moderate | Moderate | High | Moderate | +| Monitoring and Analytics | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Graphical User Interface | Low | High | High | Very High | +| Development Time | Slow | Fast | Fast | Fast | +| Development SDK | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | +| Development Time | Slow | Fast | Fast | Fast | +| Ease of Deployment | Hard | Easy | Easy | Very Easy | +| Versioning | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Open Source | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | + +{/* TODO: Add Legend for the parameters */} diff --git a/website/shared/projects/first-project.mdx b/website/shared/projects/first-project.mdx index 8a3dd231da..0093293271 100644 --- a/website/shared/projects/first-project.mdx +++ b/website/shared/projects/first-project.mdx @@ -8,8 +8,8 @@ import TypeScriptTab from "./tab-first-project-ts.mdx"; Now you are ready to develop for your first app! You can use [meta doctor](#4-verify-your-installation) to check if neccessary components are installed. Let's start by creating a working directory for the project. Open your terminal and run the following commands. ```bash -mkdir metatype-project -cd metatype-project +mkdir first-project +cd first-project ``` Now that you have your workspace and development environment setup, let's start building a simple `CRUD` application. From 88b630f7871a6fd407d07633ed861f5f3cec5110 Mon Sep 17 00:00:00 2001 From: destifo Date: Wed, 1 May 2024 16:10:14 +0300 Subject: [PATCH 3/7] wip(docs): change table params and add legend --- website/docs/concepts/comparisons/index.mdx | 123 ++++++++++++++------ website/shared/install/meta-cli.mdx | 1 - 2 files changed, 86 insertions(+), 38 deletions(-) diff --git a/website/docs/concepts/comparisons/index.mdx b/website/docs/concepts/comparisons/index.mdx index 51ace73170..cb376818af 100644 --- a/website/docs/concepts/comparisons/index.mdx +++ b/website/docs/concepts/comparisons/index.mdx @@ -9,18 +9,21 @@ Metatype foundations takes inspiration from many innovative tools that arose in While this provides a unique and powerful platform, it can be difficult to understand how exactly Metatype compares to other tools. This page provides a high-level overview of these differences. -## App development platforms +## Development platforms - Firebase - Supabase +- Hasura +- PostGraphile These are great platforms to quickly start a new project. However, they hardly scale in terms of architecture evolution, technology freedom, number of developers on the project, and you will eventually have to move out due to increasing costs or iterations slowness. **When to choose Metatype** -1. You want to build modular APIs by composing pre-defined blocks and import the ones you need from existing systems -2. You want to take advantage of developers tooling you are familiar with like version controls or multiple environments -3. You favor interoperability and extensibility over vendor lock-in and follow your future needs with ease +1. You want to build modular APIs by composing pre-defined blocks and import the ones you need from existing systems. +2. You want to take advantage of developers tooling you are familiar with like version controls or multiple environments. +3. You favor interoperability and extensibility over vendor lock-in and follow your future needs with ease. +4. You want to decouple your database from your API and change where the data is stored as the project evolves. ## Headless CMS @@ -35,18 +38,6 @@ Headless Content Management Systems (CMS) are great tools to manage content and 2. You care about end-user performance and want to use the best underlying technology for each use cases 3. You are more than one on the project and want to manage your data models using preferred programming language -## APIs over databases - -- Hasura -- PostGraphile - -These platforms offer great data accessibility, but they are focused on databases and forget about the importance of the business logic glues and the interoperability with other systems. - -**When to choose Metatype** - -1. You want to have more than CRUD operations and get authentication, rate-limiting, and business logic out of the box -2. You want to decouple your database from your API and change where the data is stored as the project evolves -3. You prefer focusing on what you want to achieve rather than how to achieve it (and get stuck Haskell or Postgres internals) ## GraphQL-based backends @@ -61,22 +52,10 @@ These great tools leverage GraphQL to build internal APIs using pre-determined q 2. You want to optimize your API queries on the fly and let the engine resolve your data in the most efficient way 3. You expect a fine-grained permission model and control the data you expose at the level of each model field -## Web frameworks - -- Django -- NestJS +## Low Code Platforms -These frameworks are a great way to build web applications. However, they require a lot of boilerplate code to build APIs and are not designed to be deployed in a serverless environment. They also requires a lot of configuration to get a complete solution. - -**When to choose Metatype** - -1. When you want to build declarative APIs and let the engine handle the underlying implementation -2. When you want to build APIs in multiple languages, with less code and have a consistent experience across them -3. When you expect a lightweight and all-in-one solution with authentication, databases, caching, and more out of the box - -## Workflow engines - -- Temporal +- Retool +- Airtable - Windmill Great tools when it comes at scheduling long-running jobs. However, they are not designed to answer instantaneous API calls and are not optimized for data entities fetching. They are nonetheless the perfect companion to Metatype and some [integrations](/docs/reference/runtimes/temporal) already exists. @@ -88,22 +67,92 @@ Great tools when it comes at scheduling long-running jobs. However, they are not 3. When you look for a serverless deployment solution and want to focus on your business logic + + + | | Metatype | Development Platforms | Headless CMS | Low code platform | |------------------------------------|------------------------|-------------|------------------|------------------------------------| | Interoperability and Integrability | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Custom Code Support | Moderate | Moderate | :x: | :heavy_check_mark: | -| External Module Integration through Function Calls | :x: | :x: | :x: | :heavy_check_mark: | +| External Module Integration through Function Calls | :heavy_check_mark: | :x: | :x: | :x: | | Scalability | High | High | Moderate | High | | Building Complex APIs | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | -| Workflow Automation | Moderate | Moderate | High | High | +| Long Running Workflows | Moderate | Moderate | High | High | | Collaboration Tools | Moderate | Moderate | High | Moderate | | Monitoring and Analytics | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | | Graphical User Interface | Low | High | High | Very High | -| Development Time | Slow | Fast | Fast | Fast | +| Development Time | Very Fast | Fast | Fast | Fast | | Development SDK | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | -| Development Time | Slow | Fast | Fast | Fast | -| Ease of Deployment | Hard | Easy | Easy | Very Easy | +| Deployment Time | Very Fast | Fast | Fast | Fast | +| Ease of Deployment | Easy | Easy | Easy | Very Easy | | Versioning | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | | Open Source | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | -{/* TODO: Add Legend for the parameters */} + +| | Metatype | Development Platforms | Headless CMS | Low code platform | +|------------------------------------|------------------------|-------------|------------------|------------------------------------| +| REST/HTTP | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| GraphQL | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| GRPC | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| GUI for non programmers | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | + + + +### Table Parameters Legend + +#### Solution's Meta +**Open Source** +**Platform's Requirements** +**Architecture Model** + +#### Network comms + +**REST/HTTP** +**GraphQL** +**GRPC** + +#### system interactability +**GUI for non programmers** +**Development SDKs** +**Development Approach** +**CLI** +**Dev tools** +**LSP and extensions** + +#### Security +**Authentication** +**Authorization** +**Access Control** + +#### Database Interaction +**Type System** +**Database Toolkit ORM** + +#### Query Processing +**Query Planning Model** +**Query Computing Model** + +#### System Flexibility +**Custom Code support** + +#### Versioning and CI/CD +**Version Control** +**GitOPs Friendly** + +#### Scalability +{/* how to express scalability using facts */} +**vertical scalability** +**service decomposition** {/* from micro service aspect */} + +#### Deployment +**Deployment Options** + +#### Monitoring, Logging and maintenance +**Monitoring and Tracking** +**Logging** + +#### Safety and Fault tolerance + +#### Basic Benchmarks +**Query Plan Time** +**Query Compute Time** diff --git a/website/shared/install/meta-cli.mdx b/website/shared/install/meta-cli.mdx index ab467168c2..716a7f3d1f 100644 --- a/website/shared/install/meta-cli.mdx +++ b/website/shared/install/meta-cli.mdx @@ -12,7 +12,6 @@ executable and add it to your `PATH` or use the automated method below. ```bash curl -fsSL https://raw.githubusercontent.com/metatypedev/metatype/main/installer.sh | bash ``` - TODO: Add result image/log - Next, you need to install [libwasmedge](https://wasmedge.org/docs/contribute/source/build_from_src/#what-will-be-built), which is a dependency to run `Meta CLI` on your machine. ```bash From c5c90541e626cf276c793b78995feec32b9dae61 Mon Sep 17 00:00:00 2001 From: destifo Date: Thu, 2 May 2024 13:52:13 +0300 Subject: [PATCH 4/7] chore(docs): add low code platforms section --- website/docs/concepts/comparisons/index.mdx | 78 ++++++++++++--------- 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/website/docs/concepts/comparisons/index.mdx b/website/docs/concepts/comparisons/index.mdx index cb376818af..f4152724d9 100644 --- a/website/docs/concepts/comparisons/index.mdx +++ b/website/docs/concepts/comparisons/index.mdx @@ -58,50 +58,58 @@ These great tools leverage GraphQL to build internal APIs using pre-determined q - Airtable - Windmill -Great tools when it comes at scheduling long-running jobs. However, they are not designed to answer instantaneous API calls and are not optimized for data entities fetching. They are nonetheless the perfect companion to Metatype and some [integrations](/docs/reference/runtimes/temporal) already exists. +Low Code platforms are a game changer when it comes to faster development cycle, great collaboration options and the gentle learning curve. However, this comes at the cost of losing degree of flexibility and cusomizability. They are also hard to apply different scalability and come with limited performance optimization. **When to choose Metatype** -1. When you want to implement modular APIs and backends with instantaneous responses -2. When you want to interact with workflow engines and control over the operations they perform, including pooling and retries -3. When you look for a serverless deployment solution and want to focus on your business logic - - +1. When you want more control over your application instances running on the cloud. +2. When you want to build more complex APIs. +3. When you want to have the freedom to make detailed changes to your application to gain that extra peformance. +Feature/Capability Key: +- :white_check_mark: 1st class, with no extra dependencies. +- :white_circle: supported, but with extra 3rd party dependencies +- :large_orange_diamond: supported, but with extra 3rd party dependencies and user code. +- :red_circle: not officially supported or documented. | | Metatype | Development Platforms | Headless CMS | Low code platform | |------------------------------------|------------------------|-------------|------------------|------------------------------------| -| Interoperability and Integrability | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Custom Code Support | Moderate | Moderate | :x: | :heavy_check_mark: | -| External Module Integration through Function Calls | :heavy_check_mark: | :x: | :x: | :x: | -| Scalability | High | High | Moderate | High | -| Building Complex APIs | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | -| Long Running Workflows | Moderate | Moderate | High | High | -| Collaboration Tools | Moderate | Moderate | High | Moderate | -| Monitoring and Analytics | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| Graphical User Interface | Low | High | High | Very High | -| Development Time | Very Fast | Fast | Fast | Fast | -| Development SDK | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | -| Deployment Time | Very Fast | Fast | Fast | Fast | -| Ease of Deployment | Easy | Easy | Easy | Very Easy | -| Versioning | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | -| Open Source | :heavy_check_mark: | :x: | :x: | :heavy_check_mark: | - - -| | Metatype | Development Platforms | Headless CMS | Low code platform | -|------------------------------------|------------------------|-------------|------------------|------------------------------------| -| REST/HTTP | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| GraphQL | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| GRPC | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| GUI for non programmers | Moderate | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | - +| Licensing | [MPL-2.0](https://github.com/metatypedev/metatype/blob/main/dev/LICENSE-MPL-2.0.md) | | | | +| Platform's Requirements | | | | | +| Architecture Model | | | | | +| REST/HTTP | | | | | +| GraphQL | | | | | +| GRPC | | | | | +| GUI for non programmers | | | | | +| Development SDKs | | | | | +| Development Approach | | | | | +| CLI | | | | | +| Dev Tools | | | | | +| LSP and Extensions | | | | | +| Authentication | | | | | +| Authorization | | | | | +| Access Control | | | | | +| Type System | | | | | +| Database Toolkit/ORM | | | | | +| Query Planning Model | | | | | +| Query Computing Model | | | | | +| Custom Code Support | | | | | +| Version Control | | | | | +| GitOPs Friendly | | | | | +| Vertical Scalability | | | | | +| Service Decomposition | | | | | +| Deployment Options | | | | | +| Monitoring and Tracking | | | | | +| Logging | | | | | +| Query Plan Time | | | | | +| Query Compute Time | | | | | ### Table Parameters Legend #### Solution's Meta -**Open Source** +**Licensing** **Platform's Requirements** **Architecture Model** @@ -111,13 +119,13 @@ Great tools when it comes at scheduling long-running jobs. However, they are not **GraphQL** **GRPC** -#### system interactability +#### Ecosystem **GUI for non programmers** **Development SDKs** **Development Approach** **CLI** -**Dev tools** -**LSP and extensions** +**Dev Tools** +**LSP and Extensions** #### Security **Authentication** @@ -126,7 +134,7 @@ Great tools when it comes at scheduling long-running jobs. However, they are not #### Database Interaction **Type System** -**Database Toolkit ORM** +**Database Toolkit/ORM** #### Query Processing **Query Planning Model** From b1f4fdf5736ae4552400eea018ae73102766ec12 Mon Sep 17 00:00:00 2001 From: destifo Date: Sat, 4 May 2024 00:21:28 +0300 Subject: [PATCH 5/7] chore(docs): apply formatting --- website/docs/concepts/comparisons/index.mdx | 140 ++++++++++---------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/website/docs/concepts/comparisons/index.mdx b/website/docs/concepts/comparisons/index.mdx index f4152724d9..1eb463d8cd 100644 --- a/website/docs/concepts/comparisons/index.mdx +++ b/website/docs/concepts/comparisons/index.mdx @@ -39,19 +39,6 @@ Headless Content Management Systems (CMS) are great tools to manage content and 3. You are more than one on the project and want to manage your data models using preferred programming language -## GraphQL-based backends - -- WunderGraph -- Grafbase - -These great tools leverage GraphQL to build internal APIs using pre-determined queries. They are less API consumer oriented and that disables powerful capabilities like querying between multiple instances owned by different users. - -**When to choose Metatype** - -1. You want to build internal and external APIs, and go beyond what can be described in a GraphQL schema -2. You want to optimize your API queries on the fly and let the engine resolve your data in the most efficient way -3. You expect a fine-grained permission model and control the data you expose at the level of each model field - ## Low Code Platforms - Retool @@ -74,34 +61,32 @@ Feature/Capability Key: - :red_circle: not officially supported or documented. | | Metatype | Development Platforms | Headless CMS | Low code platform | -|------------------------------------|------------------------|-------------|------------------|------------------------------------| -| Licensing | [MPL-2.0](https://github.com/metatypedev/metatype/blob/main/dev/LICENSE-MPL-2.0.md) | | | | -| Platform's Requirements | | | | | -| Architecture Model | | | | | -| REST/HTTP | | | | | -| GraphQL | | | | | -| GRPC | | | | | -| GUI for non programmers | | | | | -| Development SDKs | | | | | -| Development Approach | | | | | -| CLI | | | | | -| Dev Tools | | | | | -| LSP and Extensions | | | | | -| Authentication | | | | | -| Authorization | | | | | -| Access Control | | | | | -| Type System | | | | | -| Database Toolkit/ORM | | | | | -| Query Planning Model | | | | | -| Query Computing Model | | | | | -| Custom Code Support | | | | | -| Version Control | | | | | -| GitOPs Friendly | | | | | -| Vertical Scalability | | | | | -| Service Decomposition | | | | | -| Deployment Options | | | | | -| Monitoring and Tracking | | | | | -| Logging | | | | | +|------------------------|----------------------|-------------|----------------|---------------------------| +| Licensing | [Open Source](https://github.com/metatypedev/metatype/blob/main/dev/LICENSE-MPL-2.0.md) | Open Source
Proprietary | Open Source | Proprietary | +| Platform's Requirements | Cloud-based: None
Locally: Deno/NodeJS/Python Runtime
Redis
Docker | Cloud-based: None
Running Locally: Docker DBMS | NodeJS runtime
DBMS | Cloud-based: None | +| Architecture Model | Declarative
Less Code
Serverless | Serverless, API over Database | | Visual drag and drop | +| REST/HTTP | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| GraphQL | :white_check_mark: | :white_circle: | :white_check_mark: | :large_orange_diamond: | +| gRPC | | :large_orange_diamond: | :large_orange_diamond: | :large_orange_diamond: | +| GUI for non programmers | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Development SDKs | :white_check_mark: | :white_check_mark: | :red_circle: | :red_circle: (Most) :white_check_mark: (few) | +| CLI | :white_check_mark: | :white_check_mark: (some) :red_circle: (some) | :white_check_mark: | :red_circle: | +| Dev Tools | :white_check_mark: | :white_check_mark: | :white_check_mark: | :red_circle: | +| LSP and Extensions | :white_check_mark:* | :white_circle: | :white_circle: | :red_circle: | +| Authentication | Basic Auth JWT OAuth | Basic Auth JWT OAuth JWT | email/phone/password JWT OAuth JWT | email/phone/password JWT OAuth JWT | +| Authorization | policy-based access control (PBAC) | policy-based access control (PBAC) role-based access control (RBAC) | role-based access control (RBAC) | Custom Authorization logic from the User | +| Type System | [Custom Types](/docs/reference/types) | JS objects GraphQL Schemas Database Types | JS objects | Custom Types | +| Database Toolkit/ORM | Prisma | PostgreSQL Custom ORMs | Waterline Custom ORMs | N/A | +| Query Planning Model | | proprietary query planner
PostgreSQL's query planner | DBMS's query planner | proprietary query planner | +| Query Computing Model | | distributed computing model
PostgreSQL's query execution model | DBMS's query execution engines | proprietary query computing model | +| Custom Code Support | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Version Control | Git
BitBucket | Git
BitBucket | Git
BitBucket | Git
BitBucket | +| GitOPs Friendly | :white_check_mark: | :white_check_mark: | :white_circle: | :white_circle: | +| Vertical Scalability | Flexibile | Limited | Flexibile | Limited | +| Service Decomposition | :white_check_mark: | :white_check_mark: | :white_check_mark: | :red_circle: | +| Deployment Options | On premise
cloud-based platforms | On premise
cloud-based platforms | On premise
cloud-based platforms | On premise
cloud-based platforms | +| Monitoring and Tracking | :white_check_mark:* | :white_check_mark: | :white_check_mark: | :large_orange_diamond: | +| Logging | :white_check_mark:* | :white_check_mark: | :white_check_mark: | :large_orange_diamond: | | Query Plan Time | | | | | | Query Compute Time | | | | | @@ -109,58 +94,73 @@ Feature/Capability Key: ### Table Parameters Legend #### Solution's Meta -**Licensing** -**Platform's Requirements** -**Architecture Model** +**Licensing**: The type of licensing model the software solution adopts, such as open-source, proprietary, freemium, etc. + +**Platform's Requirements**: The prerequisites and dependencies required for the software to run efficiently, including hardware, operating system, runtime environment, etc. + +**Architecture Model**: The underlying design principles and patterns governing the structure of the software solution. #### Network comms -**REST/HTTP** -**GraphQL** -**GRPC** +**REST/HTTP**: Support for Representational State Transfer (REST) or Hypertext Transfer Protocol (HTTP) communication protocol used for network communication. + +**GraphQL**: Support for GraphQL. + +**gRPC**: Support for gRPC. #### Ecosystem -**GUI for non programmers** -**Development SDKs** -**Development Approach** -**CLI** -**Dev Tools** -**LSP and Extensions** +**GUI for non programmers**: Graphical User Interface (GUI) tools designed to facilitate interaction with the software by individuals with limited programming knowledge or expertise. {/* some have and some don't from the mentioned examples */} + +**Development SDKs**: Software Development Kits (SDKs) provided by the solution to aid developers in building applications using the platform. + +**CLI**: Command-Line Interface tools provided for developers or administrators to interact with the software from the terminal or command prompt. + +**Dev Tools**: Tools and utilities provided to aid developers in coding, debugging, testing, and profiling applications. + +**LSP and Extensions**: Language Server Protocol (LSP) and Extensions support for enhanced development experience, including features like syntax highlighting, auto-completion, and error checking. #### Security -**Authentication** -**Authorization** -**Access Control** +**Authentication**: Mechanisms for verifying the identity of users or entities accessing the software solution. + +**Authorization**: The process of determining whether an authenticated user or system entity is allowed to perform a specific action or access a particular resource. #### Database Interaction -**Type System** -**Database Toolkit/ORM** +**Type System**: The system governing the data types and structures used by which the application entities and models are constructed. + +**Database Toolkit/ORM**: Tools or Object-Relational Mapping (ORM) frameworks used internally. #### Query Processing -**Query Planning Model** -**Query Computing Model** +**Query Planning Model**: The approach used for optimizing and planning the execution of incoming requests to improve performance and efficiency. + +**Query Computing Model**: The model used for executing network queries and processing data. #### System Flexibility -**Custom Code support** +**Custom Code support**: The ability of the software solution to accommodate custom code or extensions developed by users or third-party developers. + +**Customizability**: #### Versioning and CI/CD -**Version Control** -**GitOPs Friendly** +**Version Control**: The support for versioning and revision control of software artifacts, typically using systems like Git, SVN, etc. + +**GitOPs Friendly**: Compatibility or support for the GitOps methodology, where infrastructure and application deployments are managed through Git workflows. #### Scalability {/* how to express scalability using facts */} -**vertical scalability** -**service decomposition** {/* from micro service aspect */} +**Vertical Scalability**: The ability of the software solution to handle increased workload or demand by adding more resources to a single node or instance. + +**Service Decomposition**: The architectural principle of breaking down the software into smaller, independent services (microservices) to improve scalability, maintainability, and flexibility. #### Deployment -**Deployment Options** +**Deployment Options**: The available methods and strategies for deploying the software solution, including on-premises, cloud-based, containerized, etc. #### Monitoring, Logging and maintenance -**Monitoring and Tracking** -**Logging** +**Monitoring and Tracking**: Tools and mechanisms provided for monitoring the health, performance, and usage of the software solution, as well as tracking user activities and behaviors. + +**Logging**: Facilities for recording and storing system events, errors, and other relevant information for troubleshooting, analysis, and auditing purposes. #### Safety and Fault tolerance #### Basic Benchmarks -**Query Plan Time** -**Query Compute Time** +**Query Plan Time**: The time taken by the system to plan and optimize the execution of a request. + +**Query Compute Time**: The time taken by the system to process and compute the results of a request. From 98390253abbd2d797f5669fadac44e7e0861a9f3 Mon Sep 17 00:00:00 2001 From: destifo Date: Wed, 8 May 2024 17:27:35 +0300 Subject: [PATCH 6/7] docs(website): polish comparison table --- website/docs/concepts/comparisons/index.mdx | 45 ++++++++++----------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/website/docs/concepts/comparisons/index.mdx b/website/docs/concepts/comparisons/index.mdx index 1eb463d8cd..1f3d1bd579 100644 --- a/website/docs/concepts/comparisons/index.mdx +++ b/website/docs/concepts/comparisons/index.mdx @@ -54,6 +54,7 @@ Low Code platforms are a game changer when it comes to faster development cycle, 3. When you want to have the freedom to make detailed changes to your application to gain that extra peformance. +
Feature/Capability Key: - :white_check_mark: 1st class, with no extra dependencies. - :white_circle: supported, but with extra 3rd party dependencies @@ -63,32 +64,29 @@ Feature/Capability Key: | | Metatype | Development Platforms | Headless CMS | Low code platform | |------------------------|----------------------|-------------|----------------|---------------------------| | Licensing | [Open Source](https://github.com/metatypedev/metatype/blob/main/dev/LICENSE-MPL-2.0.md) | Open Source
Proprietary | Open Source | Proprietary | -| Platform's Requirements | Cloud-based: None
Locally: Deno/NodeJS/Python Runtime
Redis
Docker | Cloud-based: None
Running Locally: Docker DBMS | NodeJS runtime
DBMS | Cloud-based: None | -| Architecture Model | Declarative
Less Code
Serverless | Serverless, API over Database | | Visual drag and drop | +| Platform's Requirements | - Cloud-based: None
- Locally: Deno/NodeJS/Python Runtime, Redis, Docker | - Cloud-based: None
- Running Locally: Docker, DBMS | - NodeJS runtime
- DBMS | Cloud-based: None | +| Architecture Model | - Declarative
- Less Code
- Serverless | - API over Database
- Serverless | - Headless Architecture
- Serverless | - Visual drag and drop
- Serverless | | REST/HTTP | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | GraphQL | :white_check_mark: | :white_circle: | :white_check_mark: | :large_orange_diamond: | -| gRPC | | :large_orange_diamond: | :large_orange_diamond: | :large_orange_diamond: | +| gRPC | :large_orange_diamond:* | :large_orange_diamond: | :large_orange_diamond: | :large_orange_diamond: | | GUI for non programmers | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Development SDKs | :white_check_mark: | :white_check_mark: | :red_circle: | :red_circle: (Most) :white_check_mark: (few) | -| CLI | :white_check_mark: | :white_check_mark: (some) :red_circle: (some) | :white_check_mark: | :red_circle: | +| Development SDKs | :white_check_mark: | :white_check_mark: | :red_circle: | :red_circle: (Most)
:white_check_mark: (few) | +| CLI | :white_check_mark: | :white_check_mark: (some)
:red_circle: (some) | :white_check_mark: | :red_circle: | | Dev Tools | :white_check_mark: | :white_check_mark: | :white_check_mark: | :red_circle: | | LSP and Extensions | :white_check_mark:* | :white_circle: | :white_circle: | :red_circle: | -| Authentication | Basic Auth JWT OAuth | Basic Auth JWT OAuth JWT | email/phone/password JWT OAuth JWT | email/phone/password JWT OAuth JWT | -| Authorization | policy-based access control (PBAC) | policy-based access control (PBAC) role-based access control (RBAC) | role-based access control (RBAC) | Custom Authorization logic from the User | -| Type System | [Custom Types](/docs/reference/types) | JS objects GraphQL Schemas Database Types | JS objects | Custom Types | -| Database Toolkit/ORM | Prisma | PostgreSQL Custom ORMs | Waterline Custom ORMs | N/A | -| Query Planning Model | | proprietary query planner
PostgreSQL's query planner | DBMS's query planner | proprietary query planner | -| Query Computing Model | | distributed computing model
PostgreSQL's query execution model | DBMS's query execution engines | proprietary query computing model | +| Authentication | - Basic Auth
- JWT
- OAuth | - Basic Auth
- JWT
- OAuth
- JWT | - email/phone/password
- JWT - OAuth | - email/phone/password
- JWT
- OAuth
- JWT | +| Authorization | - policy-based access control (PBAC) | - policy-based access control (PBAC)
- role-based access control (RBAC) | - role-based access control (RBAC) | - Custom Authorization logic from the User | +| Type System | [Custom Types](/docs/reference/types) | - JS objects
- GraphQL Schemas
- Database Types | JS objects | Custom Types | | Custom Code Support | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | -| Version Control | Git
BitBucket | Git
BitBucket | Git
BitBucket | Git
BitBucket | +| Version Control Friendly | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | GitOPs Friendly | :white_check_mark: | :white_check_mark: | :white_circle: | :white_circle: | | Vertical Scalability | Flexibile | Limited | Flexibile | Limited | | Service Decomposition | :white_check_mark: | :white_check_mark: | :white_check_mark: | :red_circle: | -| Deployment Options | On premise
cloud-based platforms | On premise
cloud-based platforms | On premise
cloud-based platforms | On premise
cloud-based platforms | +| Deployment Options | - On premise
- Cloud-based platforms | - On premise
- Cloud-based platforms | - On premise
- Cloud-based platforms | - On premise
- Cloud-based platforms | | Monitoring and Tracking | :white_check_mark:* | :white_check_mark: | :white_check_mark: | :large_orange_diamond: | | Logging | :white_check_mark:* | :white_check_mark: | :white_check_mark: | :large_orange_diamond: | -| Query Plan Time | | | | | -| Query Compute Time | | | | | +{/* | Query Plan Time | | | | | +| Query Compute Time | | | | | */} ### Table Parameters Legend @@ -98,7 +96,7 @@ Feature/Capability Key: **Platform's Requirements**: The prerequisites and dependencies required for the software to run efficiently, including hardware, operating system, runtime environment, etc. -**Architecture Model**: The underlying design principles and patterns governing the structure of the software solution. +**Architecture Model**: The underlying design principles and patterns governing the behavior/structure of the software solution. #### Network comms @@ -127,17 +125,17 @@ Feature/Capability Key: #### Database Interaction **Type System**: The system governing the data types and structures used by which the application entities and models are constructed. -**Database Toolkit/ORM**: Tools or Object-Relational Mapping (ORM) frameworks used internally. +{/* **Database Toolkit/ORM**: Tools or Object-Relational Mapping (ORM) frameworks used internally. */} -#### Query Processing +{/* #### Query Processing **Query Planning Model**: The approach used for optimizing and planning the execution of incoming requests to improve performance and efficiency. -**Query Computing Model**: The model used for executing network queries and processing data. +**Query Computing Model**: The model used for executing network queries and processing data. */} #### System Flexibility **Custom Code support**: The ability of the software solution to accommodate custom code or extensions developed by users or third-party developers. -**Customizability**: +{/* **Customizability**: */} #### Versioning and CI/CD **Version Control**: The support for versioning and revision control of software artifacts, typically using systems like Git, SVN, etc. @@ -158,9 +156,10 @@ Feature/Capability Key: **Logging**: Facilities for recording and storing system events, errors, and other relevant information for troubleshooting, analysis, and auditing purposes. -#### Safety and Fault tolerance -#### Basic Benchmarks +{/* #### Safety and Fault tolerance (TODO) */} + +{/* #### Basic Benchmarks (TODO) **Query Plan Time**: The time taken by the system to plan and optimize the execution of a request. -**Query Compute Time**: The time taken by the system to process and compute the results of a request. +**Query Compute Time**: The time taken by the system to process and compute the results of a request. */} From 0ae257f8b515124b3e01346231dd9960d92b4404 Mon Sep 17 00:00:00 2001 From: destifo Date: Thu, 9 May 2024 02:53:08 +0300 Subject: [PATCH 7/7] chore(docs): address comments --- website/docs/concepts/architecture/index.mdx | 2 +- website/docs/concepts/comparisons/index.mdx | 121 ++++++++++++++++++- 2 files changed, 117 insertions(+), 6 deletions(-) diff --git a/website/docs/concepts/architecture/index.mdx b/website/docs/concepts/architecture/index.mdx index d6694305c3..9539e07e9d 100644 --- a/website/docs/concepts/architecture/index.mdx +++ b/website/docs/concepts/architecture/index.mdx @@ -11,7 +11,7 @@ While developing and building an application using `Metatype`, different types o `Metatype` tracks these artifacts into two modes. - `Single Replica` mode: which stores the artifacts inside the [Typegate](/docs/reference/typegate) node to which the [Typegraph](/docs/reference/typegraph) was deployed to. The artifacts will be persisited to the local file system of the typegate. -- `Sync` mode: which stores the artifacts in a cloud store. `S3` storage and `Redis` are a dependency in this mode. This will be useful when there are multiple typgate instances are running and they need to synchornize and share artifacts. +- `Sync` mode: which stores the artifacts in a cloud store. `S3` storage and `Redis` are a dependency in this mode. This will be useful when there are multiple typegate instances are running and they need to synchronize, and share artifacts.
diff --git a/website/docs/concepts/comparisons/index.mdx b/website/docs/concepts/comparisons/index.mdx index d246236c15..97d8c3d714 100644 --- a/website/docs/concepts/comparisons/index.mdx +++ b/website/docs/concepts/comparisons/index.mdx @@ -21,8 +21,8 @@ These are great platforms to quickly start a new project. However, they hardly s **When to choose Metatype** 1. You want to build modular APIs by composing pre-defined blocks and import the ones you need from existing systems. -2. You want to take advantage of developers tooling you are familiar with like version controls or multiple environments. -3. You favor interoperability and extensibility over vendor lock-in and follow your future needs with ease. +2. You want to take advantage of developers tooling you are familiar with, like version controls or multiple environments. +3. You favor interoperability and extensibility over vendor lock-in, and follow your future needs with ease. 4. You want to decouple your database from your API and change where the data is stored as the project evolves. ## Headless CMS @@ -49,6 +49,117 @@ Low Code platforms are a game changer when it comes to faster development cycle, **When to choose Metatype** -1. When you want to implement modular APIs and backends with instantaneous responses -2. When you want to interact with workflow engines and control over the operations they perform, including pooling and retries -3. When you look for a serverless deployment solution and want to focus on your business logic +1. When you want more control over your application instances running on the cloud. +2. When you want to build more complex APIs. +3. When you want to have the freedom to make detailed changes to your application to gain that extra peformance. + + +
+Feature/Capability Key: +- :white_check_mark: 1st class, with no extra dependencies. +- :white_circle: supported, but with extra 3rd party dependencies +- :large_orange_diamond: supported, but with extra 3rd party dependencies and user code. +- :red_circle: not officially supported or documented. + +| | Metatype | Development Platforms | Headless CMS | Low code platform | +|------------------------|----------------------|-------------|----------------|---------------------------| +| Licensing | [Open Source](https://github.com/metatypedev/metatype/blob/main/dev/LICENSE-MPL-2.0.md) | Open Source
Proprietary | Open Source | Proprietary | +| Platform's Requirements | - Cloud-based: None
- Locally: Deno/Node.js/Python Runtime, Redis, Docker | - Cloud-based: None
- Running Locally: Docker, DBMS | - NodeJS runtime
- DBMS | Cloud-based: None | +| Architecture Model | - Declarative
- Less Code
- Serverless | - API over Database
- Serverless | - Headless Architecture
- Serverless | - Visual drag and drop
- Serverless | +| REST/HTTP | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| GraphQL | :white_check_mark: | :white_circle: | :white_check_mark: | :large_orange_diamond: | +| gRPC | :large_orange_diamond:* | :large_orange_diamond: | :large_orange_diamond: | :large_orange_diamond: | +| GUI for non programmers | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Development SDKs | :white_check_mark: | :white_check_mark: | :red_circle: | :red_circle: (Most)
:white_check_mark: (few) | +| CLI | :white_check_mark: | :white_check_mark: (some)
:red_circle: (some) | :white_check_mark: | :red_circle: | +| Dev Tools | :white_check_mark: | :white_check_mark: | :white_check_mark: | :red_circle: | +| LSP and Extensions | :white_check_mark:* | :white_circle: | :white_circle: | :red_circle: | +| Authentication | - Basic Auth
- JWT
- OAuth | - Basic Auth
- JWT
- OAuth
- JWT | - email/phone/password
- JWT - OAuth | - email/phone/password
- JWT
- OAuth
- JWT | +| Authorization | - policy-based access control (PBAC) | - policy-based access control (PBAC)
- role-based access control (RBAC) | - role-based access control (RBAC) | - Custom Authorization logic from the User | +| Type System | [Custom Types](/docs/reference/types) | - JS objects
- GraphQL Schemas
- Database Types | JS objects | Custom Types | +| Custom Code Support | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| Version Control Friendly | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | +| GitOPs Friendly | :white_check_mark: | :white_check_mark: | :white_circle: | :white_circle: | +| Vertical Scalability | Flexibile | Limited | Flexibile | Limited | +| Service Decomposition | :white_check_mark: | :white_check_mark: | :white_check_mark: | :red_circle: | +| Deployment Options | - On premise
- Cloud-based platforms | - On premise
- Cloud-based platforms | - On premise
- Cloud-based platforms | - On premise
- Cloud-based platforms | +| Monitoring and Tracking | :white_check_mark:* | :white_check_mark: | :white_check_mark: | :large_orange_diamond: | +| Logging | :white_check_mark:* | :white_check_mark: | :white_check_mark: | :large_orange_diamond: | +{/* | Query Plan Time | | | | | +| Query Compute Time | | | | | */} + + +### Table Parameters Legend + +#### Solution's Meta +**Licensing**: The type of licensing model the software solution adopts, such as open-source, proprietary, freemium, etc. + +**Platform's Requirements**: The prerequisites and dependencies required for the software to run efficiently, including hardware, operating system, runtime environment, etc. + +**Architecture Model**: The underlying design principles and patterns governing the behavior/structure of the software solution. + +#### Network comms + +**REST/HTTP**: Support for Representational State Transfer (REST) or Hypertext Transfer Protocol (HTTP) communication protocol used for network communication. + +**GraphQL**: Support for GraphQL. + +**gRPC**: Support for gRPC. + +#### Ecosystem +**GUI for non programmers**: Graphical User Interface (GUI) tools designed to facilitate interaction with the software by individuals with limited programming knowledge or expertise. {/* some have and some don't from the mentioned examples */} + +**Development SDKs**: Software Development Kits (SDKs) provided by the solution to aid developers in building applications using the platform. + +**CLI**: Command-Line Interface tools provided for developers or administrators to interact with the software from the terminal or command prompt. + +**Dev Tools**: Tools and utilities provided to aid developers in coding, debugging, testing, and profiling applications. + +**LSP and Extensions**: Language Server Protocol (LSP) and Extensions support for enhanced development experience, including features like syntax highlighting, auto-completion, and error checking. + +#### Security +**Authentication**: Mechanisms for verifying the identity of users or entities accessing the software solution. + +**Authorization**: The process of determining whether an authenticated user or system entity is allowed to perform a specific action or access a particular resource. + +#### Database Interaction +**Type System**: The system governing the data types and structures used by which the application entities and models are constructed. + +{/* **Database Toolkit/ORM**: Tools or Object-Relational Mapping (ORM) frameworks used internally. */} + +{/* #### Query Processing +**Query Planning Model**: The approach used for optimizing and planning the execution of incoming requests to improve performance and efficiency. + +**Query Computing Model**: The model used for executing network queries and processing data. */} + +#### System Flexibility +**Custom Code support**: The ability of the software solution to accommodate custom code or extensions developed by users or third-party developers. + +{/* **Customizability**: */} + +#### Versioning and CI/CD +**Version Control**: The support for versioning and revision control of software artifacts, typically using systems like Git, SVN, etc. + +**GitOPs Friendly**: Compatibility or support for the GitOps methodology, where infrastructure and application deployments are managed through Git workflows. + +#### Scalability +{/* how to express scalability using facts */} +**Vertical Scalability**: The ability of the software solution to handle increased workload or demand by adding more resources to a single node or instance. + +**Service Decomposition**: The architectural principle of breaking down the software into smaller, independent services (microservices) to improve scalability, maintainability, and flexibility. + +#### Deployment +**Deployment Options**: The available methods and strategies for deploying the software solution, including on-premises, cloud-based, containerized, etc. + +#### Monitoring, Logging and maintenance +**Monitoring and Tracking**: Tools and mechanisms provided for monitoring the health, performance, and usage of the software solution, as well as tracking user activities and behaviors. + +**Logging**: Facilities for recording and storing system events, errors, and other relevant information for troubleshooting, analysis, and auditing purposes. + + +{/* #### Safety and Fault tolerance (TODO) */} + +{/* #### Basic Benchmarks (TODO) +**Query Plan Time**: The time taken by the system to plan and optimize the execution of a request. + +**Query Compute Time**: The time taken by the system to process and compute the results of a request. */}