131 lines
4.9 KiB
Markdown
131 lines
4.9 KiB
Markdown
# online-boutique
|
|
|
|
## Overview
|
|
|
|
**online-boutique** is a production-ready Java microservice built using the Kyndryl Platform Engineering Golden Path.
|
|
|
|
!!! info "Service Information"
|
|
- **Description**: Java microservice via Golden Path
|
|
- **Environment**: development
|
|
- **Technology**: Spring Boot 3.2, Java 17
|
|
- **Orchestration**: Humanitec
|
|
- **Observability**: Prometheus + Grafana
|
|
|
|
## Quick Links
|
|
|
|
- [Repository](https://gitea.kyndemo.live/validate/online-boutique)
|
|
- [Humanitec Console](https://app.humanitec.io/orgs/kyn-cjot/apps/online-boutique)
|
|
- [Grafana Dashboard](https://grafana.kyndemo.live/d/spring-boot-dashboard?var-app=online-boutique)
|
|
|
|
## Features
|
|
|
|
✅ **Production-Ready Configuration**
|
|
- Health checks (liveness, readiness, startup)
|
|
- Graceful shutdown
|
|
- Resource limits and requests
|
|
- Security contexts
|
|
|
|
✅ **Observability**
|
|
- Prometheus metrics integration
|
|
- Pre-configured Grafana dashboards
|
|
- Structured logging
|
|
- Request tracing
|
|
|
|
✅ **CI/CD**
|
|
- Automated builds via GitHub Actions
|
|
- Azure Container Registry integration
|
|
- Humanitec deployment automation
|
|
- GitOps fallback with ArgoCD
|
|
|
|
✅ **Developer Experience**
|
|
- Local development support
|
|
- Hot reload with Spring DevTools
|
|
- Comprehensive tests
|
|
- API documentation
|
|
|
|
## Architecture
|
|
|
|
This service follows the golden path architecture:
|
|
|
|
```
|
|
┌─────────────────────────────────────────┐
|
|
│ Developer Experience │
|
|
│ (Backstage Template → Gitea Repo) │
|
|
└─────────────────────────────────────────┘
|
|
│
|
|
│ git push
|
|
▼
|
|
┌─────────────────────────────────────────┐
|
|
│ GitHub Actions CI/CD │
|
|
│ 1. Build with Maven │
|
|
│ 2. Run tests │
|
|
│ 3. Build Docker image │
|
|
│ 4. Push to ACR │
|
|
│ 5. Deploy via Humanitec │
|
|
└─────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────┐
|
|
│ Humanitec Orchestrator │
|
|
│ - Interprets score.yaml │
|
|
│ - Provisions resources │
|
|
│ - Deploys to AKS │
|
|
└─────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────┐
|
|
│ Azure AKS Cluster │
|
|
│ - Pods with app containers │
|
|
│ - Prometheus scraping metrics │
|
|
│ - Service mesh (optional) │
|
|
└─────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌─────────────────────────────────────────┐
|
|
│ Grafana + Prometheus │
|
|
│ - Real-time metrics │
|
|
│ - Dashboards │
|
|
│ - Alerting │
|
|
└─────────────────────────────────────────┘
|
|
```
|
|
|
|
## API Endpoints
|
|
|
|
### Application Endpoints
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/` | GET | Welcome message |
|
|
| `/api/status` | GET | Service health status |
|
|
|
|
### Actuator Endpoints
|
|
|
|
| Endpoint | Method | Description |
|
|
|----------|--------|-------------|
|
|
| `/actuator/health` | GET | Overall health |
|
|
| `/actuator/health/liveness` | GET | Liveness probe |
|
|
| `/actuator/health/readiness` | GET | Readiness probe |
|
|
| `/actuator/metrics` | GET | Available metrics |
|
|
| `/actuator/prometheus` | GET | Prometheus metrics |
|
|
| `/actuator/info` | GET | Application info |
|
|
|
|
## Technology Stack
|
|
|
|
- **Language**: Java 17
|
|
- **Framework**: Spring Boot 3.2.0
|
|
- **Build Tool**: Maven 3.9
|
|
- **Metrics**: Micrometer + Prometheus
|
|
- **Container**: Docker (Alpine-based)
|
|
- **Orchestration**: Humanitec (Score)
|
|
- **CI/CD**: GitHub Actions
|
|
- **Registry**: Azure Container Registry
|
|
- **Kubernetes**: Azure AKS
|
|
- **Monitoring**: Prometheus + Grafana
|
|
|
|
## Next Steps
|
|
|
|
- [Set up local development environment](local-development.md)
|
|
- [Learn about deployment process](deployment.md)
|
|
- [Configure monitoring and alerts](monitoring.md)
|
|
- [Understand the architecture](architecture.md)
|