Skip to content

Commit

Permalink
Added overview section (#3)
Browse files Browse the repository at this point in the history
Added an overview section for NuoDB CP.
  • Loading branch information
sivanov-nuodb authored Sep 5, 2024
1 parent f15ed91 commit 32d95fc
Show file tree
Hide file tree
Showing 12 changed files with 163 additions and 3 deletions.
4 changes: 4 additions & 0 deletions assets/scss/common/_custom.scss
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
// Put your custom SCSS code here

.container-fw {
max-width: 1420px;
}

.section-cards {
.card {
margin: 0;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Offerings"
title: "Manage Configurations"
description: ""
summary: ""
date: 2024-08-14T13:50:47+03:00
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Troubleshooting"
title: "Troubleshoot"
description: ""
summary: ""
date: 2024-08-14T13:50:47+03:00
Expand Down
2 changes: 1 addition & 1 deletion content/docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ seo:

NuoDB Control Plane allows users to provision NuoDB databases on-demand remotely using REST services by exposing various predefined configuration options.

This document describes how to provision NuoDB databases in a multi-tenant model by using the NuoDB Control Plane (CP).
This page describes how to deploy the NuoDB Control Plane into your Kubernetes Cluster.
The NuoDB Control Plane works with [Kubernetes][1] locally or in the cloud.
Follow the steps in this guide regardless of the selected Kubernetes platform provider.

Expand Down
17 changes: 17 additions & 0 deletions content/docs/overview/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: "Overview"
description: ""
summary: ""
date: 2024-08-14T13:50:47+03:00
lastmod: 2024-08-14T13:50:47+03:00
draft: false
weight: 10
toc: true
sidebar:
collapsed: true
seo:
title: "" # custom title (optional)
description: "" # custom description (recommended)
canonical: "" # custom canonical URL (optional)
noindex: false # false (default) or true
---
Binary file added content/docs/overview/cp-arch-layers.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
95 changes: 95 additions & 0 deletions content/docs/overview/nuodb-control-plane.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
title: "NuoDB Control Plane"
description: ""
summary: ""
date: 2024-08-14T13:52:09+03:00
lastmod: 2024-08-14T13:52:09+03:00
draft: false
weight: 15
toc: true
seo:
title: "" # custom title (optional)
description: "" # custom description (recommended)
canonical: "" # custom canonical URL (optional)
noindex: false # false (default) or true
---

The NuoDB Control Plane (CP) empowers customers to leverage NuoDB in a Database as a Service (DBaaS) model.
Operating within a Kubernetes cluster, it manages the provisioning and administration of multiple administrative domains and their databases, all within the same cluster.
NuoDB databases are dynamically created remotely with a variety of predefined configuration options available.

## Run on the Cloud

{{< card-grid >}}
{{< link-card title="Install NuoDB Control Plane" href="../getting-started/installation.md" icon="outline/stack-push" description="Start managing NuoDB databases deployed in Kubernetes" >}}
{{< link-card title="Deploy NuoDB databases" href="../getting-started/create-database.md" icon="outline/rocket" description="Create NuoDB databases on-demand easily" >}}
{{< link-card title="Start Developing" href="../getting-started/connect-database.md" icon="outline/code" description="Connect to your database and start developing with NuoDB" >}}
{{< /card-grid >}}

## Architecture

The NuoDB Control Plane allows the creation of:

- One or more organizations
- Each organization can have one or more projects.
Each project corresponds to a NuoDB
domain with its own set of NuoDB Admin processes (APs).
- Within a project, one or more databases can be deployed.
When a project is created a new or existing organization must be specified.

NuoDB CP is composed of several modules that can be independently deployed as part of a microservices-style architecture.
Each module is responsible for managing specific aspects of domains and databases on behalf of customers.
The following components are available to support DBaaS using this approach:

- A DBaaS REST Service that exposes multi-tenant access to external customers according to access control rules.
- A DBaaS Operator that is responsible for enforcing the desired state for databases and domains.

NuoDB domain and database are modeled as Kubernetes [Custom Resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#custom-resources) (CRs). Their [Custom Resource Definitions](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#customresourcedefinitions) (CRDs) act as contracts between NuoDB Operator and the other components.

{{< picture src="overview.png" alt="NuoDB Control Plane overview" >}}

## Key concepts

The NuoDB Control Plane can be broken down into several communicating layers.

{{< picture src="cp-arch-layers.png" alt="NuoDB Control Plane logical architecture" >}}

### REST Service

DBaaS REST Service facilitates multi-tenant access for external customers in accordance with access control rules.
It exposes a REST API, enabling remote management of NuoDB domains and databases through coarse-grained CRUD operations (Create, Read, Update, and Delete).
The data model used by the DBaaS REST Service to define user access control is outlined below:

- _Organizations_ consist of several users and policies.
- _Projects_ serve as logical groupings of databases and have a service tier associated with them.
- _Users_ are assigned roles that dictate access to projects and databases.

Projects abstract the relevant aspects of domains for DBaaS users and provide isolation between databases.
Databases within the same project will inherit the service tier from the project they belong to, while databases in different projects will be managed in separate domains.

The REST APIs for projects and databases internally manipulate Domain and Database custom resources (CRs), respectively.

### DBaaS Operator

The DBaaS Operator is a [Kubernetes Operator](https://coreos.com/operators/) which deploys NuoDB into the Kubernetes cluster.
The Operator simplifies the process of deploying the NuoDB domain and database into the local Kubernetes cluster by utilizing [NuoDB Helm Charts](https://github.com/nuodb/nuodb-helm-charts) and exposing high-level configuration options to the user.

### NuoDB Helm charts

The NuoDB Control Plane uses the production-ready NuoDB _admin_ and _database_ Helm charts to deploy a domain (NuoDB Admin processes, APs) and a database (Transaction Engines, TEs and Storage Managers, SMs) respectively.

### Kubernetes

Ultimately, the entire NuoDB DBaaS system operates within a Kubernetes cluster, including the NuoDB Control Plane and all APs, TEs, and SMs it deploys.
Configuration information is stored in _ConfigMap_ and _Secret_ resources.

### DBaaS Configuration and Offerings

Internally, the NuoDB Control Plane leverages _Service Tiers_ and _Helm Features_ to streamline database deployment and provide DBaaS end users with a variety of predefined configuration options.
For more information on creating reusable configuration options, refer to the documentation on [Service Tiers]({{< ref "../administration/configure/service-tiers.md" >}}).

### NuoDB

NuoDB is a distributed Relational Database Management System (RDBMS) that operates as a multi-process, distributed architecture across multiple hosts and data centers.
NuoDB is composed of TE and SM database processes, which are managed by APs.
For more information on NuoDB's system architecture, refer to the [NuoDB System Architecture](https://doc.nuodb.com/nuodb/latest/architecture/system-architecture/) documentation.
Binary file added content/docs/overview/overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions layouts/shortcodes/link-card.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{{- $opts := dict
"page" .
"href" .Params.href
"title" .Params.title
"description" .Params.description
"icon" .Params.icon
"target" .Params.target
"class" .Params.class
"rel" .Params.rel
}}

{{- with .Parent }}
{{- partial "inline/link-card.html" $opts }}
{{- else }}
<div class="card-nav d-flex flex-column flex-sm-row">
{{- partial "inline/link-card.html" $opts }}
</div>
{{- end }}

{{- define "partials/inline/link-card.html" }}
<div class="card text-end w-100{{ with .class}} {{ . }}{{ end }}">
<div class="card-body d-flex">
<div class="d-flex flex-column me-auto text-start">
{{- with .icon }}
{{ partial "inline-svg" (dict "src" . "stroke" "#7758bc" "stroke-width" "0.8" "height" "4.5rem" "width" "4.5rem" "class" "svg-inline-custom mb-3 me-3" )}}
{{- end }}
{{- $link := .href -}}
{{ if not (strings.Contains .href "://") }}
{{- $link = ref .page .href -}}
{{- end }}
<h5 class="card-title my-0"><a href="{{ $link }}"{{ with .target }} target="{{ . }}"{{ end }} class="stretched-link text-reset text-decoration-none"{{ with .rel}} rel="{{ . }}"{{ end }}>{{ .title }}</a></h5>
{{ with .description }}<p class="card-text mt-2">{{ . }}</p>{{ end }}
</div>
<div class="d-flex flex-column justify-content-center">
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-right" width="20" height="20" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
<path d="M5 12l14 0"></path>
<path d="M13 18l6 -6"></path>
<path d="M13 6l6 6"></path>
</svg>
</div>
</div>
</div>
{{- end -}}

0 comments on commit 32d95fc

Please sign in to comment.