https://github.com/folio-org/platform-lsp
https://github.com/folio-org/platform-lsp
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/folio-org/platform-lsp
- Owner: folio-org
- License: apache-2.0
- Created: 2024-10-29T19:45:13.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-02T04:08:56.000Z (about 1 year ago)
- Last Synced: 2025-04-02T05:19:50.684Z (about 1 year ago)
- Size: 1.27 MB
- Stars: 1
- Watchers: 6
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# platform-lsp
**FOLIO Eureka Platform State Repository** - Central source of truth for FOLIO Library Services Platform configuration and component orchestration.
## Overview
The `platform-lsp` repository maintains the **definitive state** of the FOLIO Eureka platform, serving as the single source of truth for platform composition, component versions, and deployment configuration. This repository enables consistent platform deployments across environments by defining all required components, applications, and their exact versions.
## ๐๏ธ Eureka Platform Architecture
The FOLIO Eureka deployment represents a sophisticated microservices architecture with enhanced features compared to traditional FOLIO deployments:
### Core Components
**Eureka-Specific Components (Stateful/Daemon Sets):**
- **๐ Keycloak**: Authentication and authorization service (Stateful-set)
- **๐ Kong**: API gateway and traffic management (Daemon-set)
- **๐ mgr-applications**: Application registry and management (Replica-set)
- **๐ข mgr-tenants**: Tenant lifecycle management
- **๐ mgr-tenant-entitlements**: Tenant permission management
- **๐ง folio-module-sidecar**: Service discovery and proxy sidecars
**Infrastructure Services:**
- **๐๏ธ PostgreSQL**: Primary data storage with multiple databases (Stateful-set)
- **๐ OpenSearch**: Search and analytics engine (Stateful-set)
- **๐จ Kafka**: Event streaming and messaging platform (Stateful-set)
### Application Layer
The platform orchestrates **31 application repositories**, each containing domain-specific modules:
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ platform-lsp โ
โ (Platform State Definition) โ
โ โ
โ ๐ platform-descriptor.json โ
โ ๐ฆ package.json & yarn.lock โ
โ โ๏ธ stripes.config.js โ
โ ๐ง stripes.modules.js โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
Platform State Coordination
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
โapp-* โ โapp-* โ โapp-* โ
โ(31 apps)โ โ(domain) โ โ(modules)โ
โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโ
```
## ๐ Platform Descriptor Structure
The `platform-descriptor.json` is the **core artifact** defining the complete platform state:
### Platform Metadata
```json
{
"name": "Platform LSP",
"description": "FOLIO Library Services Platform - Eureka Implementation",
"version": "R2-2025-SNAPSHOT.4803"
}
```
### Eureka Components
```json
"eureka-components": [
{"name": "folio-kong", "version": "3.10.0-SNAPSHOT.16"},
{"name": "folio-keycloak", "version": "26.3.0-SNAPSHOT.53"},
{"name": "folio-module-sidecar", "version": "2.0.6"},
{"name": "mgr-applications", "version": "4.0.0-SNAPSHOT.168"},
{"name": "mgr-tenants", "version": "2.0.1"},
{"name": "mgr-tenant-entitlements", "version": "2.0.8"}
]
```
### Application Definitions
```json
"applications": {
"required": [
{"name": "app-platform-minimal", "version": "1.0.0-SNAPSHOT.4803"},
{"name": "app-platform-complete", "version": "1.0.0-SNAPSHOT.4808"}
],
"optional": [
{"name": "app-erm-usage", "version": "1.0.0-SNAPSHOT.4803"},
{"name": "app-acquisitions", "version": "1.0.0-SNAPSHOT.4803"},
{"name": "app-consortia", "version": "1.1.0-SNAPSHOT.4803"}
]
}
```
### Infrastructure Dependencies
```json
"dependencies": {
"postgres": ">=16.0",
"kafka": ">=2.8.0",
"opensearch": ">=1.0.0"
}
```
## ๐ฟ Branch Strategy & Platform States
### Platform State Correlation
Each branch represents a specific **platform state** with different purposes:
| **Branch** | **Platform State** | **Purpose** | **Component Versions** |
|------------|-------------------|-------------|----------------------|
| **`master`** | **Current Stable Release** | Production-ready state | Latest stable release versions |
| **`snapshot`** | **Latest Development** | Active development state | Latest SNAPSHOT versions |
| **`R1-2025`** | **Specific Release** | Tagged release state | Fixed release versions (e.g., 1.2.0) |
| **`R2-2024`** | **Previous Release** | Historical release state | Previous release versions |
### Branch Lifecycle
```
Development Flow:
snapshot โ (development) โ Rx-YYYY (release preparation) โ master (stable)
Version Evolution:
1.0.0-SNAPSHOT.xxx โ 1.0.0 โ 1.1.0-SNAPSHOT.xxx โ 1.1.0
```
### State Transitions
- **Snapshot โ Release**: Component versions change from `SNAPSHOT` to fixed versions
- **Release โ Master**: Stable release state becomes current production baseline
- **Master โ Next Snapshot**: New development cycle begins with incremented SNAPSHOT versions
## ๐ Eureka CI Flow Integration
The platform-lsp repository is central to the **Eureka CI flow** as documented in the [CI flow [release]](https://folio-org.atlassian.net/wiki/spaces/FOLIJET/pages/887488514/CI+flow+release):
### Scan Flow (Automated)
- **Purpose**: Continuously monitor for component updates
- **Trigger**: Scheduled/automated
- **Action**: Updates platform descriptor with latest available versions
- **Output**: Pull requests with version updates
### Pull Request Update Flow
- **Purpose**: Validate platform descriptor changes
- **Trigger**: PR creation/update
- **Action**: Runs validation, builds, and tests
- **Output**: Validated platform state or failure notifications
### Pull Request Merge Flow
- **Purpose**: Finalize platform state updates
- **Trigger**: PR approval and merge
- **Action**: Commits new platform state, creates tags
- **Output**: Updated platform releases and notifications
### Release Preparation Flow
- **Purpose**: Coordinate release across all applications
- **Trigger**: Manual (Kitfox team)
- **Action**: Creates release branches and coordinates application updates
- **Output**: Complete platform release preparation
## ๐ฆ Release Artifacts
When creating platform releases, **tar.gz archives** are generated containing the complete platform state as described in [Artifacts [release]](https://folio-org.atlassian.net/wiki/spaces/FOLIJET/pages/889389109/Artifacts+release):
### Archive Contents
- **`platform-descriptor.json`**: Complete platform definition
- **Application descriptors folder**: All application compositions
- **`package.json` & `yarn.lock`**: Frontend dependency management
- **`stripes.config.js` & `stripes.modules.js`**: Stripes framework configuration
### Release Versioning
```
Platform Release: R2-2025.1
โโโ Eureka Components: Fixed versions (e.g., kong-3.10.0)
โโโ Applications: Fixed versions (e.g., app-platform-minimal-1.0.0)
โโโ Dependencies: Minimum required versions
```
## ๐๏ธ Platform Management
### Component Categories
**Required Applications**: Must be present in all FOLIO installations
- `app-platform-minimal`: Core FOLIO functionality
- `app-platform-complete`: Extended platform features
**Optional Applications**: Installed based on institutional needs
- Domain-specific applications (ERM, Acquisitions, etc.)
- Specialized workflow applications
- Integration applications (Edge services)
**Eureka Components**: Eureka-specific enhancements
- Authentication (Keycloak)
- API Gateway (Kong)
- Application Management (mgr-applications)
- Service Discovery (sidecar)
## ๐ค Contributing
### Making Platform Changes
1. **๐ซ Create Feature Branch**: Use Jira ticket name (`RANCHER-XXXX`)
2. **๐ Impact Assessment**: Consider effects across all platform components
3. **๐ Update Platform Descriptor**: Modify component versions as needed
4. **๐งช Test Changes**: Validate platform composition and dependencies
## ๐ฏ Platform Mission
Platform-lsp enables **FOLIO's Eureka implementation** by:
- **๐๏ธ Centralizing Platform State**: Single source of truth for complete platform composition
- **โก Enabling Eureka Features**: Orchestrates enhanced microservices architecture with sidecars, Kong, and Keycloak
- **๐ Supporting CI/CD**: Integrates with automated scanning, validation, and release processes
- **๐ฆ Ensuring Consistency**: Provides reproducible platform deployments through versioned artifacts
- **๐ก๏ธ Maintaining Security**: Team-based authorization for critical platform operations
---
**Quick Links**:
- [Platform Descriptor](/platform-descriptor.json)
- [Eureka Architecture](https://folio-org.atlassian.net/wiki/spaces/FOLIJET/pages/156368911/Eureka+Namespace+Architecture)
- [CI Flow Documentation](https://folio-org.atlassian.net/wiki/spaces/FOLIJET/pages/887488514/CI+flow+release)
- [Release Artifacts](https://folio-org.atlassian.net/wiki/spaces/FOLIJET/pages/889389109/Artifacts+release)
- [FOLIO Documentation](https://wiki.folio.org)