Skip to main content

Infrastructure

Overview

This page will outline the specifications for the infrastructure. It is very important that a strong infrastructure is used to facilitate better scalability, better developer experience and a better user experience. Most infrastructure will remain unaccessibleinaccessible to the general publicpublic. The infrastructure will be split up into different "stacks".

Logging/Metrics

Authentication as a ServiceLogging

KeycloakFor logging, the GELF stack will be used to(Graylog, manageelasticsearch, user authentication and authorization between different microservicesmongodb).

Monitoring as a ServiceMetrics

MonitoringFor everythingmetric capturing the GIT stack will be anotherused key(Grafana, componentInfluxDB, toTelegraf)

success.

Identity/Authentication

For logging, all containers will log to a remote syslog system

OpenLDAP and will publish performance metrics to a database. Aggregate syslog will be read by a program such as Graylog and aggregate statistics will be displayed using Grafana or a custom application. This monitoring stack should be kept separate from the main stack.

Secrets as a Service

Step-CAKeycloak will be used for automaticallyboth rotating certificatesauthentication and keys.authorization. CertsAccounts will be validcreated forin 24 hours maxOpenLDAP and not Keycloak in most cases

Database

Postgres will be renewed at the 15hrdatabase mark.of choice for all infrastructure services and application containers. Redis will also be use for caching

Files

File as a Service

storage

Minio will be used for storing and retrieving files. BothIt users and system accounts will be available to use the service.

Automated Build, Test and Deploy

Automated building, testing and deploying will be done to ensure everything stays up to date. Currently, Jenkins seems to be the best solution for this task. Jenkins will be able to build the docker images, run a suite of tests and then publish the images to be deployed. Ideally, this system should be 100% automatic to help align with development goals such as weekly builds. The Gitea service will also assist with managing codebases

User Management

Users will be managed usingis an OpenLDAPS3 servercomplaint andfile thesystem

application FusionDirectory, due to the fact that other services in the cloud rely on them and there really isn't any problems with using them.

 

Messaging Between Services

Apache Kafka will be used to handle messaging between services.