Skip to main content

Services

Rippler is built as a microservice architecture, with each service handling a specific responsibility in the impact analysis pipeline. This section provides detailed documentation for each service.

Service Architecture Diagrams

Each service has a detailed architecture diagram showing its internal structure, data flow, and integration points. These diagrams are available in draw.io format and can be viewed and edited using:

Available Diagrams

ServiceDiagramDescription
API Gatewayapi-gateway.drawioRequest routing, Eureka service discovery, load balancing
Auth Serviceauth-service.drawioRBAC, permission management, Redis caching, Keycloak integration
Audit Serviceaudit-service.drawioEvent logging, immutable audit trail, query engine
Dependency Graphdependency-graph.drawioGraph builder, impact analyzer, JGraphT integration
Launchpadlaunchpad.drawioWebhook handling, PR orchestration, GitHub integration
LLM Servicellm-service.drawioMulti-provider LLM, fallback mechanism, prompt engineering
Logger Servicerippler-logger-service.drawioCentralized logging, log ingestion, Spring logger integration
Rippler UIrippler-ui.drawioNext.js frontend, React components, state management
Architecture Diagram Guide

All service architecture diagrams are located in /docs/architecture/services/. Each service documentation page includes the diagram with viewing instructions. See the Architecture Services README for more details on working with these diagrams.

Service Architecture

The Rippler system consists of the following services:

Core Services

Authentication & Authorization

  • Auth Service - Role-Based Access Control (RBAC) and permission management
  • Audit Service - Centralized audit logging for authentication and authorization events

Monitoring & Logging

  • Logger Service - Centralized logging framework with Spring logger integration

UI Services

  • Rippler UI - Flutter-based web and desktop interface

Service Communication

graph LR
GH[GitHub] --> WH[Webhook Handler]
WH --> IA[Impact Analyzer]
IA --> DG[Dependency Graph]
IA --> LLM[LLM Service]
IA --> NS[Notification Service]
UI[Rippler UI] --> AG[API Gateway]
AG --> IA
AG --> DG

Common Patterns

All services follow these common patterns:

Health Checks

Each service exposes a health endpoint:

GET /health or /actuator/health

API Versioning

All REST APIs use versioning:

/api/v1/...

Service Discovery

Services register with Eureka for dynamic discovery:

  • Service ID
  • Host and port
  • Health check URL
  • Metadata

Configuration

Services use environment variables for configuration:

  • SERVICE_NAME - Service identifier
  • PORT - Service port
  • EUREKA_URL - Service registry URL
  • Service-specific configuration

Development

Running Individual Services

Each service can be run independently for development:

# Using Docker Compose
make dev-api-gateway
make dev-analyzer
make dev-graph

# Or run specific service
docker-compose up <service-name>

Local Development

For local development without Docker:

  1. Navigate to the service directory
  2. Install dependencies
  3. Configure environment variables
  4. Run the service

See individual service documentation for specific instructions.

Service Ports

Default ports for local development:

ServicePortURL
API Gateway18000http://localhost:18000
Embedding Server18001http://localhost:18001
LLM Service18002http://localhost:18002
Impact Analyzer18003http://localhost:18003
Notification Service18004http://localhost:18004
Webhook Handler18005http://localhost:18005
Dependency Graph18006http://localhost:18006
Launchpad18007http://localhost:18007
Auth Service18008http://localhost:18008
Documentation18009http://localhost:18009
Audit Service18011http://localhost:18011
Logger Service18012http://localhost:18012
Keycloak8080http://localhost:8080

Next Steps