A scalable, distributed microservice architecture for ingesting, managing, and analyzing enterprise configuration items in a graph database.
The Enterprise Configuration Management System (ECMS) is an advanced platform designed to help enterprises manage their configuration items (CI) across complex infrastructures. It supports ingesting data from various sources (initially CSV files), modeling relationships between configuration items, and storing them in a graph database for powerful querying and visualization.
- Flexible Data Source Definition: Define data sources with custom CI attributes and relationships
- Complex Relationship Mapping: Support for 1:1, 1:M, M:1, and M:M relationships between CIs
- Event-Driven Architecture: Asynchronous processing and real-time notifications
- Extensible Framework: Designed for future integrations with external systems
- Scalable Processing: Batch processing for large datasets with progress tracking
- Graph-Based Storage: Store configuration items in a graph database for powerful queries
ECMS follows a microservice architecture with these core components:
- Data Source Management Service: Define and manage data source configurations
- File Upload Service: Handle secure file uploads and validation
- Data Ingestion Service: Process and transform data into graph entities
- Graph Database Service: Store and manage graph entities and relationships
- Reporting Service: Generate reports and track ingestion status
- Integration Framework: Extensible system for future external integrations
- Define Data Source: Create a data source that defines CI types, attributes, and relationships
- Upload Configuration Data: Upload a CSV file containing CI data
- Monitor Ingestion: Track the progress of the ingestion process
- View Results: Review the ingestion report and explore the graph
- Backend: Go (Golang) for microservices
- Message Queue: Kafka for event-driven architecture
- Graph Database: Neo4j/Neptune for storing configuration items and relationships
- Storage: Object storage (S3-compatible) for file management
- Containerization: Docker and Kubernetes for deployment and scaling
- Go 1.18+
- Docker and Docker Compose
- Kubernetes cluster (for production deployment)
- Neo4j (or compatible graph database)
- Kafka (or compatible message broker)
# Clone the repository
git clone https://github.com/yourusername/enterprise-config-mgmt.git
cd enterprise-config-mgmt
# Start the development environment
docker-compose up -d
# Run the services
go run ./cmd/datasource-service/main.go
go run ./cmd/fileupload-service/main.go
go run ./cmd/ingestion-service/main.go
# ... and so on for other servicesThe system is designed to be deployed as containerized microservices on Kubernetes:
# Build Docker images
docker build -t ecms/datasource-service:latest ./datasource-service
docker build -t ecms/fileupload-service:latest ./fileupload-service
# ... and so on for other services
# Deploy to Kubernetes
kubectl apply -f kubernetes/- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Graph database community for best practices
- Microservice architecture patterns
- Event-driven architecture patterns