MATIH Platform is in active MVP development. Documentation reflects current implementation status.
8. Platform Services
Architecture

Infrastructure Service Architecture

The Infrastructure Service manages the lifecycle of tenant infrastructure on the MATIH platform. Running on port 8089, it handles infrastructure provisioning, drift detection, credential management, ingress configuration, service discovery, topology mapping, and Terraform state management. It acts as the bridge between the control plane and the underlying cloud infrastructure.


Service Overview

PropertyValue
Service Nameinfrastructure-service
Port8089
TechnologySpring Boot 3.2, Java 21
DatabasePostgreSQL (JPA/Hibernate)
IaC EngineTerraform (via TerraformExecutor)
Cloud ProvidersAzure (primary), AWS, GCP
ReconciliationKubernetes-style reconciliation loop
AutoscalingHPA and VPA management

Controllers

ControllerBase PathPurpose
InfrastructureController/api/v1/infrastructureTenant infrastructure provisioning and management
CredentialController/api/v1/infrastructure/credentialsPlatform credential management
IngressController/api/v1/infrastructure/ingressIngress and DNS management
ServiceController/api/v1/infrastructure/servicesService deployment and scaling
TopologyController/api/v1/infrastructure/topologyInfrastructure topology and health
ArtifactController/api/v1/infrastructure/artifactsPlatform artifact registry

Key Components

ComponentDescription
TenantInfrastructureServiceOrchestrates tenant infrastructure lifecycle
DriftDetectionServiceDetects configuration drift from desired state
PlatformCredentialServiceManages cloud and service credentials
IngressManagementServiceManages NGINX ingress and DNS zones
TopologyRefreshServiceRefreshes infrastructure topology views
TerraformExecutorExecutes Terraform plans and applies
TerraformStateManagerManages Terraform state backends
InfrastructureReconcilerReconciles actual vs. desired infrastructure state
HorizontalPodAutoscalerManagerManages Kubernetes HPA configs
VerticalPodAutoscalerManagerManages Kubernetes VPA configs

Next Steps