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:
- diagrams.net (online editor)
- VS Code Draw.io Extension
- Draw.io Desktop App
Available Diagrams
| Service | Diagram | Description |
|---|---|---|
| API Gateway | api-gateway.drawio | Request routing, Eureka service discovery, load balancing |
| Auth Service | auth-service.drawio | RBAC, permission management, Redis caching, Keycloak integration |
| Audit Service | audit-service.drawio | Event logging, immutable audit trail, query engine |
| Dependency Graph | dependency-graph.drawio | Graph builder, impact analyzer, JGraphT integration |
| Launchpad | launchpad.drawio | Webhook handling, PR orchestration, GitHub integration |
| LLM Service | llm-service.drawio | Multi-provider LLM, fallback mechanism, prompt engineering |
| Logger Service | rippler-logger-service.drawio | Centralized logging, log ingestion, Spring logger integration |
| Rippler UI | rippler-ui.drawio | Next.js frontend, React components, state management |
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
- API Gateway - Unified API routing and service discovery with Eureka
- Webhook Handler - Processes GitHub webhooks and triggers analysis
- Impact Analyzer - Orchestrates the impact analysis workflow
- LLM Service - AI-powered code change analysis and report generation
- Dependency Graph Engine - Builds and queries service dependency graphs
- Notification Service - Handles email and GitHub notifications
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 identifierPORT- Service portEUREKA_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:
- Navigate to the service directory
- Install dependencies
- Configure environment variables
- Run the service
See individual service documentation for specific instructions.
Service Ports
Default ports for local development:
| Service | Port | URL |
|---|---|---|
| API Gateway | 18000 | http://localhost:18000 |
| Embedding Server | 18001 | http://localhost:18001 |
| LLM Service | 18002 | http://localhost:18002 |
| Impact Analyzer | 18003 | http://localhost:18003 |
| Notification Service | 18004 | http://localhost:18004 |
| Webhook Handler | 18005 | http://localhost:18005 |
| Dependency Graph | 18006 | http://localhost:18006 |
| Launchpad | 18007 | http://localhost:18007 |
| Auth Service | 18008 | http://localhost:18008 |
| Documentation | 18009 | http://localhost:18009 |
| Audit Service | 18011 | http://localhost:18011 |
| Logger Service | 18012 | http://localhost:18012 |
| Keycloak | 8080 | http://localhost:8080 |
Next Steps
- Explore individual service documentation in this section
- Learn about service-to-service communication
- Understand the dependency graph
- See API examples