Files

4.8 KiB

title, generated_by, generated_at, human_edited, source_entity, source_repo
title generated_by generated_at human_edited source_entity source_repo
Jonathan Demo Test documentor-agent 2026-06-08T16:18:10+00:00 false Component/default/jonathan-demo-test https://gitea.kyndemo.live/validate/jonathan-demo-test

Overview

Jonathan Demo Test is a modernized microservice built with Java Spring Boot, following cloud-native architecture patterns. It serves as a demonstration of platform orchestration capabilities using Humanitec v2. The service is designed for containerized deployment and integrates seamlessly with observability tools like Prometheus and Grafana. Key features include production-ready configurations, health check endpoints, Prometheus metrics exposure, and security scanning integrated into the CI/CD pipeline.

This service plays a critical role in showcasing the modernization of legacy applications into scalable, cloud-native solutions. It leverages the Humanitec Platform Orchestrator for deployment and lifecycle management, ensuring streamlined operations and enhanced developer productivity.

Repository

Field Value
Source Repo Jonathan Demo Test
Branch main
ArgoCD App
Namespace dev

Architecture

Jonathan Demo Test is a microservice designed with the following architecture:

  • Runtime: Java Spring Boot
  • Deployment: Humanitec Platform Orchestrator
  • CI/CD Pipeline: Gitea Actions → Azure Container Registry (ACR) → Humanitec
  • Observability: Prometheus metrics and Grafana dashboards for monitoring and alerting.

The service communicates with external resources defined in score.yaml, including database configurations for H2, MySQL, and PostgreSQL. It supports health check endpoints (/health) and metrics endpoints (/metrics) for operational insights.

Configuration

Configuration Option Description
spring.profiles.active Specifies the active profile (mysql, postgres, or default h2).
jdbc:h2:mem:<uuid> URL for accessing the in-memory H2 database.
MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE Environment variables for MySQL configuration.
POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB Environment variables for PostgreSQL configuration.

Operations

Running Locally

  1. Clone the repository:

    git clone https://gitea.kyndemo.live/validate/jonathan-demo-test
    cd jonathan-demo-test
    
  2. Start the application:

    • Using Maven:
      ./mvnw spring-boot:run
      
    • Using Gradle:
      ./gradlew bootRun
      
  3. Access the application at http://localhost:8080.

Container Deployment

  1. Build the container image:

    ./mvnw spring-boot:build-image
    
  2. Run the container:

    docker run -p 8080:8080 docker.io/library/spring-petclinic:latest
    

Database Setup

  • For MySQL:

    docker run -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 mysql:9.6
    
  • For PostgreSQL:

    docker run -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -e POSTGRES_DB=petclinic -p 5432:5432 postgres:18.3
    

Observability

  • Grafana Dashboard: View Dashboard
  • Prometheus Metrics: Exposed at /metrics.
  • Health Check: Available at /health.

Dependencies

  • resource:default/cjot-aks